关于 8086 汇编的 DB 和 DUP 指令

Regarding 8086 assembly's DB and DUP directives

所以我遇到了一个问题,让我质疑我对 DB(定义字节)和 DUP(重复)指令的基本理解。我对它们的理解是:

这是正确的吗?

我在课本上遇到过:

PRINT_SELECT DB 133 (?)
             DB 123 (?)

这只是教科书上的一个错误,还是这两行代码完全是别的意思?


脚注 1:(编者注):asm 中的 NUM = 34 定义了一个 assemble 时间常数,未存储在数据存储器中。在 MASM 语法 assemblers 中,它在某些上下文中的工作方式类似于变量。但是例如 mul NUM 只适用于内存源,而不是立即数,而 imul eax, ecx, NUMshl ax, NUMmov ax, NUM / 2 只适用于立即数,而不是内存源。

PRINT_SELECT DB 133 (?)
             DB 123 (?)

在大多数汇编器中等同于

PRINT_SELECT DB 133 DUP(?)
             DB 123 DUP(?)

您可以使用 8086 仿真器来更好地理解 8086 汇编。
下面显示了将更多地解释指令的示例代码。
使用 DB 123 (?) 后,您基本上会在内存中保留 123 个连续字节(内存位置)并为所有字节分配 NULL 值 (?)。