<>一、机器指令
<>1.取指周期
完成一条指令分4个周期:
取指周期,间址周期,执行周期,中断周期。
指令的一般格式:
操作码字段+地址码字段
1.1操作码,反映机器做什么操作
<>(1)长度固定
用于指令字长较长的情况,RISC。
如IBM 370 操作码8位
<>(2)长度可变
操作码分散在指令字的不同字段中。
<>2、指令字长
指令字长决定于:
操作码的长度,操作数地址的长度,操作数地址的个数。
<>(1)指令字长固定
指令字长=存储字长
<>(2)指令字长可变
按字节的倍数变化
<>3、小结
当用一些硬件资源代替指令字中的地址码字段后:
(1)可扩大指令的寻址范围
(2)可缩短指令字长
(3) 可减少访存次数
当指令的地址字段为寄存器时
三地址 OP R1, R2, R3
二地址 OP R1, R2
一地址 OP R1
可缩短指令字长
指令执行阶段不访存
<>二、操作数类型和操作种类
<>2.1操作数类型
地址 :无符号整数
数字 :定点数,浮点数,十进制整数
字符 :ASCII
逻辑数:逻辑运算
<>2.2数据在存储器中的存放方式
<>a、从任意位置开始存储
优点:不浪费存储资源
缺点:除了访问一个字节之外,访问其他任何类型的数据都可能花费两个存储周期的时间。读写控制比较复杂。
<>b、从一个存储字的起始位置开始访问
优点:无论访问何种类型的数据,在一个周期内均可完成,读写控制简单。
缺点:浪费了宝贵的存储资源。
<>c、边界对准–从地址的整数倍位置开始访问
<>三、操作类型
<>1、数据传送
源 寄存器 寄存器 存储器 存储器
目的 寄存器 存储器 寄存器 存储器
<>2、算术逻辑操作
加,减,乘,除,增1,减1,求补,十进制
与,或,非,异或,位操作,位测试,位清除,位求反
<>3、移位操作
算术移位,逻辑移位
循环移位(带进位和不带进位)
<>4、转移
(1)无条件转移 JMP
(2)条件转移
结果为零转(Z=1) JZ
结果溢出转(O=1)JO
结果有进位转(C=1)JC
跳过一条指令 SKP
(3)调用和返回
(4)陷阱(Trap)与陷阱指令
意外事故的中断
· 一般不提供给用户直接使用
在出现事故是,由CPU自动产生并执行(隐指令)
· 设置供用户使用的陷阱指令
提供给用户使用的陷阱指令,完成系统调用
<>输入输出
入 端口中的内容——>CPU的寄存器
出 CPU的寄存器——>端口中的内容
<>四、寻址方式
寻址方式:确定本条指令的操作数地址,下一条要执行的指令的指令地址。
寻址方式:指令寻址,数据寻址。
<>1、指令寻址
(1)顺序寻址:(PC)+1——>PC
(2)跳跃寻址:由转移指令指出
<>2、数据寻址
格式:操作码+寻址特征+形式地址A
形式地址:指令字中的地址
有效地址:操作数的真实地址
约定:指令字长=存储字长=机器字长
<>(1)立即寻址
形式寻址A就是操作数
指令执行阶段不访存
A的位数限制了立即数的范围
<>(2)直接寻址
EA=A
有效地址由形式地址直接给出
执行阶段访问一次存储器
A的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改A)
<>(3)隐含寻址
操作数地址隐含在操作码中
指令字中少了一个地址字段,可缩短指令字长。
<>(4)间接寻址
EA=(A)
有效地址由形式地址间接提供
执行指令阶段2次访存
可扩大寻址范围
便于编制程序
<>(5)寄存器寻址
EA=Ri
有效期即为寄存器编号
执行阶段不访存,只访存寄存器,执行速度快。
寄存器个数有限,可缩短指令字长
<>(6)寄存器间接寻址
EA=(Ri)
有效地址在寄存器中
有效地址在寄存器中,操作数在储存器中,执行阶段需要访存。
便于编制循环程序。
<>(7)基址寻址
<>(一)采用专用寄存器作基址寄存器
EA=(BR)+A
BR 为基址寄存器。
可扩大寻址范围
有利于多道程序
BR内容由操作系统或者管理程序确定
在程序的执行过程中BR内容不变,形式地址A可变
(二)采用通用寄存器作为基址寄存器
由用户指定哪个通用寄存器作为基址寄存器
基址寄存器的内容由操作系统确定
在程序的执行过程中R0内容不变,形式地址A可变。
<>(8)变址寻址
EA=(IX)+A
IX为变址寄存器(专用)
通用寄存器也可作为变址寄存器
可以扩大寻址范围 IX的内容由用户给定 在程序的执行过程中IX内容不变,形式地址A不变 便于处理数组问题
<>(9)相对寻址
EA=(PC)+A
A是相对于当前指令的位移量(可正可负,补码)
A的位数决定操作数的寻址范围
程序浮动
广泛用于转移指令
<>(10)堆栈寻址
(一)堆栈的特点
堆栈:
硬堆栈:多个寄存器
软堆栈:制定的内存空间
先进后出(一个入出口) 栈顶地址由SP指出
进栈(SP)-1——>SP
出栈(SP)+1——>SP
(二)SP的修改与主存编址方法有关