【问题标题】:Assembly Language Byte counting汇编语言字节计数
【发布时间】:2011-12-13 03:03:46
【问题描述】:

我对变量在数据段中的存储方式有些困惑。我们得到了这段代码:

      .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

我是否以正确的方式思考这段代码?

【问题讨论】:

    标签: assembly dos offset


    【解决方案1】:

    您列出了 12 个,而不是 11 个。数一数。美元字符缺少一个字节。除此之外,偏移量似乎还不错。

    另外,函数 9 只打印文本,而不是二进制数。它不会以人类可读的方式打印来自valb 的 4 个字节(1、2、3 和 4)。它将打印多少字节......好吧,它不会打印美元,因为它被用作字符串终止符(请参阅文档,顺便说一句,它就在那里)。因此,它应该只有 8 个(字节 1 到 4 的 4 个奇怪字符以及字符“1”、“2”、“3”和“4”)。

    【讨论】:

    • 谢谢,我也总是忘记数美元符号。
    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多