文档介绍:第3章寻址方式
主讲:×××
Intel CPU的指令
指令与指令系统
指令的格式
指令与指令系统
指令是计算机的操作命令,通过指令去要求计算机完成某种指定的操作。它是CPU本身可以直接完成的操作。如传送、算术运算、串处理等,都是CPU本身可以直接完成的操作,不用借助于一段程序来实现,所以CPU有对应的传送、算术运算、串处理等指令。
CPU的指令种类虽然有限,但它们经过排列组合组成的指令序列却是无限的,每种指令序列理论上即是一种程序。所以运行在有限种类指令CPU上的程序几乎是无限的。
指令的格式
计算机中的指令一般由操作码字段和操作数字段两部分组成,个别的指令没有操作数字段。操作码字段指示计算机所要完成的操作,而操作数字段则指出在指令执行过程中所需要的操作数。操作数字段比较灵活,可以是操作数本身、还可以是得到操作数方法的信息,即寻址方式。
指令的二进制代码格式为:
操作码
[操作数1]
……
[操作数n]
指令的种类
若没有操作数字段,称为无操作数指令;若操作数字段只有一个,称为单操作数指令;若操作数字段有两个,称为双操作数指令;若操作数字段是三个,称为三操作数指令。最常用的是双操作数指令和单操作数指令。
几种指令的书写格式。
。
格式:[标号:] 操作码 dst,src [;注释]
。
格式:[标号:] 操作码 opr [;注释]
opr项即该指令的惟一操作数。其它项与双操作数指令类似。
。
格式:[标号:] 操作码 dst,src,imm[;注释]
。
格式:[标号:] 操作码[;注释]
Intel 8086/8088 CPU的指令一般由操作码字段和操作数字段两部分组成,对于某条指令的操作数字段,如果直接给出全部操作数的具体值,则该条指令的操作结果就永远是单一的,没有变化。所以,Intel 8086/8088 CPU的指令的操作数字段都不直接给出所有操作数的具体值,而只是在操作数字段中给出如何得到这个操作数的信息,如在CPU中某个寄存器中得到这个操作数,或在内存的某个段中,以某种方式求得这个操作数的偏移地址,进而求得该操作数的物理地址,根据该物理地址在内存中取得这个操作数。这些在操作数字段中,表示如何得到该操作数的信息,称为该操作数的寻址方式。
Intel 8086/8088 CPU的寻址方式
以MOV指令和ADD指令为例详细介绍所有寻址方式
立即寻址是指操作数的具体值作为指令的一部分而直接写在指令中,这种操作数称为立即数,立即数紧跟在操作码之后,与操作码一起存放在代码段中。
如果立即数为16位,则立即数的存放规则是高字节存放在高地址,低字节存放在低地址。如助记符表示的指令MOV BL,3AH,对应的二进制机器语言指令为B33AH,其中,B3H是操作码,3AH为立即数;助记符表示的指令MOV AX,1200H,对应的二进制机器语言指令为B80012H,其中,B8H是操作码,而0012H是立即数,存放规则是高字节存放在高地址,低字节存放在低地址。
寄存器寻址方式的操作数直接存放在由指令指明的寄存器中。在汇编指令中直接书写寄存器名,如16位寄存器操作数可以是AX、BX、CX、DX、SI、DI、BP、SP等;8位寄存器操作数可以是AH、AL、BH、BL、CH、CL、DH、DL。此寻址方式由于存取操作数直接从CPU内部寄存器中获得,不需访问存储器,因而指令执行的速度快。