<>一、机器指令

<>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的修改与主存编址方法有关

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信