Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly DX+;2表示在mov中,啊,9 int 21h?_Assembly_Dos_X86 16 - Fatal编程技术网

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哎呀!很抱歉谢谢你提到,