在程序集中dw和db与dup之间的区别是什么

问题描述 投票:0回答:1

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

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

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

assembly binary masm
1个回答
1
投票

第二行相当于db 1fh, 0, 1fh, 0,因为每个arg到DW都是一个字大小的整数。 (而x86是小端)

第1行相当于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,除了操作数的顺序颠倒。

IDK为什么MASM是这样设计的。

NASM语法是times 2 db 0x1ftimes重复一整个伪指令,或整个指令,如times 3 imul eax, ecx

© www.soinside.com 2019 - 2024. All rights reserved.