Dig*_*tel -2 x86 assembly tasm
我正在使用汇编语言编辑项目,数据段中有一行:
buffer1 db 80, 0, 80 dup(0)
Run Code Online (Sandbox Code Playgroud)
有人可以详细说明吗?
的DB伪指令进行数据分配内存,并与给定的值进行初始化.您可以通过用逗号分隔连续值来指定连续值.所以DB 5将分配一个字节,并将其值设定为5与DB 4, 3将分配2个字节,其值设置为4和3.
X DUP(V)将复制VX次,所以2 DUP(4)就像4, 4.
结合这些,我们得到的DB 80, 0, 80 DUP(0)是DB 80, 0, 0, 0, 0, ...
将分配82个字节,第一个初始化为80,其余为0.
前缀buffer1是缓冲区标签,它允许您从代码中的其他位置引用缓冲区.
这一行与C代码松散相等:
char buffer1[] = {
80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
Run Code Online (Sandbox Code Playgroud)
或者,甚至更简单:
char buffer1[82] = { 80, 0 };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |