《计算机体系结构设计》第03章 指令体系设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

逻 辑 左 移 SHL ( Shift Logical Left ) / 逻 辑 右 移 SHR (Shift Logical Right)
格式:SHL(或SHR) OPR,CNT 逻辑移位指令常用于无符号数*2或/2,受影响的标志
位:CF、OF、PF、SF和ZF(AF无定义)。
如:MOV AX,36H
L: CALL B M: CALL C
K+1:
L+1:
M+1:
堆栈
M+1 L+1 K+1
RET
RET
利用堆栈保存返回地址
RET
3.1.8 输入输出指令
输入/输出(I/O)类指令用来实现主机与外部设备之 间的信息交换。通常有两种:独立编址方式,统一编址方式。
输入/输出指令
0000H
主存
00H 外设寄存器 FFH
立即寻址
指令的地址字段指出的不是操作数的地址,而是操作 数本身,这种寻址方式称为立即寻址。如:MOV AX, 5678H。
OP
立即数
图3.8 立即寻址方式表示形式
直接寻址
在指令格式的地址的字段中直接指出操作数在内存的地 址。不需要经过某种变换,所以称这种寻址方式为直接寻址 方式。
指令寄存器 OP 1A00
压栈指令格式: PUSH 源操作数
(SP)-1→SP
;修改栈指针
(A)→(SP)
;将A中的数据压入堆栈
弹栈指令格式:POP 目的操作数
((SP))→A
;将栈顶内容弹出,送入A中
(SP)+1→SP
;修改栈指针
3.1.7 程序控制指令
程序控制指令也称转移指令。主要分成三类,转移指 令(包括无条件转移和有条件转移)、程序调用和返回指 令,循环控制指令。
显式的方法就是在指令中设置专门的寻址方式(MOD) 字段,用二进制代码来表明寻址方式类型。
显式 OP MOD
A
隐式的方式是由指令的操作码字段说明指令格式并隐
含约定寻址方式。
隐式
OP
A
3.3.1 指令寻址
顺序寻址方式 使用程序计数器(又称指令指针寄存器)PC来计数
指令的顺序号,该顺序号就是指令在内存中的地址。
子程序调用返回指令
子程序是一组可以公用的指令序列,知道子程序的入口 地址就能调用它。从主程序转向子程序的指令称为子程序调 用指令(CALL);而从子程序转向主程序的指令称为返回 指令(RET或RETURN)。可以带有条件,也可以不带条件。
主程序
子程序A A:
子程序B B:
子程序C C:
K: CALL A
(3)通用寄存器型中的进一步分类 寄存器至寄存器(R-R:Register-Register) 寄存器至存储器(R-S:Register-Storage)/
寄存器-存储器(R-M:Register- Memory) 存储器至存储器(S-S:Storage-Storage)/
存储器-存储器型(M-M:Memory-Memory)
(4)IBM 370机指令分类
IBM 370机(字长32位)的指令可分为三种不同的长 度形式:半字长指令、单字长指令和一个半字长指令。不 论指令的长度为多少位,其中操作码字段一律都是8位,8 位操作码字段允许容纳256条指令,实际上在IBM 370机中 仅有183条指令。
操作码第0位和第1位组成4种不同编码,代表不同类 型指令:00表示RR型指令,01表示RX型指令,10表示RRE 型、RS型、S型及SI型指令,11表示SS型和SSE型指令。
按位置(位设置)
例如:OR AL,80H
XXXX XXXX ∨ 10000000
1XXX XXXX
按位修改
利用“异或”指令可以修改目的操作数的某些位,只要
源操作数的相应位为“1”来自百度文库其余位为“0”,异或之后就达到
了修改这些位的目的(因为 A ⊕1=A,A⊕0=A)。
例如:XOR AL,08H
XXXX XXXX
带进位的循环左移RCL(Rotate Left Through Carry)和带 进位的循环右移RCR(Rotate Right)
格式:RCL(或RCR) OPR,CNT 都用原CF的值填补空出的位,移出的位再进入CF。受影
响的标志位:CF和OF。 双精度移位指令
386及其后继机型可使用本组指令,包括SHLD(shift left double) 双精度左移和SHRD(shift right double) 双精度右移。 格式:SHLD(或SHRD) DST,REG,CNT
指令的分类: (1)按指令长度是否可变分类
定长指令字结构 变长指令字结构 (2)按在CPU中的存储位置分类 堆栈型:不能被随机访问,从而很难生成有效代码;
累加器型:减小了机器的内部状态,指令短小。由于累加 器是唯一的暂存器,这种机器的存储器通信开销最大。
寄存器型:是代码生成最一般的模型。
数据交换指令
数据传送也可以是双向的,即将源操作数与目的操作 数(一个字节或一个字)相互交换位置。 字符串处理指令
一般包括字符串传送、字符串转换(把一种编码的字 符串转换成另一种编码的字符串)、字符串替换(把某一 字符串用另一字符串替换)等。
3.2.1 数值数据类型
数据类型可以分为两大类:数值型的和非数值型的。
算术左移SAL(shift arithmetic left) 格式:SAL OPR,CNT 含义:算术左移SAL把目的操作数的低位向高位移,
空出的低位补0。 SAR(shift arithmetic right) 算术右移
格式:SAR OPR,CNT
3.1.5 逻辑移位指令
逻辑移位的对象是没有数值含义的二进制代码。按进位 位是否一起循环分为:小循环(不带进位循环),大循环 (带进位循环)。
图3.6 顺序寻址方式
跳跃寻址方式 所谓跳跃,是指下条指令的地址码不是由程序计数器
给出,而是由本条指令给出。注意,程序跳跃后,按新的 指令地址开始顺序执行。
图3.7 跳跃寻址方式
3.3.2 操作数寻址
形成操作数的有效地址的方法称为操作数的寻址方式, 或称为数据寻址方式。
隐含寻址
这种类型的指令,不是明显地给出操作数的地址。而是 在指令中隐含着操作数的地址。例如,单地址的指令格式, 规定累加寄存器AC作为第2操作数地址,指令格式明显指出 的仅是第1操作数的地址D。如:DAA。
转移指令
在程序执行过程中,通常采用转移指令来改变程序的 执行方向。
无条件转移指令(JMP)不受任何条件的约束,直接 把程序转向新的位置执行。转移指令中的无条件转移指令 通常有两种:一种是局部无条件,采用相对寻址方式,转 移范围一般在+127到-128之间;另一种是全局无条件 转移,可以在整个寻址空间内转移。
指令系统:通常是指一台计算机所能 执行的全部指令的集合。
指令系统 软件
裸机
指 令 集体系 结 构 (Instruction-Set Architecture, ISA),或称为指令集架构,由指令集和一系列相应的寄存 器 约 定 构 成 。 常 见 种 类 有 : 复 杂 指 令 集 运 算 (Complex Instruction Set Computing,CISC);精简指令集运算 (Reduced Instruction Set Computing,RISC);显式并 行 指 令 集 运 算 (Explicitly Parallel Instruction Computing , EPIC) ; 超 长 指 令 字 (Very Long Instruction Word,VLIW)。
输出指令OUT
指令格式:OUT port, acc;
直接寻址,port为8位立即数表示的端口地址,或: OUT DX,acc。间接寻址,16位端口地址由DX给出指 令将AL(或AX)的内容输出到指定的端口。
3.1.9 其他指令
特权指令
特权指令主要用于系统资源的分配与管理具有特殊的 权限,一般只能用于操作系统或其他系统软件而不直接提 供给用户使用。
SHR AX,1
当移位数大于1时,需要先将移位数放进CL中然后
再进行移位操作。
如:MOV AL,36H
MOV CL,3
SHR AL,CL
循环左移ROL(Rotate Left)/循环右移ROR(Rotate Right) 格式:ROL(或ROR) OPR,CNT
移出的位不仅要进入CF,而且还要填补空出的位。蛇咬 尾巴型循环。
3.1 指令类型与功能 3.2 数据类型 3.3 寻址方式 3.4 指令系统设计方法 3.5 CISC与RISC指令系统设计 3.6 80x86/Pentium指令系统 3.7 ARM指令系统 3.8 MIPS指令系统设计 习 题 3
指令:控制和指挥计算机执行某种操 作(如加、减、传送等)的指示和命令。
主存储器
EA=D 操作数S=(D)
100 操作数
图3.9 直接寻址
间接寻址
指令地址字段中的形式地址不是操作数的真正地址,而 是操作数地址的指示器,或者说此形式地址单元的内容才是 操作数的有效地址。
指令寄存器 OP @ 1A00
主存储器
IOR
IOW 访存指令
0000H
主存
FFFFH
MEMR MEMW
独立编址的I/O
EFFFH 外设寄存器 4KB
FFFFH
统一编址的I/O
输入指令 IN
指令格式:IN acc,port
直接寻址,port为8位立即数表示的端口或:IN acc, DX。间接寻址,16位端口地址由DX给出指令从端口输入 一个字节到AL或输入一个字到AX中。
3.2.2 字符类型
字符型(Character)数据是不具计算能力的文字数 据类型。它包括中文字符、英文字符、数字字符和其他 ASCII字符,其长度(即字符个数)范围是0-254个字符。
3.2.3 逻辑数据类型
逻辑数据类型又称为Boolean Variable (布尔型变量), 是有两种逻辑状态的变量,它包含两个值:真和假。
操作码
地址码
图3.1 基本指令格式
操作码:指明操作的性质及功能,操作码长度有固定、可 变两种。
地址码:指明操作数的地址,特殊情况下也可能直接给出 操作数本身。
源操作数参照:一个或多个源操作数所在的地址。 结果值(目的操作数)参照:产生的结果存放何处。
作为一个合理而有效的指令系统应满足以下基本要求: 完备性 有效性 规整性 兼容性
3.1.3 逻辑运算指令
逻辑运算指令主要包括各类布尔量的逻辑运算指令, 如与、或、非、异或、测试等指令。
按位测(位检查) 例如:AND AL,01H
XXXX XXXX ∧ 00000001
0000000X
按位清(位清除) 例如:AND AL,FEH
XXXX XXXX ∧ 11111110
XXXX XXX0
3.1.6 堆栈操作指令
堆栈是计算机中一种“后进先出”(LIFO)或“先进后 出”(FILO)的数据结构,由栈区和栈顶指针组成。
寄存器堆栈:用一组专门的寄存器构成寄存器堆栈,又称 硬堆栈。
存储器堆栈:从主存中划出一段区域作堆栈,又称软堆栈, 大小可变,栈底固定,栈顶浮动,故需要一个专门栈指针。
堆栈有两种操作,压栈(进栈)和弹栈(出栈),它们均只 能在栈顶进行。
3.1.1 数据传送指令
计算机中最基本、最常用的指令,主要用于实现
一个部件与另一个部件之间的数据传送操作。
主存单元之间的传送
MOV mem2,mem1,其含义为 (mem1)→mem2 从主存单元传送到寄存器
MOV reg,mem,其含义为 (mem)→reg 在有些计算机中,该指令用助记符LOAD表示,又称 为取数指令。
⊕ 00001000
XXXX XXXX
判符合 若两数相符合,其异或之后的结果必定为“0”。
清0 例如:XOR AL,AL
3.1.4 算术移位指令
包括移位指令(含算术移位指令、逻辑移位指令), 循环移位指令(含带进位的循环移位指令),双精度移 位指令三大类。算术移位的对象是带符号数,算术移位 过程中必须保持操作数的符号不变,左移一位,数值×2, 右移一位,数值÷2。
从寄存器传送到主存单元
MOV mem,reg,其含义为 (reg)→mem 在有些计算机里,该指令用助记符STORE表示,又 称为存数指令。
寄存器之间的传送
MOV reg2,reg1,其含义为 (reg1)→reg2
3.1.2 算术运算指令
运算类指令的主要功能是进行各类数据信息处理,包 括各种算术运算及逻辑运算指令。
相关文档
最新文档