1

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

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

4

1 回答 1

6

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

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

于 2011-11-01T05:08:21.240 回答