第三节 指令系统
(一)指令和指令系统
指令主要由两个部分组成:
操作码———用来指出计算机应执行何种操作的一个二进制代码。例如:加法、减法、乘法、除法、取数、存数等各种基本操作,它们均有各自相应的操作码。
操作数地址———指出该指令所操作(处理)的对象(称为操作数)所在的存储单元的地址。计算机中操作数可以相当灵活地指定,它可以直接包含在指令中,可以在CPU的某个寄存器中,一般情况是在存储器的某个(些)存储单元中。指定操作数所在位置的方法称为寻址方式。不同的计算机具有各自不同的指令,对某种特定的计算机而言,其所有指令的集合,称为该计算机的指令系统。
(二)指令的特征和功能
一般而言,指令系统应该具备下述特性:
(1)指令的完备性。是指一个指令系统应满足给定的算法,可编出程序并实现之。
(2)指令的有效性。指令系统中所包含的指令必须是有效的,从而可用相当少的指令编出实现某种算法的程序。
(3)指令的简明性。它指一个指令系统能简化指令处理机的操作,又能简化编程。
(4)指令的效率。它指系统中指令的执行时间。
另外,尚要求指令系统应便于记忆和理解,占用内存少,尽量缩短逻辑延迟等。
(三)寻址方式
1.立即寻址
立即寻址又称立即数寻址。操作数紧跟在操作码之后,直接放在指令中,这种操作数称为立即数。立即数规定只能为整数。立即数可以是8位或16位,要求低字节数放在低位地址中,高字节数放在高位地址中。
2.寄存器寻址
操作数在CPU的内部寄存器中,寄存器名由指令指出,这种寻址方式称之为寄存器寻址方式。对8位操作数,寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH中的任意一个,对16位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP或BP之一。
3.直接寻址
直接寻址方式的操作数地址的16位偏移量(又称有效地址EA)直接包含在指令中,它紧跟在操作码之后,存放在代码段区域。如果指令前面无前缀指明在哪一段,则默认操作数存放在数据段寄存器DS中。它的地址为数据段寄存器DS加上这16位地址偏移量。
4.寄存器间接寻址
寄存器间接寻址方式的操作数在存储器中,操作数地址的16位偏移量包含在寄存器BX、BP、SI和DI之一中。如果指令中未具体用前缀指明是哪个段寄存器,则寻址时,对BX、SI、DI寄存器,默认操作数在数据段寄存器DS中,即数据段寄存器DS加上SI、DI、BX中的偏移量为操作数的地址。
5.寄存器相对寻址(或称变址寻址)
采用寄存器间接寻址时,允许在指令中指定一个8位或16位的偏移量,这样,有效地址由一个基址或变址寄存器的内容加上一个偏移量来得到。即
[BX]
[BP]
有效地址EA=[SI] +(8位偏移量或16位偏移量)
[DI]
6.基址加变址寻址
将一个基址寄存器的内容加上一个变址寄存器的内容形成操作数的有效地址,这种寻址称为基址加变址寻址方式。这种寻址方式中,基址寄存器名和变址寄存器名均由指令指出。如无段跨越前缀,对BX寄存器默认的段寄存器为DS。只要用上寄存器BP,则默认的段寄存器为SS。
7.相对的基址加变址寻址
与寄存器相对寻址类拟,基址加变址寻址也允许带一个8位或16位的位移量。因此,操作数的有效地址是一个基础寄存器的内容加上一个变域寄存器的内容,再加一个8位或16位的偏移量。
8.比例变址寻址
比例变址寻址只能在80386到Pentium微处理器中使用。比例变址是指一对寄存器中的第二个用比例因子2、4或8来乘,产生操作数的内存地址。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |