【问题标题】:what is the difference beetwen dw and db with dup in assemblydw 和 db 与 dup 在程序集中有什么区别
【发布时间】:2019-02-23 04:18:44
【问题描述】:

我想知道这段代码和汇编语言的这段代码有什么区别:

a db 2 dup (1fh)
b dw 1fh,1fh

而且我认为第二个代码更好,我不知道他们为什么先做数字。

【问题讨论】:

    标签: assembly binary masm


    【解决方案1】:

    第 2 行等价于db 1fh, 0, 1fh, 0,因为 DW 的每个 arg 都是一个字大小的整数。 (而且 x86 是 little-endian)

    第一行相当于db 1fh, 1fh

    要使用 DW 执行此操作,请使用 dw 1f1fh。对于一个非常短的常数,这可能更清楚。对于超过 2 次重复 2 字节的任何内容,使用 dup 语法可能更容易让其他人多次看到它是同一件事,而无需仔细检查是否存在差异。


    如果您使用的汇编程序隐含地将大小与符号相关联,那么使用dwdb 很重要,因此如果您希望将符号声明为byte“变量”,你需要a db 1fh,1fha db 2 dup (1fh)


    dup 视为运算符,其中左侧是计数,右侧是重复的内容。就像 Python 的 'abc' * 3 等价于 "abcabcabc" 或 Perl 的 'abc' x 4,除了操作数的顺序相反。

    了解为什么 MASM 是这样设计的。

    NASM 语法是times 2 db 0x1ftimes 重复整个伪指令,或像times 3 imul eax, ecx 这样的整个指令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2015-07-17
      • 2011-04-11
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多