我正在解决一些间接寻址问题,我不确定如何正确计算字节数。我们得到了这段代码:
.data
v1 db 9,7,5,3,1
v2 dw 0
v3 dw -1
v4 db '$'
mov dx,offset v2
mov ah,9
int 21h
该问题询问在执行这些指令并且答案为4后,将向标准输出设备写入多少字节。
对于这个问题,我这样设置:
offset 0 1 2 3 4 5 6 7 8 9
data 09 07 05 03 01 00 00 FF FF 24
我们将5移动到dx,写入两个字节00 05.然后我们设置dos代码将其写出来,所以我们的输出写出两个字节组成四个?如果我的逻辑错误,请纠正我。
答案 0 :(得分:6)
DOS函数9从DX的偏移量开始写入,直到达到$
。您已将V2的偏移量加载到DX中。你已经将V2和V3定义为每个两个字节(其中没有一个将包含“$”),然后是V4(包含$
)。因此,它写入V2和V3的四个字节,然后停止。
编辑:我应该补充一点与标题问题相反,你所显示的代码中没有一个实际上做任何间接寻址(尽管DOS函数9无疑 使用间接寻址,从地址读取加载到dx
)。