当前位置: 代码迷 >> 汇编语言 >> 关于伪指令的疑问解决方案
  详细解决方案

关于伪指令的疑问解决方案

热度:1502   发布时间:2013-02-26 00:00:00.0
关于伪指令的疑问
书上有句话“NUM DW 1234H,A122H,B100H”是一条伪指令

按道理说,这是一条将数据存储在存储器中的操作,如何理解它是伪指令?为什么是“伪”呢

另外,是不是所有data segment里的指令都是伪指令??

------解决方案--------------------------------------------------------
硬指令——使CPU产生动作、并在程序执行时才处理的语句
伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等
伪指令与具体的处理器类型无关,但与汇编程序的版本有关

回到你这个来说,NUM DW 1234H,A122H,B100H
这个语句是定义了三个字数据,而num则代表了三个字数据的首地址,汇编程序会在汇编的过程中,遇到num则自动用它的偏移地址代替。
------解决方案--------------------------------------------------------
“是不是在执行过程中,程序的某一条指令将这些数据被写入了内存”
这句理解的不正确吧,整个流程应该是这样的:编译链接器(编译链接汇编代码““NUM DW 1234H,A122H,B100H””)-》生成一个硬盘上的PE文件(数据段中包含了“1234H,A122H,B100H”这些数据)-》用户运行PE文件-》操作系统将硬盘上的PE文件加载到内存。(内存中数据段有了“1234H,A122H,B100H”这些数据)-》操作系统将控制权交给进程的入口函数程序运行。
  相关解决方案