1

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 キーを押すと、テキストが同じ行に上書きされます。

4

1 に答える 1

1

文字を取得して画面に書き込む場所では、文字をメモリバッファーに保存する必要もあります。

AL を 13 または 10 である必要がある 'enter' キー コードと比較して 'enter' キーを検出すると、バッファを分析して何かを行う必要があります。アスキーコードのリストは こちら; 役に立つかもしれません。

カーソルを移動したい場合は、 int 10h (既に使用しています) の説明: BIOS interrupt call を参照してください。

于 2014-04-24T08:40:32.697 に答える