DX + 2在mov啊,9 int 21h意味着什么?

时间:2015-06-12 15:46:27

标签: assembly

mov dx, offset buffer
mov ah, 0ah
int 21h
jmp print
buffer db 10,?, 10 dup(' ')
print:
xor bx, bx
mov bl, buffer[1]
mov buffer[bx+2], '$'
mov dx, offset buffer + 2
mov ah, 9
int 21h

我知道buffer[bx+2]代表' $',但offset buffer +2中的mov ah,9代表什么?

他们说,

  

"从地址DS:DX + 2"开始打印。来自地址ds:dx +2

1 个答案:

答案 0 :(得分:2)

当使用int 21h从键盘捕获字符串时,ah = 0Ah,该字符串具有下一个结构:

enter image description here

如您所见,前两个字节是控制,用户输入的字符从第三个字节(字节2)开始。最后一个字符是chr(13)(ENTER键)。

要使用int 21h,ah = 09h显示此捕获的字符串,您必须将最后一个chr(13)替换为'$',然后使DX指向从第三个字节开始的有效字符:

mov dx, offset buff + 2

或这一个(两者都相同):

mov dx, offset buff
add dx, 2

用'$'替换chr(13)的方法在下一个图像中解释:注意捕获的字符串的长度在第二个字节(字节1)中,我们必须添加此长度以到达最后一个字节chr (13),现在我们可以替换它:

enter image description here