汇编语言---操作数寻址方式 ASM 2009-07-13 19:37:23 阅读16 评论0 字号:大中小 订阅 操作数是指令或程序的主要处理对象.汇编语言指令的操作数的个数可以是0、1、2;即:汇编指令可以没有操作数,可以只有一个操作数,也可以有两个操作数;在 CPU的指令系统中,除了 NOP(空操作指令)、HLT(停机指令)等少数指令之外,大量的指令在执行的过程中都会涉及到操作数;所以,在指令中如何表达操作数或操作数所在位置是正确运用汇编指令的重要因素之一; 在指令中,指定操作数或操作数存放位置的方法称为寻址方式;操作数的各种寻址方式是使用汇编语言进行程序设计的基础; 一、16位地址的寻址方式 CPU中有 7中基本的寻址方式:立即数寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式;其中,直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式,这 5种寻址方式是确定存储单元有效地址的5种不同的计算方法,用它们可以方便地实现对数组元素的访问;由于总线接口单元 BIU能根据需要自动引用段寄存器得到段值,所以这 5种方式也就是确定存放操作数的存储单元的有效地址的方法;有效地址EA就是段内偏移地址,是一个16位的无符号整数,在利用者 5种方法计算有效地址时,所得到的结果也被认为是一个16位的无符号整数; 除了这些基本的寻址方式外,还有固定寻址和 IO端口寻址,等等;另外,在 32位 CPU中,为了扩大对存储单元的寻址能力,增加了一种新的寻址方式---32位地址的寻址方式; 1、立即数寻址方式: 操作数作为指令的一个组成部分而直接写在指令中,这种操作数称为立即数,这种寻址方式称为立即数寻址方式;立即数,可以理解为常数;如:123、"abc"、false、true,等等;这种数跟在操作码后面,与指令一起存放在代码段中; 立即数可以是8位、16位.如果立即数是16位的,那么将按照"高高低低"的顺序原则存放,即:高字节存放在高地址存储单元中,低字节存放在低地址存储单元中;例如: MOV AH,08H ADD AX,1234H MOV ECX,123456H MOV B1,12H MOV W1,3456H ADD D1,32123456H 其中,B1、W1、D1分别是字节、字、双字存储单元;指令中,逗号前面的操作数称为第一操作数,逗号后面的字面数值称为是第二操作数,在这里,这些第二操作数就是立即数(常数).在汇编语言中,规定:立即数不能作为指令中的第一操作数.该规定与高级语言中"赋值语句的左边不...