beetwen dw和db与dup在组装中有什么区别

时间:2018-09-19 04:47:50

标签: assembly binary masm

我想知道这段代码和这段汇编语言代码之间的区别:

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

我认为第二个代码更好,而且我不知道为什么他们首先要编号。

1 个答案:

答案 0 :(得分:1)

第二行等效于db 1fh, 0, 1fh, 0,因为DW的每个arg是一个字长的整数。 (而x86是little-endian)

第一行等效于db 1fh, 1fh

要使用DW进行此操作,请使用dw 1f1fh。对于非常短的常量,这可能更清楚。对于2个字节以上的2个重复,使用dup语法可能会让其他人更清楚地看到同一遍是同一回事,而不必仔细检查是否存在差异。


如果您使用的是将大小与符号隐式关联的汇编程序,则无论您使用dw还是db都很重要,因此如果要将符号声明为{{1 }}“变量”,则需要bytea db 1fh,1fh


a db 2 dup (1fh)视为运算符,其中左侧是计数,右侧是重复的事物。就像Python的dup等效于'abc' * 3或Perl的"abcabcabc"一样,只是操作数的顺序相反。

IDK为什么MASM是用这种方式设计的。

NASM语法为'abc' x 4times 2 db 0x1f重复一条完整的伪指令,或一条times之类的完整指令。