所以我遇到了一个问题,让我质疑我对DB
(定义字节)和DUP
(重复)指令的基本理解。我理解它们的方式是:
NUM DB 34
将创建一个名为 NUM 的变量,它将为其赋值34.如C char NUM = 34;
1 NUM DB 34 DUP(?)
会给我一个包含34个项目的数组,每个项目都是未分配的。 NUM DB 3 DUP(4)
会给我一个名为 NUM 的数组,包含3个项目:4,4,4。这是对的吗?
在我遇到的教科书中:
PRINT_SELECT DB 133 (?) DB 123 (?)
这只是教科书中的一个错误,还是这两行代码完全是另一回事?
脚注1 :(编者注):asm中的NUM = 34
定义了未存储在数据存储器中的汇编时常量。在MASM语法汇编程序中,它在某些上下文中与变量的工作方式类似。但是,例如mul NUM
仅适用于内存源,而不是即时内容,而imul eax, ecx, NUM
或shl ax, NUM
或mov ax, NUM / 2
仅适用于即时内存源,而不适用于内存源。