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
。
答案 0 :(得分:2)
当使用int 21h从键盘捕获字符串时,ah = 0Ah,该字符串具有下一个结构:
如您所见,前两个字节是控制,用户输入的字符从第三个字节(字节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),现在我们可以替换它: