指令系统:
一:指令格式
1)指令的基本格式
1.操作码
2.操作数的地址
3.操作结果的存储地址
4.下一条指令的地址
一条指令实际上包含两种信息即操作码和地址码。用来表示该指令所要完成的操作;地址码用来描述该指令的操作对象。
按地址码的多少分为:
1、零地址指令:
格式:OPCODE OPCODE - 操作码 指令中只有操作码,而没有地址码。
2、一地址指令:
格式:OPCODE A OPCODE 操作码 A 操作数的存储器地址或寄存器名,指令中只给出一个地址,该地址既是操作数的地址,又是操作结果的存储地址。
3、二地址指令
格式:OPCODE A1 A2 OPCODE 操作码,A1 第一个源操作数的存储地址或寄存器地址。 A2 第二个源操作数和存放操作结果的存储器地址或寄存器地址。
4、三地址指令
格式 OPCODE A1 A2 A3 ; OPCODE 操作码;A1第一个源操作数的存储器地址或寄存器地址。 A2 第二个源操作数的存储地址或寄存器地址。A3 操作结果的存储器地址或寄存器地址。
5.多地址指令:
大中型机甚至高档小型机中,往往设置一些功能很强的,用于处理成批数据指令,如字符串指令,向量、矩阵运算指令等。
2)定长操作码指令格式
操作码的长度决定了指令系统中完成不同操作的指令条数,若操作码长度为K,最多只有(2K次方)条不同指令。
3)扩展操作码指令格式
即操作码的长度可变,且分散的放在指令字的不同字段中,操作码长度不固定将增加指令译码和分析的难度,使控制器的设计复杂化,因此对操作码的编码至关重要。
通常是在指令字中,用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,把他们的操作码扩充到该地址码字段中。
二:指令寻址方式:
寻址方式:确定本条指令的操作数地址及下一条欲执行指令的指令地址。
1)有效地址的概念:操作数的真实地址称为有效地址。记为:EA
2)数据寻址和指令寻址
1.指令寻址:循序: (pc+1)------> pc
跳跃:由转移指令(JMP)指出。
2.数据寻址:操作码 | 寻址特征 | 形式地址A
形式地址:指令字中的地址, 有效地址:操作数的真实地址, 约定: 指令字长 = 存储字长 = 机器字长。
3)常见寻址方式:
1、立即寻址: 形式地址A 就是操作数: OP | # (立即寻址特征) | A(立即数) 可正可负 补码 形式。
特征:指令执行阶段不访问主存或缓存。
A的位数限制了立即数的范围。
2、直接寻址: EA=A 有效地址由形式地址直接给出。
LDA | | A -----> 主存中的操作数
特征: 执行阶段访问一次存储器.
A 的位数决定了该指令操作数的寻址范围。
操作数的地址不易修改(必须修改A)
3、隐含寻址:操作数地址隐含在操作码中
ADD | | A -------》 主存中的操作数。 另一个操作数 隐含在ADC中。
如: 8086
MUL 指令 被乘数 隐含在 AX(16位) 或 AL(8位) 中。
4、间接寻址 EA = (A) 有效地址 由形式地址间接提供。
特征 : 执行指令阶段 2次访存
可扩大寻址范围。
便于编制程序。 多次访存。
5 寄存器寻址: EA= Ri 有效地址即为寄存器编号。
特征: 执行阶段不访存,访问寄存器,执行速度快。
寄存器个数有限,可缩短指令字长。
6寄存器间接寻址: EA = (Ri) 有效地址存在寄存器中。
特征: 有效地址在寄存器中,操作数在存储器中,执行阶段访存。
便于编制循环程序。
7 基址寻址
1) 采用专用寄存器作基址寄存器。
EA = (BR) + A BR 为 基址寄存器。
可扩大寻址范围。
有利于多道程序。
BR 内容由操作系统或管理程序确定
在程序的执行过程中,BR 内容不变,形式地址 A 可变。
2) 采用通用寄存器做基址寄存器。
由用户指定哪个通用寄存器作为基址寄存器。
在程序执行过程中,R0 内容不变,形式地址 A 可变。
8 相对寻址 EA = (PC) + A
A 是相对于当前指令的位移量(可正可负 ,补码)
A 的位数决定操作数的寻址范围。
程序浮动。
广泛用于转移指令。
9 堆栈寻址
堆栈的特点, 先进后出(一个入出口) 栈顶地址 由SP 指出
三、CISC和RISC的基本概念
复杂指令系统计算机CISC :
在指令系统中增加更多的(复杂)指令,来提高操作系统的效率,另外,为了做到程序兼容,同一系列计算机的新机器和高档机的指令系统只能扩充而不能减去任意一条,因此也使得指令系统越来越复杂,称这些计算机为复杂指令系统计算机。
精简指令系统计算机RISC:
精简指令系统计算机的着眼点是通过简化指令系统,使计算机的结构更加简单合理,从而提高运算速度。
RISC 特点:
1.优先选取使用频率最高的一些简单指令,以及一些很有用但是不复杂的指令,避免复杂指令。
2.指令长度固定,指令格式种类少,寻址方式种类少,指令之间各字段的划分比较一致,各字段的功能比较规整。
3.只有取数/存数 指令访问存储器,其余指令操作都在寄存器之间进行。
4.CPU中通用的寄存器数量相当多,算数逻辑运算指令的操作数都在寄存器中存取。
5.大部分指令都在一个或小于一个机器周期内完成,
6.以硬布线控制逻辑为主,不用或少用微码控制
7.一般用高级语言编程,特别重视编程优化工作,以减少程序执行时间。