学习重点
- 机器指令
- 操作码
- 地址码
- 操作数
- 类型
- 存储方式
- 操作类型
- 寻址方式(10种)
- RISC和CISC
1.机器指令
-
指令的一般格式:
-
操作码:
-
长度不可变
-
长度可变
-
操作码扩展技术:保留码点
保留的码点是(1111),若增加一个码点(1110),则最多增加16个地址
原则:短操作码一定不能是长操作码的前缀!! -
指令编码:
- 常用的指令用短操作码
- 不常用的指令用长操作码
-
-
地址码:
-
四地址:
- 四次访存:取指令,取操作数1,取操作数2,保留结果
- 用PC代替A4—>三地址
-
三地址:
用ACC代替A3—>二地址
- 二地址:
用ACC代替其中一个操作数(A1或A2)—>一地址
-
一地址:
-
零地址:没有地址码,不访存,如CLA
-
-
指令字长取决于:
- 操作码长度
- 操作数地址的长度
- 操作数地址个数
2.操作数
- 类型
- 地址:无符号整数
- 数字:定点,浮点,十进制
- 字符:ASCII码
- 逻辑数:逻辑运算
- 数据在存储器中存放顺序:
- 大端大尾:大的放在字的后面
- 小端小尾:小的放在字的后面
- 数据在存储器中存放方式:
-
从任意位置开始:可能会跨存储器字访问
- 节约空间
-
从字的开始位置存放: 浪费空间
-
边界对准:
- 上面两种方式的折中
- 地址起始位置是数据长度的整数倍
- 字节:0,1,2,3....
- 半字(2字节):0,2,4,6,8....
- 字(4字节):0,4,8,12....
-
3.操作类型
- 数据传送:
- 存储器—>寄存器(LOAD)
- 寄存器—>存储器(STORE)
- 存储器—>存储器(MOVE)
- 寄存器—>寄存器(MOVE)
- 算术逻辑操作:加减乘除等
- 移位操作:
- 算术移位
- 逻辑移位
- 循环移位(进位和不进位)
- 转移操作:
- 无条件转移:JMP
- 条件转移
- 结果为0转:JZ
- 结果溢出转:JO
- 结果进位转:JC
- 跳过指令:SKP
- 调用和返回
CALL,RETURN - 陷阱(Trap):意外事故中断
- 不提供用户使用,出现事故时CPU调用(隐指令)
- 提供给用户使用的陷阱指令
- 输入输出,IO指令 :IN/OUT
- 并不是每一个指令集都有
- IO统一编制则没有该指令
4.寻址方式
寻址:确定本条指令操作数地址,或者下一条指令的指令地址
4.1 指令寻址
- 顺序寻址:
(PC)+1—>PC - 跳跃寻址:
由主存中存储的JMP转移指令给出 - 示意图:
4.2 数据寻址
指令格式如下:
寻址方式如下:
-
立即寻址
-
直接寻址
-
隐含寻址
-
间址寻址
-
寄存器直接寻址
-
寄存器间接寻址
-
基址寻址
- 使用专属寄存器
BR不可变,A可变 - 使用通用寄存器
R0不可变,A可变
- 使用专属寄存器
-
变址寻址:IX
-
相对寻址
-
堆栈寻址
5.RISC和CISC
-
RISC:精简指令集计算机
-
CISC:复杂指令集计算机
-
RISC和CISC比较