立即数寻址

所需的操作数由指令直接给出,就称为立即数(或直接数)寻址方式。这种方式的特点是:取指令时,操作码和操作数同时被取出,减少了访存次数,提高了指令的执行速度。但是由于这一操作数是指令的一部分,不能修改,所以这种方式只能适用操作数固定的情况,并且操作数的位数有限。通常用于给某一寄存器单元赋初值或者提供一个常数,例如C语言里int a = 1,运用到了立即数寻址。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:

1
2
3
MOV AH, 80H
ADD AX, 1234H
MOV ECX, 123456H

以上指令中的第二操作数都是立即数,在汇编语言中规定:立即数不能作为指令中的第一操作数,该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。
立即数寻址方式通常用于对通用寄存器或内存单元赋初值。图是指令”MOV AX, 4576H”存储形式和执行示意图。将4576H数据送入AX通用寄存器,类似于赋值语句。
立即数寻址

寄存器寻址

计算机的中央处理器一般设置有一定数量的通用寄存器,用来存放操作数,操作数的地址或中间结果。假如指令地址码部分给出某一通用寄存器地址即给出地址码A,而且所需的操作数就在这一寄存器中,则称为寄存器寻址。通用寄存器数量一般在几个到几十个之间,例如x86架构CPU有4个数据寄存器(EAXEBXECXEDX),MIPS架构CPU有32个通用寄存器($0-$31),ARM架构CPU有16个32位的寄存器(r0-r15)。从寄存器中存取数据比从存储器中存取数据快得多,所以这种寻址方式可以缩短指令长度,节省存储空间,提高指令的执行速度。
寄存器寻址

速度的比较

按照离CPU由近到远的顺序依次是CPU寄存器、Cache、内存、硬盘,越靠近CPU的存储器容量越小但访问速度越快,下图给出了各种存储器的容量和访问速度的典型值。
存储器存取数据比较
参考:

http://blog.csdn.net/zlzlei/article/details/7790363
http://blog.csdn.net/huangxb_csu/article/details/5976561
http://blog.csdn.net/gujing001/article/details/8476685
http://www.cnblogs.com/onroad/archive/2009/07/13/1522673.html