3

私はアセンブリを学習していて、BIOS呼び出しを使用してキーボードからキーボードへの単純な読み取り/印刷を実行しようとしています。これまでのところ、私は次のものを持っています:

loop:
    xor ah, ah
    int 0x16        ; wait for a charater
    mov ah, 0x0e
    int 0x10        ; write character
    jmp loop

これは、誰かがEnterキーを押すまでは正常に機能します。カーソルが次の行の先頭ではなく現在の行の先頭に移動するため、CR(\ r)は処理されているようですが、改行(\ n)は処理されていないようです。ライン。

何か案は?

4

1 に答える 1

8

割り込み0x16、関数0x00は、ALのEnterキー(CR、0x0D)に対して1つのASCII文字のみを返します。割り込み0x10、関数0x0Eの呼び出しは、この1つのASCII文字を出力します。コードでLFも吐き出したい場合は、CRをテストして、LF出力を強制する必要があります。

loop:
    xor ah, ah
    int 0x16        ; wait for a charater
    mov ah, 0x0e
    int 0x10        ; write character
    cmp al, 0x0d    ; compare to CR
    jne not_cr      ; jump if not a CR
    mov al, 0x0a    ; load the LF code into al
    int 0x10        ; output the LF
not_cr:
    jmp loop
于 2009-08-24T21:33:32.043 に答える