据我所知,dos函数1等待输入字符并将其放入寄存器AL中。
mov al,1h
int 21h
这对我不起作用。它不等待输入,只是将随机的ascii插入AL。
如果我用AH修改AL,它就可以正常工作。
mov ah,1h
为什么?
答案 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
中发生的任何值。这不太可能结束: - )