8086中断21H问题

时间:2013-04-19 17:16:35

标签: assembly x86 dos x86-16

我觉得好像我不理解8086汇编中断21H的功能0AH。我阅读了语法教程,例如:

“缓冲区的第一个字节指定它可以容纳的最大字符数(1到255)。该值必须由用户提供。缓冲区的第二个字节由DOS设置为实际字符数读取,不包括终止RETURN。“

所以我尝试了一个非常基本的代码。

mov dh, 01
mov ah, 0AH
int 21H

我运行此程序,输入单个数值并按Enter键。然而,Debug显示我的寄存器都没有从此操作中更改。我不知道在哪里,如果有的话,我输入的值被存储。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:5)

在调用int 21h

之前,必须将DS:DX设置为指向缓冲区
Buffer on entry:  
+0: db MaxLength

Buffer on exit:  
+0: db MaxLength
+1: db Length of entered text (L)
+2: db 'Entered text of length L'
+(2+L): db 0Dh