我开始在FASM中从头开始创建一个引导加载程序。我只是做了一个基本的输入。但我不知道该怎么做。
这是我的代码:
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, text_string
call print_string
jmp read ; infinite loop of reading!
text_string db '<HammerOS> : Booted up!', 13, 10, 0
read:
mov ah,0h ;get character from keyboard
int 16h ;and store it in AL
mov ah,0eh ;Display a character in AL
int 10h ;aka, echo it
jmp read
have_read_txt:
mov si, AL
call print_string
print_string:
mov ah, 0Eh
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
times 510-($-$$) db 0
dw 0xAA55它的作用是接受控制台上的输入,但当我按enter键时,我想检查输入的内容,并在此基础上做一些事情。
另外,我希望光标移动到下一行。现在,如果我按enter键,文本将写在同一行上。
发布于 2014-04-24 16:40:33
在获取字符并将其写入屏幕的位置,您还需要将字符存储在某个内存缓冲区中。
当你通过比较AL和'enter‘键的代码来检测到'enter’键时,你需要分析你的缓冲区并做一些事情。% List of ascii codes here;可能有用。
如果你想移动你的光标,看看int10h(你已经在使用了)描述:BIOS interrupt call。
https://stackoverflow.com/questions/23263360
复制相似问题