本文主要是介绍第4章:指令系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一:本章概述
指令(又称为机器指令)
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位,一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
指令格式
一条指令就是机器语言的一个语言,它是一组有意义的二进制代码。
一条指令通常要包括操作码字段和地址字段两部分。
四地址指令。
指令含义:(A1)OP(A2)->A3,A4下一条将要执行指令的地址。
设指令字长为32位,操作码占8位,4个地址码字段各占6位。
设存储字长32位,即4B
A1可直接表示2的6次方=64个不同位置。
一条指令的执行(假设每个地址都是主存地址);
取指令 访存1次(假设指令字长=存储字长)
取两个操作数 :访存2次。
存回结果 访存1次
共访存4次。
三地址指令
程序计数器PC
指令含义:(A1)OP(A2)—>A3
3个地址码字段各占8位,指令操作数直接寻址范围为2的8次方=256;完成一条指令需要访存4次。
二地址指令
指令含义:(A1)OP(A2)—>A1
2个地址码字段各占12位,指令操作数直接寻址范围2的12次方=4k;完成一条指令需要访存4次。
一地址指令
指令含义:1.OP(A1)->A1,如加1,减1,取反,求补等。
指令取出一次
A1取出一次,
A1存储一次,
完成一条指令需要访存3次。
2.(ACC)OP(A1)–>ACC,隐含约定的目的地址为ACC,
完成一条指令的需要访存2次。取指令和取A1,然后直接放在CPU中,不需要访问存储器。
1的地址吗的字段占24位,指令操作数直接寻址范围2的24次方=16M
零指令指令
指令含义:1.不需要操作数,如空操作,停机,关中断等指令。
2.堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶。
以上为定长指令字结构:指令长度固定。
变长指令字机构:指令字长不等。
定长操作码:n位->2的n条指令。
扩展操作码:操作码长度可变。
扩展操作码
指令字长为16位,
指令字长为16位,另有3个4位长的地址字段A1,A2,和A3。
4位基本操作码若全部用于三地址指令,另有16条。但至少需将1111流作扩展操作码之用,即三地址指令15条。
1111 1111留作扩展操作码之用,二地址指令15条。
1111 1111 1111留作扩展操作码之用,一地址指令为15条。
零地址指令为16条。
操作注意事项
在设计扩展操作码指令格式时,必须注意以下两点:
1):不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
2):各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的额指令,分配较长的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。
扩展操作码举例。
设指令字长固定16位,试设计一套指令系统满足:
操作类型
1数据传送。
源 目的
LOAD 作用:把存储器中数据放到寄存器中。
STORE:作用:把寄存器中数据放到存储器中。
数据传送类:进行主存与CPU之间的数据传送。
2算术逻辑操作
算术:
加减乘除,增1,减1,求补,浮点运算,十进制运算。
逻辑:
与,或,非,异或,位操作,位测试,位清除,位求反。
3位移操作
算术移位,逻辑移位,循环移位(带进位和不带进位)
4.转移操作
无条件转移JMP,
条件转移JZ,结果为0;JO:结果溢出;JC;结果有进位。
调用和返回CALL和RETURN
陷阱(Trap)与陷阱指令。
5.输入输出操作。
CPU寄存器与IO端口之间的数据传送(端口即IO接口中寄存器).
输入输出类(I/O):进行CPU与I/O设备之间的数据传送。
二 指令寻址
数据存放
指令寻址
操作数类型
数据寻址
一地址指令
二地址指令
1:立即寻址
假设指令字长=机器字长=存储字长,操作数为3
一地址指令:
立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码,#代表立即寻址特征。
寻址过程:一条指令的执行:
取指令 访存1次
执行指令,访存0次
暂不考虑存结果
共访存1次。
优点:指令执行阶段不访问主存,指令执行时间最短
缺点:A的位数限制了立即数的范围
如A的位数为n,且立即数采用补码时,可表示的数据范围为-2的n-1次方----2的n-1次方-1
2;直接寻址
假设指令字长=机器字长=存储字长,操作数为3
一地址指令。
直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即EA=A。
过程:一条指令的执行:
取指令 访存1次,
执行指令 访存1次
暂不考虑结果
共访存2次。
优点:简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址。
缺点:A的位数决定了该指令操作数的寻址范围。操作数的地址不易修改。
3.间接寻址
假设指令字长=存储字长,操作数为3
一地址指令
间接寻址:指令的地址字段给出形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作地址的地址。即EA=(A)
一条指令的执行:
取指令到CPU 访存1次,
执行指令 访存2次
暂不考虑结果
共访存3次
存储单元前增加1个位,这个位存储为1,说明存储的为地址,存0说明存储有效地址。
优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)
便于编制程序(用间接寻址可以方便完成子程序返回).
缺点:
指令在执行阶段要多次访存(一次间址需要两次访存,多次间址需根据存储字的最高位确定几次访存).
4.寄存器寻址
假设指令字长=机器字长=存储字长,操作数3
一地址指令:
寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA=R1,其操作数在由R1所指的寄存器内。
过程:一条指令的执行;
取指令 访存1次
执行指令 访存0次
暂不考虑结果
共访存1次。
优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算。
确定:
寄存器价格昂贵,计算机中寄存器个数有限。
5,寄存器间接寻址
假设指令字长=存储字长=机器字长,操作数为3
一地址指令;
寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ai)
过程:一条指令的执行;
取指令 访存1次,
执行指令 访存1次。
共访存2次。
特点:与一般间接寻址相比速度更快,但是指令的执行阶段幼访问主存(因为操作数在主存中).
6.隐含寻址
隐含寻址:不是明显地给出操作数的地址,而是在指令隐含着操作数的地址。
优点:有利于缩短指令字长。
缺点:需要增加存储操作数或隐含地址的硬件。
总结
这篇关于第4章:指令系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!