Download presentation
Presentation is loading. Please wait.
1
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:15928582759
主讲教师 杨 梅 联系电话:
2
第三章 CPU子系统 计算机中的 信息 指令信息 计算机处理的对象 控制信息 数据 数值型数据 非数值型数据 2009 SCS-SWPU
计算机组成原理 第三章 CPU子系统 计算机中的 信息 计算机处理的对象 控制信息 计算机的信息分为:数据信息和控制信息 数据信息是计算机所处理的对象,分数值型数据和非数值型数据,数值型数据有确定的值并在数轴有对应的点;数值型数据的表示涉及的问题有:何种进位计数制,如何表示带符号的数据,如何表示小数点的位置。非数值型数据没有确定的值,如字符数据 控制信息的基础主要是机器指令(规定计算机完成某种操作命令),一台计算机所有机器指令的集合称为指令系统 数据 指令信息 数值型数据 非数值型数据
3
3.2 指令信息的表示 指令:让计算机完成某种操作的命令 指令系统:一台计算机所能执行的全部指令 从软件的角度理解 指令的功能:
2009 SCS-SWPU 计算机组成原理 3.2 指令信息的表示 指令:让计算机完成某种操作的命令 指令系统:一台计算机所能执行的全部指令 从软件的角度理解 指令的功能: 从硬件设计的角度理解 不同系列的计算机有不同的指令系统; 指令越丰富功能越强,计算机结构越复杂 ; 是用户编制程序的依据,设计一台计算机的基本出发点。
4
2009 SCS-SWPU 计算机组成原理 3.2 指令信息的表示 1 指令的 格式 2 指令的 寻址方式 3 指令的功能和类型
5
3.2.1 指令格式 机器指令的基本格式 显地址 和 隐地址 操作码:告诉计算机做什么 (1)操作数或操作数地址
2009 SCS-SWPU 计算机组成原理 指令格式 机器指令的基本格式 操作码:告诉计算机做什么 (1)操作数或操作数地址 地址码 (2)存放运算结果的地址 (3)后继指令地址(常以隐含方式给出) 显地址 和 隐地址 地址码结构 提高计算机 性能为目的 操作码结构
6
3.2.1 指令格式—1、地址码结构 1) 四地址指令 其中: Ai表示地址,(Ai)表示存放于该地址的内容。
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 1) 四地址指令 A4→PC 其中: Ai表示地址,(Ai)表示存放于该地址的内容。 A4明确表示下条将要执行指令的地址。 A4常隐含给出,四地址指令很少采用
7
3.2.1 指令格式—1、地址码结构 2) 三地址指令 特点: 若A1、A2、A3为内存地址
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 2) 三地址指令 特点: 若A1、A2、A3为内存地址 则执行该指令需要访问4次主存。 根据PC的内容,取指令本身 根据指令中A1取被操作数; 根据指令中的A2取操作数; ALU运算结果,然后将结果保存到A3 修改PC的值,为读取下条指令做准备 例:完成(1000)+(2000)=>(3FFF)的操作: ADD (1000H),(2000H),(3FFF) A1表示存储单元或寄存器地址,(A1)表示地址里面的数
8
3.2.1 指令格式—1、地址码结构 程序计数器PC指向后继指令地址(假设内存为字节单元) 1000H PC 1000H OP1
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 程序计数器PC指向后继指令地址(假设内存为字节单元) 1000H PC 1000H OP1 指令寄存器IR 1001H PC+1 1001H A1 程序跳转到 3000H PC+1 1002H A2 ALU PC+1 1002H A3 PC+4 1004H OP2 A1 PC A2 3000H 3000H OPn
9
3.2.1 指令格式—1、地址码结构 3) 二地址指令 例: ADD AX,BX ;(AX)+(BX)=>(AX)
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 3) 二地址指令 其中: A1为目的操作数地址,A2为源操作数地址。 二地址指令执行之后,A1原存的内容被破坏了。 例: ADD AX,BX ;(AX)+(BX)=>(AX) MOV AX,BX ;(BX)=>(AX)
10
3.2.1 指令格式—1、地址码结构 4) 一地址指令 两种情况: 1)只有目的操作数的单操作数指令
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 4) 一地址指令 两种情况: 1)只有目的操作数的单操作数指令 2)隐含约定目的地址的双操作数指令,隐含约定目的操作数 由累加寄存器Acc提供 ( 隐地址 ) 。 特点: 若A1为内存地址,执行一条一指令的双操作数运算指令,只需访问两次主存。第一次取指令本身,第二次取操作数。 例: INC bx ; bx+1=>bx ADD BX ; AC+BX=>AC
11
3.2.1 指令格式—1、地址码结构 5) 零地址指令 显地址的多少对计算机性能的影响 三种情况:
2009 SCS-SWPU 计算机组成原理 指令格式—1、地址码结构 5) 零地址指令 显地址的多少对计算机性能的影响 三种情况: 1)不需要操作数的指令,又称无操作数指令,多属控 制指令。如:HLT,NOP 2)隐含约定操作数在Acc中的单操作数指令 3)对堆栈元素的操作 1、显地址数多,指令长,所需存储空间大,读取时间长,但访问数据灵活 2、显地址少,指令短,所需存储空间小,但地址选择受限制 零地址的算逻类指令是用在堆栈计算机中的,堆栈计算机没有一般计算机中必备的通用寄存器,因此堆栈就成为提供操作数和保存运算结果的唯一场所。 例: NOP 空操作 INC 隐含约定累加器AC内容加1 PUSH 压栈 POP 出栈
12
3.2.1 指令格式 机器指令的基本格式 显地址 和 隐地址 操作码:告诉计算机做什么 (1)操作数或操作数地址
2009 SCS-SWPU 计算机组成原理 指令格式 机器指令的基本格式 操作码:告诉计算机做什么 (1)操作数或操作数地址 地址码 (2)存放运算结果的地址 (3)后继指令地址(常以隐含方式给出) 显地址 和 隐地址 地址码结构 提高计算机 性能为目的 操作码结构
13
3.2.1 指令格式—地址码结构 显地址的多少对计算机性能的影响 A4→PC
2009 SCS-SWPU 计算机组成原理 指令格式—地址码结构 A4→PC 显地址的多少对计算机性能的影响 1、显地址数多,指令长,所需存储空间大,读取时间长,但访问数据灵活 2、显地址少,指令短,所需存储空间小,但地址选择受限制
14
3.2.1 指令格式—2、操作码结构 指令的操作码结构 操作码的位数决定指令种类的多少 固定长度操作码 操作码的编码 可变长度操作码
2009 SCS-SWPU 计算机组成原理 指令格式—2、操作码结构 指令的操作码结构 操作码的位数决定指令种类的多少 固定长度操作码 指令字长固定,那么操作码和地址码的位数就会相互制约 操作码的编码 可变长度操作码
15
3.2.1 指令格式—2、操作码结构 (1) 固定长度操作码 操作码位数和位置是固定的 多用于指令较长或可变字长指令格式
2009 SCS-SWPU 计算机组成原理 指令格式—2、操作码结构 (1) 固定长度操作码 操作码位数和位置是固定的 多用于指令较长或可变字长指令格式 设字长为32位的计算机,用第一个字节表示操作码 操作码 地址码 系统读得的第一个字节指令代码是操作码,就知道该指令是要做什么,是单操作数还是双操作数指令,信息组织方式明确,因此译码电路也比较简单 一个字节 3个字节 特点: 读取和识别指令简单,译码简单、迅速。
16
3.2.1 指令格式—2、操作码结构 操作码的译码示意图(假设内存为字节单元) 指令寄存器IR 1000H PC 1000H OP1
2009 SCS-SWPU 计算机组成原理 指令格式—2、操作码结构 操作码的译码示意图(假设内存为字节单元) 指令寄存器IR 1000H PC 1000H OP1 指令译码器 1001H PC+1 1001H A1 双操作数指令 PC+1 1002H A2 PC+1 1003H OP2 ALU
17
3.2.1 指令格式—2、操作码结构 (2) 可变长度操作码 又称为扩展操作码 操作码扩展技术:操作码扩展到地址码 操作码 地址码
2009 SCS-SWPU 计算机组成原理 指令格式—2、操作码结构 (2) 可变长度操作码 又称为扩展操作码 操作码扩展技术:操作码扩展到地址码 操作码 地址码 N位 32-N位 地址部分位数较多时,让操作码的尾数少些 地址部分位数较少时,让操作码的位数增加,以增加指令种类 当指令中的地址部分位数较多时,让操作码的尾数少些 当指令中的地址部分位数较少时,可让操作码的位数增加,以增加指令种类 特点: 操作码字段的位数和位置不固定将增加指令译码和 分析的难度,使控制器的设计复杂化。
18
3.2.1 指令格式—操作码结构 总结:指令长短对计算机的影响 三地址指令编码 op X Y Z 扩展操作码标志
2009 SCS-SWPU 计算机组成原理 指令格式—操作码结构 例 设某指令系统的指令字长为16位,最多可给出三个地址段: X、Y、Z, 设计一种扩展操作码的方案: 0000 XXXX XXXX XXXX 15条三地址指令 … 1110 XXXX XXXX XXXX XXXX XXXX 15条二个地址指令 XXXX XXXX XXXX 15条一地址指令 XXXX 条零地址指令 思考题:另一种方案14条三地址指令,31条二地址指令,15条一地址指令,16条零地址指令 总结:指令长短对计算机的影响 三地址指令编码 op X Y Z 扩展操作码标志
19
3.2.1 指令格式—3、指令字长 4、 指令字长 (1)定字长指令格式: (2)可变字长指令格式 特点:结构简单,控制方便
2009 SCS-SWPU 计算机组成原理 指令格式—3、指令字长 4、 指令字长 (1)定字长指令格式: 特点:结构简单,控制方便 适用于精简指令系统(RISC) (2)可变字长指令格式 通常以字节为单位,有1字节、2字节、3字节等长度的指令; 读取操作码后判断是多少字节长度的指令 适用于复杂指令系统(CISC) 特点:结构灵活,控制复杂
20
课后延伸 RISC和CISC的区别 RISC处理器
21
2009 SCS-SWPU 计算机组成原理 3.2 指令信息的表示 1 指令的 格式 2 指令的 寻址方式 3 指令的功能和类型
22
3.2.2 指令的寻址方式 数据存储区 程序存储区 1000H OP1 00 0001 1001H A1:00H 01 0002 …
2009 SCS-SWPU 计算机组成原理 指令的寻址方式 数据存储区 程序存储区 1000H OP1 00 0001 1001H A1:00H 01 0002 … 1002H A2:4FH … 1003H OP2 A4 4F 0003 1:假设内存的存储空间很大会有什么问题? … A5 FF … 2:在指令中限制操作数地址的位数会有什么问题? 3000H OPn
23
3.2.2 指令的寻址方式 数据存储区 程序存储区 A1’ 0001 PC 1000H OP1 A2’ 0002 PC+1 1001H A1
2011 SCS-SWPU 计算机组成原理 指令的寻址方式 数据存储区 程序存储区 A1’ 0001 PC 1000H OP1 A2’ 0002 PC+1 1001H A1 … PC+1 1002H A2 … A3 … PC+4 1004H OP2 A3’ 0003 A4 … A5 3000H OPn
24
3.2.2 常见寻址方式 指令=操作码+操作数地址 形式地址:在指令中给出的地址 有效地址(EA):操作数的真实地址 寻址方式
2011 SCS-SWPU 计算机组成原理 常见寻址方式 指令=操作码+操作数地址 压缩操作数地址字段的长度 + 操作数地址表示多样化 方法 形式地址:在指令中给出的地址 有效地址(EA):操作数的真实地址 上节谈到指令=操作码+操作数地址,如果这个地址就是指的操作数在内存中的地址,那么地址的位数较少,访问内存的空间会受到限制 如果地址能访问较大的存储空间,则指令长度太大; 另外,如果指令只能表示内存的实际地址,碰到需要按找某种规律访问存放在内存中的一个表格、一个矩阵元素时,将显得不方便 解决上述问题:压缩指令中操作数地址字段的长度,同时使操作数地址的表示多样化 形式地址演变为有效地址的方法 称为寻址方式 形式地址转换为有效地址的方法 寻址方式 形式地址 有效地址(物理地址)
25
3.2.2 常见寻址方式 (1)操作数在指令中(指令) 操作数可能存放的地方: (2)操作数在CPU的某个寄存器中(寄存器号)
2011 SCS-SWPU 计算机组成原理 常见寻址方式 操作数可能存放的地方: (1)操作数在指令中(指令) (2)操作数在CPU的某个寄存器中(寄存器号) (3)操作数在主存储器中(单元地址码) (4)操作数在堆栈区中(堆栈指针SP) (5)操作数在I/O接口的寄存器中(端口地址) 立即数寻址 寄存器寻址 直接寻址 堆栈寻址 外设寻址 寻址方式的4大类 立即数寻址:在读指令时也就从指令中获得了操作数 直接寻址类:直接给出主存地址或寄存器号,以读取操作数 间接寻址类:从主存或某寄存器中读取操作数的地址 变址类:形式地址经过计算获得操作数的地址,用于数组、链表等数据结构的访问 数据地址的形成(数据的寻址方式) 数据和程序一样,在存贮器中也是按一定的顺序存放的,但是在程序的执行过程中,有的存贮单元的数据可能多次使用,没有什么规律可循,不能象指令地址的形成,在CPU中设置一个指令计数器,这就提出操作数地址如何形成?即通常称的寻址方式 重点学习!!!
26
1、立即寻址 I 所需的操作数由指令直接给出,称为立即数寻址方式 PC OP OP # D PC+1
2009 SCS-SWPU 计算机组成原理 1、立即寻址 I 所需的操作数由指令直接给出,称为立即数寻址方式 OP # D 立即寻址特征 立即数 PC OP 立即数 PC+1 例如:MOV AX,0102H ;AX←0102H 演示
27
1、立即寻址 I 立即数寻址方式: 特点 不需再次访存,速度快 操作数固定,无法修改 特别注意 只能用于源操作数字段
2009 SCS-SWPU 计算机组成原理 1、立即寻址 I 立即数寻址方式: 特点 不需再次访存,速度快 操作数固定,无法修改 特别注意 只能用于源操作数字段 常用来给寄存器和存储单元赋值
28
2、直接寻址 A A 2、 直接寻址: A M 寻址过程: 操作数地址A 操作数 主存地址 EA=A S=(EA)=(A)
2009 SCS-SWPU 计算机组成原理 2、直接寻址 A 2、 直接寻址: A 主存地址 A # 操作数S 广义的地址可能是主存地址或寄存器号,但习惯上“直接寻址”中的操作数地址是指主存地址 该图中,是假设主存单元按字编址,一个操作数占一个主存单元; 指令也占一个子,其中包含操作码OP和地址码A M 寻址过程: 操作数地址A 操作数 EA=A S=(EA)=(A) 即:地址码给出的就是操作数S所在主存单元的实际地址
29
2、直接寻址 A 例: 其汇编符号记为: MOV Ri, (1536H) 直接寻址的特点 执行阶段访问一次存储器
2009 SCS-SWPU 计算机组成原理 2、直接寻址 A 例: 把1536H存储单元中存放的操作数1534H取出,送入存器Ri中 其汇编符号记为: MOV Ri, (1536H) 1534h 操作码 特征 寄存器号 直接地址码D MOV # Ri 1536h 内存储器 直接寻址的特点 执行阶段访问一次存储器 D的位数决定了该指令操作数的寻址范围 有效地址是指令的一部分,不能随程序的需要而动态改变,因此指令只能访问某个固定的主存单元
30
2、直接寻址 A 思考: 若主存储器数据区与数据直接的对应关系如下: 地址 数据 1000H 1A00H 2000H 1B00H
2009 SCS-SWPU 计算机组成原理 2、直接寻址 A 思考: 若主存储器数据区与数据直接的对应关系如下: 地址 数据 1000H A00H 2000H B00H 3000H C00H 若 中,A=2000H,按照直接寻址方式读 取操作数,所读得的操作数是?
31
3、寄存器直接寻址 R EA = Ri S=( Ri ) R 寻址过程: 寄存器号 操作数
2009 SCS-SWPU 计算机组成原理 3、寄存器直接寻址 R 如果指令的地址码部分给出的是某通用寄存器编号Ri,Ri寄存器中存放着操作数,则称为寄存器直接寻址。 EA = Ri S=( Ri ) 汇编助记符:MOV AX, R2 ADD Ri Ri 操作数S 寻址特征 寄存器号 # R 寻址过程: 寄存器号 操作数 Ri是CPU中的若干个可编址寄存器,如:R0, R1, … , R7
32
3、寄存器直接寻址 R 思考: 若CPU中寄存器内容如下 R0 1000H R1 1A00H R2 2000H R3 1B00H
2009 SCS-SWPU 计算机组成原理 3、寄存器直接寻址 R 思考: 若CPU中寄存器内容如下 R H R1 1A00H R H R3 1B00H R H R5 1C00H 若 中,A给出的寄存器号为011,按照寄 存器寻址方式读取操作数,所读得的操作数S是多少?
33
小结:寄存器寻址与直接寻址 用寄存器寻址较直接寻址的优点? 分析下图 指令长度 3200H # R2 1000H 3200H
2009 SCS-SWPU 计算机组成原理 小结:寄存器寻址与直接寻址 用寄存器寻址较直接寻址的优点? 分析下图 指令长度 1000H # 001 010 MOV 3200H R2 CPU中的寄存器的访问速度比主存快 寄存器数远远少于主存单元数,存放寄存器号的字段位数少,可以有效地缩短指令长度,提高工作速度 3200H 寄存器寻址方式的优点: CPU中的寄存器的访问速度比主存快 寄存器数远远少于主存单元数,存放寄存器号的字段位 数少,可以有效地缩短指令长度,提高工作速度
34
4、 间接寻址 @A EA =(A1) A1 A1 寻址过程: 地址码部分给出的是存放操作数地址的内存单元的地址,这个地址叫做间接地址
2009 SCS-SWPU 计算机组成原理 4、 地址码部分给出的是存放操作数地址的内存单元的地址,这个地址叫做间接地址 间址寻址有什么用处? EA =(A1) 汇编助记符: MOV R1, ((A1)); A2 A1 # A1 A2 间址单元 操作数单元 操作数S 通过多层读取来提供地址的可变性 主要用于支持程序的循环、实现程序的共享,不需要改变指令本身,只需要修改间址单元的内容就可以访问不同的存储单元 M M 寻址过程: 间址单元地址 操作数地址 操作数
35
4、 间接寻址 @A 用途:用做地址指针 A1 A1 EA =(A1) A2 A3 A7 A3 A7 INC 操作数S S2 S3 A2
2009 SCS-SWPU 计算机组成原理 4、 用途:用做地址指针 A2 A1 A3 A7 # A1 A3 A7 A2 间址单元 INC 操作数单元 操作数S S2 EA =(A1) S3
36
4、 间接寻址 @A 例如: L1: MOV R1,( (0132H)); INC (0132H); JNZ L1; 间址寻址的特点:
2009 SCS-SWPU 计算机组成原理 4、 例如: L1: MOV R1,( (0132H)); INC (0132H); JNZ L1; 内 存 3200 1025 1234 MOV 操作码 特征 寄存器号 地址码A 011 001 0132H 3201 内 存 1025 1234 3200 MOV 操作码 特征 寄存器号 地址码A 001 0132H 010 0132H 0132H 间址寻址的特点: 间址单元作为地址指针,只要修改指针,同一条指 令就可以在不同时间访问不同的存储单元 地址不变,但地址里面的内容改变了!! Ri 1025 Ri 1234
37
4、 间接寻址 @A 思考: 若主存储器数据区与数据直接的对应关系如下: 地址 数据 1000H 1A00H 2000H 3000H
2009 SCS-SWPU 计算机组成原理 4、 思考: 若主存储器数据区与数据直接的对应关系如下: 地址 数据 1000H A00H 2000H H 3000H C00H 若 中,A=2000H,按照间接寻址方式读取操作数,所读得的操作数S是多少?
38
5、 寄存器间接寻址 @R R M 寻址过程: 寄存器号 操作数地址 操作数 地址字段所指的寄存器中存放的是操作数的地址。
2009 SCS-SWPU 计算机组成原理 5、 寄存器间接寻址 @R 地址字段所指的寄存器中存放的是操作数的地址。 汇编助记符:MOV AX, (R2) R M 寻址过程: 寄存器号 操作数地址 操作数 ADD @ Ri 操作数地址 内 存 操作数S 操作码 寻址特征 寄存器号 用途:把寄存器做为地址指针!
39
5、 寄存器间接寻址 @R 例如: L1: MOV R1, (R2); INC R2; JNZ L1; 3200H 3201H 1025
2009 SCS-SWPU 计算机组成原理 5、 寄存器间接寻址 @R 例如: L1: MOV R1, (R2); INC R2; JNZ L1; MOV 操作码 特征 寄存器号 地址码A 001 010 MOV 操作码 特征 寄存器号 地址码A 001 010 内 存 1025 1234 3200 3201 内 存 1025 1234 3200 3201 R2 R2 3200H 3201H R1 R1 1025H 1234H
40
5、 寄存器间接寻址 @R 例如: 若CPU中寄存器和主存单元内容如下, 总结:寄存器间址与间址寻址的异同 寄存器: R0 1000H
2009 SCS-SWPU 计算机组成原理 5、 寄存器间接寻址 @R 总结:寄存器间址与间址寻址的异同 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R H R H R H 若 中,A给出的寄存器号为010,按照寄存器间接寻址方式读取操作数,所读得的操作数S是多少? 主存单元 地址 数据 1000H A00H 2000H B00H 3000H C00H
41
小结:寄存器寻址与直接寻址 用寄存器间接寻址较间接寻址的优点? 分析下图 指令长度 3200H # R2 3000H
2009 SCS-SWPU 计算机组成原理 小结:寄存器寻址与直接寻址 用寄存器间接寻址较间接寻址的优点? 分析下图 指令长度 3200H 3000H # 001 010 MOV 3200H R2 内 存 1025 1234 3201H CPU中的寄存器的访问速度比主存快 寄存器数远远少于主存单元数,存放寄存器号的字段位数少,可以有效地缩短指令长度,提高工作速度 寄存器间接寻址方式的优点: CPU中的寄存器的访问速度比主存快 寄存器数远远少于主存单元数,存放寄存器号的字段位数少,可 以有效地缩短指令长度,提高工作速度 寄存器本身的位数可以很多,足以提供较长的地址码
42
自增型寄存器间接寻址 (R)+ 寄存器间接寻址的两种变型 R 让寄存器指针自动修改! M R 寻址过程: 操作数地址 寄存器号 操作数
2009 SCS-SWPU 计算机组成原理 自增型寄存器间接寻址 (R)+ 寄存器间接寻址的两种变型 让寄存器指针自动修改! M R 寻址过程: 寄存器号 操作数地址 操作数 R 内容+1 MOV 操作码 特征 寄存器号 地址码A 001 010 011 内 存 1025 1234 3200 3201 R2 3200H 3201H R1 1234H 1025H
43
自增型寄存器间接寻址 (R)+ 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R0 1000H R1 2000H R2 3000H
2009 SCS-SWPU 计算机组成原理 自增型寄存器间接寻址 (R)+ 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R H R H R H 若指令中给出的寄存器号为010,按照自增型寄存器间址方式读取操作数,所读得的操作数S是多少? 主存单元: 地址 数据 3000H A00H 3001H B00H 3002H C00H
44
自减型寄存器间接寻址 -(R) 2、自减型寄存器间址: -(R) 寻址过程: M R 操作数地址= 寄存器内容-1 操作数 寄存器号
2009 SCS-SWPU 计算机组成原理 自减型寄存器间接寻址 -(R) 2、自减型寄存器间址: -(R) 寻址过程: M R 操作数地址= 寄存器内容-1 操作数 寄存器号 MOV 操作码 特征 寄存器号 地址码A 001 010 STA 100 内 存 3200 3201 R2 3201H 3200 1234 R1 1025 1025
45
自减型寄存器间接寻址 -(R) 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R0 1000H R1 2000H R2 3000H
2009 SCS-SWPU 计算机组成原理 自减型寄存器间接寻址 -(R) 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R H R H R H 若指令中给出的寄存器号为010,按照自减型寄存器间址方 式读取操作数,所读得的操作数S是多少? 主存单元 地址 数据 2FFFH A00H 3000H B00H 3001H C00H
46
自增/自减型寄存器间接寻址举例 两次执行上述程序,R1和R2的内容??
2009 SCS-SWPU 计算机组成原理 自增/自减型寄存器间接寻址举例 可以把寄存器做为地址指针,修改寄存器的内容,可以使同一指令在不通时间访问不同的存储单元 例如: LP: MOX AX, (R1)+; MOV BX, -(R2); JNZ LP; 设R1和R2的初始内容如下: 寄存器: R H R H R H 两次执行上述程序,R1和R2的内容?? 主存单元 地址 数据 2FFEH H 2FFFH A00H 3000H B00H 3001H C00H
47
6、变址寻址方式 X(R) (1) 采用专用寄存器作变址寄存器 EA = (IX ) + D IX为变址寄存器 变址量由寄存器给出
2009 SCS-SWPU 计算机组成原理 6、变址寻址方式 X(R) (1) 采用专用寄存器作变址寄存器 变址量由寄存器给出 EA = (IX ) + D 寻址特征 IX为变址寄存器 操作数 主存 OP D IX 的内容由用户给定 ALU IX 可扩大寻址范围 便于处理数组问题
48
6、变址寻址方式 X(R) (2) 采用通用寄存器作变址寄存器 … EA=( R0 )+D R0 作变址寄存器
2009 SCS-SWPU 计算机组成原理 6、变址寻址方式 X(R) (2) 采用通用寄存器作变址寄存器 EA=( R0 )+D R0 作变址寄存器 OP R0 D 操作数 主存 通用寄存器 R0 Rn-1 R1 … ALU 由用户指定哪个通用寄存器作为变址寄存器 变址寄存器的内容由用户确定 在程序的执行过程中 D内容不变,变址寄存器IX可变
49
6、变址寻址方式 X(R) 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R0 0010H R1 0020H R2 0030H
2009 SCS-SWPU 计算机组成原理 6、变址寻址方式 X(R) 例如: 若CPU中寄存器和主存单元内容如下, 寄存器: R H R H R H 若指令中给出的寄存器号为001,形式地址D=1000H,按照变址寻址方式读取操作数,所读得的操作数S是多少? 主存单元 地址 数据 1010H A00H 1020H B00H 1030H C00H
50
6、变址寻址方式 X(R) 变址寻址方式的用途——查找二维表 MOV IX, 0; MOV CX, 15;
2009 SCS-SWPU 计算机组成原理 6、变址寻址方式 X(R) 变址寻址方式的用途——查找二维表 MOV IX, 0; MOV CX, 15; L1: MOV AX, IX,1000H; INC IX; LOOP L1 1 2 3 4 5 张三 1200 … 李四 1400 王五 1600 月份 销售额 销售员 1000H
51
7、基址寻址 (1) 采用专用寄存器作基址寄存器 EA = ( BR ) + A BR 为基址寄存器 位移量由形式地址给出
2009 SCS-SWPU 计算机组成原理 7、基址寻址 (1) 采用专用寄存器作基址寄存器 位移量由形式地址给出 EA = ( BR ) + A 寻址特征 操作数 主存 BR 为基址寄存器 OP D BR 内容由操作系统或管理程序确定 ALU BR 便于程序搬家 在程序的执行过程中 BR 内容不变,形式地址 D 可变 可扩大寻址范围
52
7、基址寻址 (2) 采用通用寄存器作基址寄存器 … EA=(R0)+D R0 作基址寄存器 由用户指定哪个通用寄存器作为基址寄存器
2009 SCS-SWPU 计算机组成原理 7、基址寻址 (2) 采用通用寄存器作基址寄存器 EA=(R0)+D R0 作基址寄存器 OP R0 D 操作数 主存 通用寄存器 R0 Rn-1 R1 … ALU 由用户指定哪个通用寄存器作为基址寄存器 基址寄存器的内容由操作系统确定 在程序的执行过程中 R内容不变,形式地址 D 可变
53
重点复习 1、为什么计算机指令需要设置不同的寻址方式?回顾寻址方式的4大类? 2、为什么说寄存器寻址方式更优于直接寻址方式?
2009 SCS-SWPU 计算机组成原理 重点复习 1、为什么计算机指令需要设置不同的寻址方式?回顾寻址方式的4大类? 2、为什么说寄存器寻址方式更优于直接寻址方式? 3、为什么说寄存器间接寻址方式更优于间接寻址方式?
54
基址和变址的应用方向 变址寻址——面向用户:用于访问字符串、向量和数组等成批数据,变址寄存器IX与形式地址D可根据实际需要灵活变化。
2009 SCS-SWPU 计算机组成原理 基址和变址的应用方向 变址寻址——面向用户:用于访问字符串、向量和数组等成批数据,变址寄存器IX与形式地址D可根据实际需要灵活变化。 在一些小型机或微型机中,基址寻址和变址寻址实际上已经合二为一了 1 2 3 4 5 张三 1200 … 李四 1400 王五 1600
55
基址和变址的应用方向 基址寻址——面向系统:主要用于逻辑地址到物理地址 的变换,用于程序重定位和扩大寻址空间等问题。
2009 SCS-SWPU 计算机组成原理 基址和变址的应用方向 基址寻址——面向系统:主要用于逻辑地址到物理地址 的变换,用于程序重定位和扩大寻址空间等问题。 在一些大型机中,基址寄存器是由管理程序利用特权指 令来使用,用户程序无权修改它,从而确保了系统的安全性。 应用于程序重定位: 用户 操作系统 机器 高级语言 逻辑地址 重定位 分配基地址→BR 执行程序 实际主存地址
56
8、基址加变址方式 … EA=(R0)+(R1)+d R0 作基址寄存器 R1 作变址寄存器 基址寄存器和变址寄存器的内容由用户确定
2009 SCS-SWPU 计算机组成原理 8、基址加变址方式 EA=(R0)+(R1)+d R0 作基址寄存器 R1 作变址寄存器 OP R0 R1 d # 操作数 主存 通用寄存器 R0 Rn-1 R1 … ALU ALU 基址寄存器和变址寄存器的内容由用户确定 在程序的执行过程中 R0 内容不变, R1和d内容可变 可方便处理二维数组或表格
57
8、基址加变址方式 基址变址寻址方式访问二维表格原理 … 100 80 60 90 91 110 如何用二维方式访问6月17日的销售金额?
2009 SCS-SWPU 计算机组成原理 8、基址加变址方式 基址变址寻址方式访问二维表格原理 金额 日 月 1 2 … 17 30 31 100 80 60 90 91 6 110 如何用二维方式访问6月17日的销售金额?
58
9、相对寻址 X(PC) d 是相对于当前指令的 EA = ( PC ) + d 位移量(可正可负,补码) 程序计数器PC的内容为基址地址
2009 SCS-SWPU 计算机组成原理 9、相对寻址 X(PC) d 是相对于当前指令的 位移量(可正可负,补码) EA = ( PC ) + d 寻址特征 OP d …… 主存 1000 d OP 1000 PC ALU 相对距离 d 操作数 程序计数器PC的内容为基址地址 d 的位数决定操作数的寻址范围 广泛用于转移指令,如循环、分支等情况
59
9、相对寻址 例如: 由于程序在内存空间里是浮动的,又称浮动寻址。 若CPU中寄存器和主存单元内容如下: 寄存器: PC 1000H
2009 SCS-SWPU 计算机组成原理 9、相对寻址 例如: 若CPU中寄存器和主存单元内容如下: 寄存器: PC H R H R H 若从1000H单元中取出一条指令,该指令采用相对寻址方式读取操作数,位移量为0003H 主存单元 地址 数据 0FFDH BC00H 1000H B00H 1003H C00H 由于程序在内存空间里是浮动的,又称浮动寻址。
60
11、堆栈寻址方式 硬堆栈: 软堆栈: 多个寄存器 堆栈 指定的存储空间 • 堆栈是一组能存储和取出数据的暂时存储单元,在这一点
2009 SCS-SWPU 计算机组成原理 11、堆栈寻址方式 • 堆栈是一组能存储和取出数据的暂时存储单元,在这一点 上,堆栈有点像存储器; (堆栈采用“后进先出”的工作方式。) 硬堆栈: 软堆栈: 多个寄存器 自底向上生成方式 堆栈 指定的存储空间 软堆栈按堆栈指示器中的初值进行相加或相减,可分成两种生成方式。堆栈指示器SP通常指向栈顶(或栈底): • 若采用SP的内容由初值不断向大的地址方向推进时(即(SP)+ Δ→SP),称为自顶向下生成方式,简称“向下生 成”方式; • 若采用SP的内容由初值不断向小的地址方向推进时(即(SP)-Δ→SP),称为自底向上生成方式,简称“向上生 成”方式。 自顶向下生成方式 以向上生长方式为例讲解
61
11、堆栈寻址方式 一、堆栈操作(以向上增长为例) 先进后出(一个入出口):栈顶地址 由 SP 指出 进栈 (SP)– 1 → SP
2009 SCS-SWPU 计算机组成原理 11、堆栈寻址方式 一、堆栈操作(以向上增长为例) 先进后出(一个入出口):栈顶地址 由 SP 指出 进栈 (SP)– 1 → SP OPR →(SP) 出栈(SP) → OPR (SP)+ 1 → SP – 1 +1 SP 2000 H 1FFF H OPR OPR SP 2000 H 1FFF H 进栈 出栈 栈顶 栈底 2000 H … … 1FFFH 栈顶 栈底 1FFFH 栈顶 OPR 2000 H 栈顶 压入指令:PUSH OPR 弹出指令:POP OPR
62
11、堆栈寻址方式 例题: 用零指令实现运算操作:a × b = c, 设(sp)=00F0H b xx a b xx xx xx c a
2009 SCS-SWPU 计算机组成原理 11、堆栈寻址方式 例题: 用零指令实现运算操作:a × b = c, 设(sp)=00F0H b 栈底 主存 初始状态 xx a 00F2 00F1 sp→ b 栈底 主存 弹出a xx 00F2 00F1 sp→ 栈底 主存 弹出b xx 00F2 00F1 sp→ 栈底 主存 C压栈 xx sp→ c 00F2 a b ALU c
63
11、堆栈寻址方式 思考:堆栈如何用于子程序的多重调用中 SUB1 PROC 2010H: call SUB1 2011H: RET
2009 SCS-SWPU 计算机组成原理 11、堆栈寻址方式 思考:堆栈如何用于子程序的多重调用中 SUB1 PROC 2010H: call SUB1 2011H: RET SUB1 ENDP 主程序 1000H: call SUB1 1001H: SUB2 PROC RET SUB2 ENDP 栈底 xxxx sp→ c 初态 栈底 xxxx 1001H ←sp SUB1 栈底 xxxx sp→ 2011H 1011H
64
思考题 说明:8086CPU系统,字长16bit,1M内存空间,采用自底向上的增长方式,按字访问,物理地址=ss*16+sp
2009 SCS-SWPU 计算机组成原理 思考题 说明:8086CPU系统,字长16bit,1M内存空间,采用自底向上的增长方式,按字访问,物理地址=ss*16+sp
65
常见寻址方式——总结 1、立即数寻址:助记符I,如汇编指令:MOV R1,1213H
2009 SCS-SWPU 计算机组成原理 常见寻址方式——总结 1、立即数寻址:助记符I,如汇编指令:MOV R1,1213H 2、直接寻址:助记符(A), 如: MOV R1,(1213H) R1,((1213H)) 3、寄存器寻址:助记符R,如:MOV R1,R2 4、寄存器间接寻址:助记符(R),如:MOV R1,(R2) 自增型寄存器间址:助记符(R)+, 如:MOV R1,(R2)+ 自减型寄存器间址:助记符-(R), 如:MOV R1,-(R2) 5、变址寻址:助记符X(R),如:MOV R1,R2,1000H 6、基址寻址:作用同上,主要用于系统 7、基址变址寻址:如:MOV R1,R2,R4,1000H 8、相对寻址:助记符X(PC) 9、堆栈寻址,PUSH和POP
66
2009 SCS-SWPU 计算机组成原理 3.2 指令信息的表示 1 指令的 格式 2 指令的 寻址方式 3 指令的功能和类型
67
CISC 和 RISC CISC(Complex Instruction Set Computer) 复杂指令系统(或集)计算机
2009 SCS-SWPU 计算机组成原理 CISC 和 RISC 包含尽可能多的指令和操作命令信息 CISC(Complex Instruction Set Computer) 复杂指令系统(或集)计算机 典型程序中 80% 的语句仅仅使用处理机中简单指令。 执行频度高的简单指令,因复杂指令的存在,执行速度无法提高。 能否用80%简单指令组合不常用的20%复杂的指令功能? RISC(Reduced Instruction Set Computer) 精减指令系统(或集)计算机 由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机 (1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。 (2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。 (3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。 (4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。 (5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。 (6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。 (7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。 (8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。 减小 代码空间
68
总结:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 RISC 的主要特征 选用使用频率较高的一些简单指令组成, 而复杂指令的功能由简单指令来组合; 总结:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机 指令长度固定,指令格式种类少; 只有 LOAD / STORE 指令访存储器,其余指令的操作都在寄存器之间进行 主要用于嵌入式、完成简单处理等场合,其思想是让硬件完成简单的功能,由所有功能最小的简单指令集合构成,复杂指令功能往往由简单指令组合(用户编程软件实现),例如:ARM7 3级流水线 ARM9 5级 P4不是RISC 由18级流水线构成,就明显能区分其使用场合 流水技术 :尽可能在一个时钟周期内完成一条指令 采用组合逻辑实现控制器
69
3.2.3 指令的功能和类型 指令的分类 不同的机型,对指令的分类不同,归纳起来有三种方法: (1)按指令格式分类
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 指令的分类 不同的机型,对指令的分类不同,归纳起来有三种方法: (1)按指令格式分类 单操作数、双操作数、程序转移等 (2)按操作数寻址方式分类 RR型、 RX型、 RS型、 SI型、 SS型等 (3)按指令功能分类 传送指令、I/O指令、算术运算指令、逻辑运算指令、程序控制指令、处理机控制指令等
70
3.2.3 指令的功能和类型 数据 传送类 指令 一、数据传送类指令 源地址 目的地址 数 数据传送指令:MOV 等
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 一、数据传送类指令 数据传送指令:MOV 等 数据 传送类 指令 专用访存指令:LOAD STORE等 I/0指令:IN OUT 从编程的角度,传送类指令是使用最多的指令 从掌握计算机工作机制的角度:计算机硬件操作基本上都可以归结为信息的传送 地址传送指令:LEA 数 源地址 目的地址
71
3.2.3 指令的功能和类型 一、数据传送类指令 1. 数据传送指令 (1). MOV 指令 汇编指令格式: MOV DST, SRC
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 一、数据传送类指令 1. 数据传送指令 目的 操作数 源 操作数 (1). MOV 指令 汇编指令格式: MOV DST, SRC ( DST ) ← ( SRC ) 例如: MOV AH, AL MOV R0, R1 MOVB R0,10H destination 传送单位:MOVB、MOVW 专用于指明数据传送的单位
72
3.2.3 指令的功能和类型 (2). 专用访存指令 (3). 地址传送指令(LEA) 读存储器内容到某个寄存器:LOAD
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 (2). 专用访存指令 读存储器内容到某个寄存器:LOAD 写存储器:STROE 弹出:POP,如:POP AX 压入:PUSH,如:PUSH AX XCHG:交换指令,如:XCHG AX BX 通用 寄存器 (3). 地址传送指令(LEA) LDA BX ,AX; (BX)=>(AC),LDA意为Load AC STA AX,BX ; (AC)=>(BX),STA意为Store AC MOV BX, XYZ ::: 把xyz单元的内容传送给BX LEA BX, XYZ: 把XYZ单元的有效地址传递给BX 汇编指令格式: LEA REG, SRC ( REG ) ← ( SRC ) 内存 操作数 例如:设内存单元的地址为XYZ,存放有数据1234H: 则指令MOV BX, XYZ LEA BX, XYZ的区别
73
3.2.3 指令的功能和类型 (4). 输入/输出指令(I/O指令) 1)单独编址 →I/O专用指令 2)统一编址 →通用数据传送指令
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 (4). 输入/输出指令(I/O指令) 寻找I/O接口中的寄存器的方式。 I/O端口 1)单独编址 →I/O专用指令 编址到设备:每个设备有各自的设备编码; 编址到寄存器:为每个寄存器(I/O端口)分配独立的端口地址 2)统一编址 →通用数据传送指令 I/O端口与主存单元统一编址 例 PDP-11、VAX-11 等计算机采用这种方式
74
3.2.3 指令的功能和类型 1)专用I/O指令 显式I/O指令 OUT PORT, SRC (PORT ) ← ( SRC )
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 1)专用I/O指令 汇编指令格式: IN DST, PORT ( DST ) ← ( PORT ) OUT PORT, SRC (PORT ) ← ( SRC ) 显式I/O指令 I/O端口与CPU之间的通信都通过IN和OUT指令实现 例如:intel系列机: IN和OUT指令只使用AX或AL寄存器 外设端口使用号在(00—FFH)之间直接使用端口号 端口号>255,使用间接端口寻址(预先把端口号放到DX寄存器) 例1: IN AL, 22H IN AX, 22H 例2:将端口1919H的一个字送入堆栈 MOV DX, 1919H IN AX, DX PUSH AX 主机用输出指令或传送指令将具体设备的控制命令按约定的代码格式送往接口中的控制寄存器,向外设发出命令。 外设的状态信息也以某种格式放在接口的状态寄存器中,主机用输入指令或传送指令从状态寄存器中取出有关信息进行查询、分析。 作用: I/O接口中设置控制寄存器 读取状态寄存器的信息
75
3.2.3 指令的功能和类型 2)传送指令实现I/O操作 如:某外设接口的三个寄存器,分别通过数据总线与CPU相连,总线地址如下
2009 SCS-SWPU 计算机组成原理 指令的功能和类型 2)传送指令实现I/O操作 I/O端口与主存单元统一编址,用传送指令访问I/O端口。 隐式I/O指令 格式: MOV n, Ri 输出指令 MOV Ri,n 输入指令 如:某外设接口的三个寄存器,分别通过数据总线与CPU相连,总线地址如下 数据寄存器 总线地址 FF00H 命令寄存器 总线地址 FF01H 状态寄存器 总线地址 FF02H 指令: MOV FF01H, R MOV R1, FF02H MOV R3, FF00H 的含义?
76
2009 SCS-SWPU 计算机组成原理 二、算术逻辑运算类指令 (1) 算术运算指令 主要有: ADD (加) 、 SUB (减) 、 INC (加1) 、 DEC (减1) 、 NEG (求补) 及 MUL(乘)、 DIV(除) (2) 逻辑运算指令 主要有: AND (与) 、 OR (或) 、XOR(异或)、 NOT(非)等 (3) 移位操作指令 算术左移: SAL (相当于乘以2) 算术右移: SAR (相当于除以2) 循环左移: ROL 循环右移: ROR
77
三、程序控制类指令 (1) 无条件转移指令 (2) 条件转移指令 例 8086计算机中的条件转移指令主要有: (3) 子程序调用指令
2009 SCS-SWPU 计算机组成原理 三、程序控制类指令 (1) 无条件转移指令 指令格式: JMP n ; n 是转移地址 (2) 条件转移指令 例 8086计算机中的条件转移指令主要有: JZ(为零转)、JNZ (不为零转) JC (有进位转)、 JNC (没有进位转) JS (为负转)、 JNS (不为负转) JO (有溢出转)、 JNO (没有溢出转) (3) 子程序调用指令 指令格式: CALL n ; n 是子程序入口地址 (4) 子程序返回指令 RET
78
2009 SCS-SWPU 计算机组成原理 作 业 课后作业: P
79
第二章 自测练习 分析题:某机的指令格式如下所示 X为寻址特征位: X=00:直接寻址; X=01:用变址寄存器RX1寻址;
2009 SCS-SWPU 计算机组成原理 第二章 自测练习 分析题:某机的指令格式如下所示 X为寻址特征位: X=00:直接寻址; X=01:用变址寄存器RX1寻址; X=10:用变址寄存器RX2寻址; X=11:相对寻址 设(PC)=1234H, (RX1)=0037H, (RX2)=1122H (H代表十六进制数),请确定下列指令中的有效地址: ①4420H ②2244H ③1322H ④3521H
80
Thank You !
Similar presentations