3

我正在学习组装,我正在尝试使用 BIOS 调用从键盘/打印到键盘进行简单的读取。到目前为止,我有以下内容:

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

这工作正常,直到有人按下回车键 - 似乎正在处理 CR (\r) 而不是换行符 (\n),因为光标移动到当前行的开头,而不是下一行的开头线。

有任何想法吗?

4

1 回答 1

8

中断 0x16,函数 0x00 只为 AL 中的 Enter 键(CR,0x0D)返回一个 ASCII 字符,然后调用中断 0x10,函数 0x0E 将打印这个单个 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 回答