Assembly DX+;2表示在mov中,啊,9 int 21h?
我知道Assembly DX+;2表示在mov中,啊,9 int 21h?,assembly,dos,x86-16,Assembly,Dos,X86 16,我知道buffer[bx+2]代表“$”,但是offset buffer+2在mov-ah中,9代表什么 他们说, “从地址开始打印DS:DX+2”。从地址ds:dx+2 当使用int 21h(ah=0Ah)从键盘捕获字符串时,该字符串具有下一个结构: 如您所见,前两个字节是控制字节,用户输入的字符从第三个字节(字节2)开始。最后一个字符是chr(13)(回车键) 要使用int 21h(ah=09h)显示捕获的字符串,必须将最后一个chr(13)替换为“$”,然后使DX指向从第三个字节开始的有
buffer[bx+2]
代表“$”,但是offset buffer+2
在mov-ah中,9
代表什么
他们说,
“从地址开始打印DS:DX+2
”。从地址ds:dx+2
当使用int 21h(ah=0Ah)从键盘捕获字符串时,该字符串具有下一个结构: 如您所见,前两个字节是控制字节,用户输入的字符从第三个字节(字节2)开始。最后一个字符是chr(13)(回车键) 要使用int 21h(ah=09h)显示捕获的字符串,必须将最后一个chr(13)替换为“$”,然后使DX指向从第三个字节开始的有效字符:
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
或者这个(两者都是等效的):
用“$”替换chr(13)的方法将在下一幅图中解释:请注意,捕获字符串的长度在第二个字节(字节1)中,我们必须添加此长度以达到最后一个字节chr(13),现在我们可以替换它:
接下来是代码:
mov dx, offset buff
add dx, 2
当使用int 21h(ah=0Ah)从键盘捕获字符串时,该字符串具有下一个结构: 如您所见,前两个字节是控制字节,用户输入的字符从第三个字节(字节2)开始。最后一个字符是chr(13)(回车键) 要使用int 21h(ah=09h)显示捕获的字符串,必须将最后一个chr(13)替换为“$”,然后使DX指向从第三个字节开始的有效字符:
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
或者这个(两者都是等效的):
用“$”替换chr(13)的方法将在下一幅图中解释:请注意,捕获字符串的长度在第二个字节(字节1)中,我们必须添加此长度以达到最后一个字节chr(13),现在我们可以替换它:
接下来是代码:
mov dx, offset buff
add dx, 2
你能告诉我不同的
mov-dx,offset
int21h
和mov-dx,offset+2
int21h
mov-dx,offset
指向缓冲区的开头,mov-dx,offset+2
指向有效字符吗。前两个字节不是有效的字符,因为用户没有输入它们。因此,指向起始报价意味着mov-dx,offset
将指向字节0和mov-dx,offset+2
指向字节2,对吗?它将一直持续到遇到“$”@PeterCordes,我故意这么做是因为我想你。@JoseManuelAbarcaRodríguez哎呀!很抱歉感谢您的提醒,您能告诉我不同的mov-dx,offset
int-21h
和mov-dx,offset+2
int-21h
mov-dx,offset
指向缓冲区的开头,mov-dx,offset+2
指向有效字符。前两个字节不是有效的字符,因为用户没有输入它们。因此,指向起始报价意味着mov-dx,offset
将指向字节0和mov-dx,offset+2
指向字节2,对吗?它将一直持续到遇到“$”@PeterCordes,我故意这么做是因为我想你。@JoseManuelAbarcaRodríguez哎呀!很抱歉谢谢你提到,