文章目录
1. 指令格式1.1 指令的基本概念1.2 指令的分类1.2.1 按地址码数目分类1.2.2 按指令的长度分类1.2.3 按操作码长度分类1.2.4 按操作类型分类1.2.4 小结
1.3 扩展操作码1.3.1 扩展操作码的组成1.3.2 扩展操作码的设计1.3.3 扩展操作码与定长操作码的对比
2. 指令的寻址方式2.1 指令寻址和数据寻址2.1.1 指令寻址(通过PC)2.1.2 数据寻址2.1.2.1 直接寻址2.1.2.2 间接寻址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 基址寻址2.1.2.7.2 变址寻址2.1.2.7.3 相对寻址
2.1.2.8 堆栈寻址2.1.2.9 小结
2.2 CISC vs RISC
3. 补充3.1 一些简单的汇编语句3.2 知识点补充
1. 指令格式
1.1 指令的基本概念
指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
而一条指令有操作码和地址码两部分组成。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。Eg:x86架构、ARM架构 上的软件不能互相在对方上直接运行。
1.2 指令的分类
1.2.1 按地址码数目分类
1.2.2 按指令的长度分类
1.2.3 按操作码长度分类
1.2.4 按操作类型分类
1.2.4 小结
1.3 扩展操作码
1.3.1 扩展操作码的组成
1.3.2 扩展操作码的设计
1.3.3 扩展操作码与定长操作码的对比
2. 指令的寻址方式
2.1 指令寻址和数据寻址
2.1.1 指令寻址(通过PC)
* 指令寻址的分类:
1. 顺序寻址: 由 PC自动加"1"得到
2. 跳跃寻址: 执行类似jmp跳跃指令,直接更改PC的值,实现指向下一条指令。
对于定长和变长指令的顺序寻址方式如下(跳跃寻址由跳跃指令决定,指令定不定长对其无影响):
2.1.2 数据寻址
由于数据寻址的方式有很多,有如下10中,自然的在寻址时要对寻址方式加以区分,导致地址码被细分成寻址特征 + 形式地址。其中寻址特征就是用来区分寻址方式的。
2.1.2.1 直接寻址
2.1.2.2 间接寻址
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 基址寻址
注意:如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。若是专用寄存器,则不需要。
2.1.2.7.2 变址寻址
注意:如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。
2.1.2.7.3 相对寻址
注意: EA = (PC) + A, 这里的PC是自动加一后的PC
2.1.2.8 堆栈寻址
注意:
注意栈顶和栈底方向,以及栈顶指针是指向栈顶元素还是栈顶上的空元素。
2.1.2.9 小结
注意:
相对寻址用于实现程序内部代码的”浮动“;基址寻址用于实现程序在内存中的”浮动“;变址寻址用于实现程序内部的循环和访问数组。上面的寻址方式一般相互组合使用。基址寻址的寄存器用户不可使用,由操作系统管理。而变址寻址的寄存器用户可以使用。几个偏移寻址的功能:
基址寻址用于实现程序在内存中浮动,有利于实现多道程序;相对寻址用于实现程序内部的浮动,也有利于实现多道程序,因为在内存中各个程序段也有可能浮动;也有利于实现程序的转移/跳转。【注意是转移不是浮动,程序的浮动是基址寻址的功能】变址寻址用于实现循环程序,访问数组。
2.2 CISC vs RISC
3. 补充
3.1 一些简单的汇编语句
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才能最大的缩短地址码位数。
7. 关于指令的功能及分类,正确的是( )
A. 算术与逻辑运算指令,通常完成算术运算或逻辑运算,都需要两个数据。
B. 移位操作指令,通常用于把指定的两个操作数左移或右移一位。
C. 转移指令,子程序调用与返回指令,用于解决数据调用次序的需求
D. 特权指令,通常仅用于实现系统软件,这类指令一般不提供给用户。
选D. A,不一定需要两个数据,比如取反。B,移位是针对一个操作数。C,是用于解决指令调用次序的需求。
8. 判断:
A. RISC机一定采用流水技术
B. 采用流水技术的一定是RISC机
C. RISC机的兼容性优于CISC机
D. CPU配置很少的通用寄存器
只有A正确。
9.
注意:内存地址是无符号数