文章目录
1. 指令格式
1.1 指令的基本概念
一条指令通常由操作码和地址码组成:(关机操作就只有操作码)

地址码:指令地址(控制类指令)或数据地址(非控制类指令),包含参与程序的转移地址、被调用的子程序的入口地址 、运算的一个或多个地址、运算结果的保存地址 等
注:
- 一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。Eg:x86架构、ARM架构 上的软件不能互相在对方上直接运行。
- 指令系统是计算机
软件与硬件的交界处,os是最靠近硬件的软件。- 指令译码是指对指令的操作码字段译码,而不是整条指令。
1.2 指令的分类
1.2.1 按地址码(操作数)长度/数目分类

注意:算访存次数时,记得加上取指令
1.2.2 按指令的长度分类

注意:是
指令字长 / 机器字长而不是存储字长
1.2.3 按操作码长度分类

例题:
- 若是寄存器,则对寄存器编码,而不是寄存器位数
1.2.4 按操作类型分类

例题:指令类型的判断
1.3 扩展操作码指令
1.3.1 扩展操作码的组成

目的:为了在保持指令长度不变,增加指令数量。(操作码长度随地址码的减少而增加)
1.3.2 扩展操作码的设计

例题:
- 扩展操作码设计:
先设计操作码短的
- 计算剩余指令条数(固定 vs 扩展)
2. 指令的寻址方式
2.1 指令寻址和数据寻址
注意:地址码分为
指令地址和数据地址—>指令寻址和数据寻址
2.1.1 指令寻址(通过PC)

目的:实现程序控制。
指令寻址的分类:
- 顺序寻址: 由
PC自动加"1"得到【1指一个指令字长】- 跳跃寻址: 执行类似jmp跳跃指令,直接
更改PC的值,实现指向下一条指令。
2.1.2 数据寻址

指令的地址码被细分成寻址特征 + 形式地址。其中寻址特征就是用来区分寻址方式的。
采用不同寻址的目的:
缩短指令字长、扩大寻址空间、提高编程的灵活性
缺点:增加了指令译码难度。

2.1.2.1 直接寻址

2.1.2.2 间接寻址

注意:形式地址A是主存的地址
2.1.2.3 寄存器寻址

2.1.2.4 寄存器间接寻址

例题:
2.1.2.5 隐式寻址

注意:隐式寻址,是给出一个操作数的,隐藏另一个的。
2.1.2.6 立即寻址

2.1.2.7 基于偏移量进行寻址
偏移寻址:将某个寄存器的内容与形式地址相加得到的有效地址。

2.1.2.7.1 基址寻址

注意:
- 基址寄存器的组成:
专业寄存器BR通用寄存器
注意:如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。若是专用寄存器,则不需要。- 基址寻址用于实现
程序在内存中浮动,有利于实现多道程序;- 基址寄存器是面向os的。其值由os决定,而哪个寄存器作为基址寄存器由用户决定。
基址寄存器 = 重定位寄存器
例题:
2.1.2.7.2 变址寻址

注意:
- 变址寄存器的组成:
专业寄存器IX通用寄存器
如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。若是专用寄存器,则不需要。- 变址寄存器是面向用户的,其值由用户设置
- 变址寄存器常用来循环访问数组。
例题:
2.1.2.7.3 相对寻址

注意:相对寻址用于实现
程序段在内存的浮动,也有利于实现多道程序,也有利于实现程序的转移/跳转。【注意是转移不是浮动,程序的浮动是基址寻址的功能】
- 考点:PC在取指周期末自加,且形式地址是
补码表示,记m = 指令字长/存储字长,则 PC = (PC) + m + m*偏移量
PC++在取指周期末,条件转移指令跳转是在执行周期内:
2.1.2.8 堆栈寻址

注意:
- 注意栈顶和栈底方向,以及栈顶指针是指向栈顶元素还是栈顶上的空元素。
2.1.3 小结

注意:
定长指令时,立即寻址最快;不定长指令时寄存器寻址最快。
不定长指令的最短,是寄存器寻址,而不是隐藏寻址
综合例题:
- 汇编中运算的结果默认存放到
目的操作数的形式地址所指向的单元中- 汇编中的指令,sub A, B
A,B这种都是有效地址,故能够根据指令识别直接还是间接寻址,R是直接,(R)是间接
- 求相对寻址范围时,注意是对于某条指令【PC固定】,还是对于所有指令【PC为主存范围】
2.1.4 条件转移指令

注意:根据上题可知,条件转移指令的判断条件来自于
标志寄存器,实现方式是程序计数器
2.2 CISC vs RISC

练习:
3.2 知识点补充
1. 判断:指令系统是计算机软/硬件的界面。
正确。指令是系统位于软件和硬件的交界面上,是软件的最低级界面,是硬件的最高级界面(指令驱动硬件运行)。
2. 判断:指令系统和机器语言无关。
错误。指令系统是计算机硬件的语言系统,而机器语言与硬件息息相关,故指令系统与机器语言相关。
3. CPU执行过程中,指令的地址都是由PC给出。而无论是什么寻址,想改变程序执行的跳转,都是通过修改PC的值实现的。
4. 运算型指令的功能是取操作数,控制型指令的功能是改变程序执行的顺序。
常见的控制指令:循环指令、转换指令、条件转移指令、无条件转移指令、子程序调用指令、返回指令等
注意:中断指令是由硬件实现的,并不是指令系统中的指令。
5. 指令系统中采用不同寻址方式的原因是( )
A. 提供扩展操作码的可能并降低指令译码难度。
B. 可缩短指令字长、扩大寻址空间、提高编程的灵活性。
C. 实现程序的控制
D. 以上都正确。
选B。A中指令译码难度增加,因为寻址方式变多了。C,实现程序的控制是由靠转移指令而非寻址方式实现的。
B中采用立即寻址可缩短指令字长,采用寄存器寻址可扩大寻址空间,采用相对寻址可提高编程的灵活性。
6. 简化地址结构的基本方法是尽量采用( )
A. 寄存器寻址 B. 隐地址 C. 直接寻址 D. 间接寻址。
选B。只有B才能最大的缩短地址码位数。
8. 判断:
A. RISC机一定采用流水技术
B. 采用流水技术的一定是RISC机
C. RISC机的兼容性优于CISC机
D. CPU配置很少的通用寄存器
只有A正确。
本文详细介绍了计算机指令系统的基础知识,包括指令格式、分类及扩展操作码的设计原理。同时,深入探讨了指令的寻址方式,如指令寻址、数据寻址中的直接、间接、寄存器等多种寻址方式的特点与应用。

























3183

被折叠的 条评论
为什么被折叠?



