汇编语言字节计数

时间:2011-12-13 03:03:47

标签: assembly dos offset

我对变量如何存储在数据段中有点困惑。我们得到了这段代码:

      .data
vala  dw  1234h
valb  db  1,2,3,4
valc  db  '1234$'
vald  db  '12'

我做了一个像这样的偏移数据表:

offset  00  01  02  03  04  05  06  07  08  09  10  11
data    34  12  01  02  03  04  31  32  33  34  31  32

我认为我没有正确地将它加载到内存中,因为内存中所需的总字节数是13,而我这里只有11。有人可以评论我哪里出错吗?

还有一个问题是询问在这些指令之后写入标准输出设备的字节数:

mov  dx,offset valb    ;valb has 4 bytes
mov  ah,9              ;4 bytes is written to the output
int  21h               ;for a total of 8 bytes

我是否正确地思考这段代码?

1 个答案:

答案 0 :(得分:1)

你列出了12,而不是11.只计算它们。美元字符缺少一个字节。除此之外,抵消似乎很好。

此外,功能9仅打印文本,而不是二进制数。它不会以人类可读的方式从valb打印4个字节(1,2,3和4)。它确切地打印了多少个字节......好吧,它不会打印美元,因为它被用作字符串终止符(参见文档,顺便说一句,它都在那里) 。因此,它应该只有8个(字节1到4的4个奇怪字符和字符" 1"," 2"," 3"和" 4& #34;。)