汇编语言间接寻址

时间:2011-11-01 05:03:40

标签: assembly byte addressing

我正在解决一些间接寻址问题,我不确定如何正确计算字节数。我们得到了这段代码:

.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代码将其写出来,所以我们的输出写出两个字节组成四个?如果我的逻辑错误,请纠正我。

1 个答案:

答案 0 :(得分:6)

DOS函数9从DX的偏移量开始写入,直到达到$。您已将V2的偏移量加载到DX中。你已经将V2和V3定义为每个两个字节(其中没有一个将包含“$”),然后是V4(包含$)。因此,它写入V2和V3的四个字节,然后停止。

编辑:我应该补充一点与标题问题相反,你所显示的代码中没有一个实际上做任何间接寻址(尽管DOS函数9无疑 使用间接寻址,从地址读取加载到dx)。