DOS功能1汇编(8086)问题

时间:2017-03-08 17:31:20

标签: assembly intel dos x86-16

据我所知,dos函数1等待输入字符并将其放入寄存器AL中。

mov al,1h
int 21h

这对我不起作用。它不等待输入,只是将随机的ascii插入AL。

如果我用AH修改AL,它就可以正常工作。

mov ah,1h

为什么?

1 个答案:

答案 0 :(得分:0)

根据Ralf Brown's excellent interrupt list,函数在调用时必须位于ah,在这种情况下,al仅用于保存返回值:

DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
    AH = 01h
Return:
    AL = character read

所以你的代码应该是:

mov  ah,01h
int  21h
;; al should now contain the character.

在仅设置int 21后调用al,您基本上使用事先在ah中发生的任何值。这不太可能结束: - )