本文主要是介绍第一章 计算机硬件基础(指令格式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
指令
1、定义
指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
2、指令格式
指令就是机器语言的一个语句,它是一组有意义的二进制代码。通常包括操作码字段和地址码字段。
操作码:用来表示该指令所要完成的操作(如加、减、乘、除等)。其长度取决于指令系统中的指令条数。
地址码:用来描述该指令的操作对象,或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。
OP | A1 | A2(结果) | A3(下址) |
指令含义:A1(OP)A2—>A3 A4=下一条指令将要执行的地址
3、指令--操作码
操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
操作码分类:
(1)定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。
- 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
- 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。
(2)扩展操作码(不定长操作码):部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
- 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
- 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。
设计扩展操作码的注意事项:
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
- 各指令的操作码一定不能重复。
操作分类
(1)数据传送(进行主存与CPU之间的数据传送)
LOAD 作用:把存储器(源)中的数据放到寄存器(目的)中
STORE 作用:把寄存器(源)中的数据放到存储器(目的)中
(2)算术逻辑操作
算数:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算
逻辑:与、或、非、异或、位操作、未测试、位清除、位求反
(3)移位操作
算术移位、逻辑移位、循环移位(带进位和不带进位)
(4)转移操作
无条件转移 JMP
条件转移 JZ:结果为0 JO:结果溢出 JC:结果有进位
调用和返回 CALL和RETURE
陷阱(Trap)与陷阱指令
(5)输入输出操作(进行CPU和I/O设备之间的数据传送)
CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
指令--地址码
地址码的作用:
指出操作码的地址、给出结果存放的地址、下一条指令的地址。(以上地址可以是主存地址、寄存器地址、I/O地址)
地址码可以是操作数本身、操作数地址或者操作数地址的计算方法。
地址码的分类:
(1)四地址指令
OP | A1 | A2 | A3(结果) | A4(下址) |
OP:操作码;
A1,A2:第一操作数和第二操作数;
A3:存放运算结果的地址;
A4:下一条指令的地址
执行四地址指令需要访问4次存储器(取指令一次,取操作数两次,存放结果一次)
缺点:占用存储空间
设指令字长为32位,操作码占8位,4个地址字段各占6位,则指令操作数的直接寻址范围为2^6=64
(2)三地址指令
OP | A1 | A2 | A3(结果) |
OP:操作码;
A1,A2:第一操作数和第二操作数;
A3:存放运算结果的地址;
因为有了“程序计数器”,可以省略下一个指令地址存放空间。3个地址各占8位(32-8 = 24,24/3 =8),指令操作数直接寻址范围为2^8=256,完成一条指令需要访存次数还是4次(取指令,取A1,取A2,结果存回A3)
(3)二地址指令
OP | A1 | A2 |
OP:操作码;
A1、A2:其中一个作为操作数的地址,另一个既作为操作数的地址,又用于存放本次运算结果的地址。
下一条指令的地址存放在程序计数器中。
设指令字长为32位,操作码占8位,2个地址字段各占12位,则指令操作数的直接寻址范围为2^12=4K,完成一条指令需要访存次数4次(取指令,取A1,取A2,结果存放到A1或者A2)
注意:如果将结果存放到寄存器中,则需要访存次数3次。
(4)一地址指令
OP | A1 |
OP:操作数
一地址指令有2种情况,
第一种:OP(A1)—>A1,比如加1、减1、取反、求补等,完成一次指令需要访存3次(取指令,取A1,存A1);
第二种:(ACC)OP(A1)—>ACC,自身与ACC(寄存器)操作,完成一次指令需要访存2次(寄存器不是主存,所以不算访存次数)(取指令,取A1)。
这个时候除了操作码,所有的地址都能用于寻址了,1个地址占24位,指令操作数的直接寻址范围为2^24=16777216。
(5)零地址指令
OP |
指令含义:
1、不需要操作数,如空操作、停机、关中断等指令
2、堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
这篇关于第一章 计算机硬件基础(指令格式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!