目录
4.1指令的概念及基本格式
4.2扩展操作码指令格式
4.3指令寻址的寻址方式
4.3.1指令寻址
4.3.1.1顺序寻址
4.3.1.2跳跃寻址
4.3.2数据寻址
4.3.2.1隐含寻址
4.3.2.2立即寻址
4.3.2.3直接寻址
4.3.2.4间接寻址
4.3.2.5寄存器寻址
4.3.2.6寄存器间接寻址
4.3.2.7相对寻址
4.3.2.8基址寻址
4.3.2.9变址寻址
4.3.2.10堆栈寻址
4.4 CISC和RISC的基本概念
4.5 总结
根据冯·诺依曼机的特点,指令和数据同样是一串二进制代码,一条指令通常包括操作码字段和地址码字段两部分。
指令字长取决于一条指令中操作码的长度和地址码的长度及地址码的个数。
根据地址码的个数不同可分为以下指令:
注:A指某个主存地址,(A)表示A所指向的地址中的内容。
一地址指令又称单地址指令。
半字长指令、单字长指令、双字长指令——指令长度是机器字长的多少倍
指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存。
定长指令字结构:指令系统中所有指令的长度都相等。
变长指令字结构:指令系统中各种指令的长度不等。
为了使指令字长有限的情况下仍保持比较丰富的指令种类,可采取可变长操作码。
当为定长指令字结构+可变长操作码时:
为了便于取指,指令的长度通常为存储字长的整数倍。
寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。
寻方式分为指令寻址和数据寻址两大类。
从指令的作用来理解这两种寻址方式比较容易:
指令集终究是要依次执行的,那么我们就需要一个明确的指令寻址的方式去确定我们接下来要执行指令集中的哪个指令。
而一个指令执行时,操作码字段指明了这个指令的操作类型,操作的对象在地址码字段中,我们需要明确数据寻址的方式去寻找指令执行需要用到的数据或信息。
寻址下一条欲执行的指令地址称为指令寻址。
而指令寻址的而下一条欲执行的指令始终存放在程序计数器PC中。
(PC)+“1”=PC
这里的1为相隔一个指令的具体地址增量,与指令长度和编址方式有关。(PC)表示是PC内容加“1”后的内容放入PC。
JMP:无条件跳转指令,将当前PC中的值4修改为7.
数据寻址是指如何在指令中表示一个操作数的地址 。
指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址(A)。形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址。
每个地址码都要表明是哪种数据寻址方式。
相对寻址、基址寻址、变址寻址都属于偏移寻址。
在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。
实际应用过程中通常是基址寻址和变址寻址相结合。如通过基址寻址将数组的起始地址放到100这个实际地址,通过变址寻址将数组元素的地址进行迭代。
上图看不清就看下图:
堆栈可分为硬堆栈和软堆栈两种。寄存器堆栈又称硬堆栈;而从主存中划出一段区域用来做堆栈是最合算且最常用的方法,这种堆栈称为软堆栈。
二轮补充(一轮时没有理解的这么到位)
寻址方式中的指令寻址和数据寻址是并存的,
对于一些运算类指令,它的指令寻址方式是顺序寻址(默认),数据寻址方式就是那些各种各样的方式。
但对于转移类指令来说,它的指令寻址方式就是跳跃寻址,它的所谓数据寻址其实是如何来表示这个跳跃的量,和介绍的数据寻址方式差不多,格式不重要,思想类似,转移类指令的目标就是正确转移。
复杂指令系统计算机(CISC)的主要特点如下:
精简指令系统计算机(RISC)的主要特点如下:
从指令系统兼容性看,CISC 大多能实现软件兼容,即高档机包含低档机的全部指令,并可加以扩充。但 RISC 简化了指令系统,指令条数少,格式也不同于老机器,因此大多数 RISC 机不能与老机器兼容。
对比项目\类别 | CISC | RISC |
指令系统 | 复杂,庞大 | 简单,精简 |
指令数目 | 一般大于 200 条 | 一般小于 100 条 |
指令字长 | 不固定 | 定长 |
可访存指令 | 不加限制 | 只有 Load/Store 指令 |
各种指令执行时间 | 相差较大 | 绝大多数在一个周期内完成 |
各种指令使用频度 | 相差较大 | 都比较常用 |
通用寄存器数量 | 较少 | 多 |
目标代码 | 难以用优化编译生成高效的目标代码程序 | 采用优化的程序编译,生成代码较为高效 |
控制方式 | 绝大多数为微程序控制 | 绝大多数为组合逻辑控制 |
指令流水线 | 可以通过一定方式实现 | 必须实现 |
①指令系统采用不同寻址方式的优缺点:
②关于指令中某个地址段的位数 :
③ 简化地址结构的基本方法是尽量采用隐地址。
④在数据寻址的各种方式中,获取操作数最快的方式是立即寻址。
定长指令集立即寻址执行速度最快;但如果是变长指令集,执行速度最快的是寄存器寻址方式,立即寻址指令码最长,取指令访存花费时间较多。
⑤在数据寻址的各种方式中,寻址方式可以结合使用,如变址间接寻址:
⑥在多道程序设计中,最重要的寻址方式是相对寻址。
- 多道程序设计技术是指在内存同时放若干道程序,使它们在系统中并发执行,共享系统中的各种资源。当一道程序暂停执行时,CPU立即转去执行另一道程序。
- 在程序 (特别是用ASM写的程序)中制定的一些数据的位置是不确定的,比如你原来想读一个1500位置上的数据,但是实际上这个1500到底存了什么是不确定的,所以,采用了相对地址的策略,即所有的数据都是假设程序开始 (ORG)位置为0的相对地址.... 所谓程序浮动,就是针对这样一种情况,在运行过程中采取相对地址的技术来实现的.
二轮注:不重要不清楚不了解,背熟三字口诀。
⑦转移指令、子程序调用与返回指令用于解决变动程序中指令执行次序的需求,而不是数据调用次序的需求。
⑧指令格式规整且长度一致、指令和数据按边界对齐存放、只有Load/Store指令才能对操作数进行存储访问。
⑨基址、变址寄存器内容、内存地址都是真值,而形式地址一般用补码表示,我们计算有效地址时EA=(X)+A时需要把形式地址A转换为真值。(整数负数补码拓展位补一)。