指令简单说来就是机器语言的语句。spa
指令由操做码(OP)和地址码(A)两方面构成。blog
地址码的做用:table
指出操做数的地址扩展
给出结果存放的地址硬件
指出下一条指令的地址程序
(以上地址能够是主存地址、寄存器地址、I/O地址)方法
地址码能够是操做数自己、操做数地址或者操做数地址的计算方法。im
每一条指令都包含操做码(每一条指令都必须告诉CPU该指令作什么操做)。总结
OP | A1 | A2 | A3 | A4 |
OP:操做码;A一、A2:第一操做数和第二操做数;A3:存放运算结果的地址;A4:下一条指令的地址。img
执行四地址指令须要访问4次存储器(取指令一次,取操做数两次,存放结果一次)
缺点:占用存储空间
设指令字长为32位,操做码占8位,4个地址字段各占6位,则指令操做数的直接寻址范围为26=64
OP | A1 | A2 | A3 |
去掉A4:
程序计数器PC既能存放当前欲执行指令的地址,又有计数功能,可自动造成下一条指令的地址码。
OP:操做码;A一、A2:第一操做数和第二操做数的地址;A3:存放运算结果的地址;
执行四地址指令须要访问4次存储器(取指令一次,取操做数两次,存放结果一次)
缺点:占用存储空间
设指令字长为32位,操做码占8位,3个地址字段各占8位,则指令操做数的直接寻址范围为28=256
OP | A1 | A2 |
后续指令的地址隐含在程序计数器中
获得的结果覆盖之前的源操做数,而不是存储到新的主存地址中。
OP:操做码;A一、A2:其中一个做为操做数的地址,另外一个既做为操做数的地址,又用于存放本次运算结果的地址。
执行四地址指令须要访问4次存储器(取指令一次,取操做数两次,存放结果一次)
设指令字长为32位,操做码占8位,2个地址字段各占12位,则指令操做数的直接寻址范围为212=4K
注意:若将结果存放到寄存器中,则只须要3次访问存储器(取指令一次,取操做数两次)
OP | A1 |
其中一个操做数隐藏在运算器的ACC中,这样,取其中一个源操做数就能够直接在ACC中进行了,并且金基金须要访问一次存储器去另一个操做数就够了
停机指令、空指令不须要地址码
能够用硬件来换取空间,即便用诸如PC、ACC等硬件来减小指令字中需指明的地址码,可在不改变指令字长的前提下,扩大指令操做数的直接寻址范围。此外,还可使用诸如PC、ACC等硬件缩短指令字长以及减小访存次数。
以上讨论的地址均为主存地址格式,实际上,地址格式也能够是用来表示寄存器的编号(当CPU中含有多个通用寄存器时,对每个寄存器赋予一个编号,即可以指明源操做数和结果存放在哪个寄存器中)。当地址字段表示寄存器时,也可由三地址、二地址、一地址之分,它们的共同点是,在指令执行阶段都没必要访问存储器(只需在取指令是访问一次存储器),直接访问寄存器,使机器运行速度获得提升。
定长操做码指令是指在字的最高位部分分配固定的若干为表示操做码。对于具备n位操做码字段的指令系统,最多可以表示2n条指令。
从王道考研盗了张图: