繁体   English   中英

在汇编BIOS调用中处理换行符/ CR

[英]Dealing with newline / CR in assembly BIOS calls

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

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

直到有人按下Enter键,此方法才能正常工作-似乎正在处理CR(\\ r),而不是换行(\\ n),因为光标移至当前行的开头,而不是下一行的开头线。

有任何想法吗?

中断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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM