0
据我所知,dos函数1等待输入字符并将其放入寄存器AL中。DOS函数1程序集(8086)问题
mov al,1h
int 21h
这对我不起作用。它不会等待输入,只需在AL中插入一个随机ASCII码。
如果我用AH修改AL,它应该可以正常工作。
mov ah,1h
这是为什么?
据我所知,dos函数1等待输入字符并将其放入寄存器AL中。DOS函数1程序集(8086)问题
mov al,1h
int 21h
这对我不起作用。它不会等待输入,只需在AL中插入一个随机ASCII码。
如果我用AH修改AL,它应该可以正常工作。
mov ah,1h
这是为什么?
按照Ralf Brown's excellent interrupt list,该功能有来电时,在这种情况下,al
仅仅用来保存返回值是在ah
:
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.
通过在仅设置al
后调用int 21
,您基本上可以事先使用ah
中发生的任何值。这不太可能结束:-)
这就是'int 21h'服务如何由您的DOS供应商实现的,服务编号预计在'AH'中,而不是'AL'。检查你的DOS服务[文档](http://stanislavs.org/helppc/int_21-1.html),无论你使用什么。如果它说“AL = 1”,那么用一些更正确的替换它。 – Ped7g