sar*_*ona 5 assembly directive x86-16
所以我遇到了一个问题,让我质疑我对DB(define byte) 和DUP(duplicate) 指令的基本理解。我对它们的理解方式是:
NUM DB 34将创建一个名为NUM的变量,并为其分配值 34。类似于 C char NUM = 34;1NUM DB 34 DUP(?)会给我一个包含 34 个项目的数组,每个项目都未分配。 NUM DB 3 DUP(4)会给我一个名为NUM的数组,其中包含 3 个项目:4、4、4。它是否正确?
在我的教科书中我遇到过:
Run Code Online (Sandbox Code Playgroud)PRINT_SELECT DB 133 (?) DB 123 (?)
这只是教科书上的一个错误,还是这两行代码完全有其他含义?
脚注 1:(编者注):NUM = 34在 asm 中定义了一个不存储在数据存储器中的汇编时常量。在 MASM 语法汇编器中,它的工作方式与某些上下文中的变量类似。但例如mul NUM仅适用于内存源,不适用于立即数, whileimul eax, ecx, NUM或 ,shl ax, NUM或mov ax, NUM / 2仅适用于立即数,不适用于内存源。
小智 5
PRINT_SELECT DB 133 (?)
DB 123 (?)
Run Code Online (Sandbox Code Playgroud)
在大多数汇编器中相当于
PRINT_SELECT DB 133 DUP(?)
DB 123 DUP(?)
Run Code Online (Sandbox Code Playgroud)
您可以使用8086模拟器来更好地理解8086汇编。
下面显示了更多解释这些指令的示例代码。
一旦您使用了DB 123 (?),您基本上就在内存中保留了 123 个连续字节(内存位置),并为所有这些字节分配了 NULL 值 (?)。
| 归档时间: |
|
| 查看次数: |
14815 次 |
| 最近记录: |