当前位置:文档之家› 第三章 指令系统

第三章 指令系统


(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统
寻址方式:立即数、寄存器直接、寄存器间接、存储器直接、 存储器间接、基址寻址、基址加比例寻址
(1) MOV FF01H ,R0
(2) MOV R1 ,FF02H
(3) MOV R2 ,FF00H
(4) MOV FF00H ,R3
常用操作数寻址方式
立即寻址 #imme 直接寻址 LOC 间接寻址 (LOC) 寄存器直接寻址 Ri 寄存器间接寻址 (Ri) 寄存器变址寻址 X(Ri) 相对寻址 X(PC) 基址寻址 X(BX) 隐含寻址 其他寻址方式(块寻址、段寻址)
解:若按字节编址,地址码应为24 位 (2^24 = 16MB) ;若按字编址, 地址码只需23 位。
操作数的编码方式
例:假设某外设接口中有3 个寄存器,它们通
过数据总线与CPU 相连,其总线地址如下:
数据寄存器
FF00H
命令字寄存器 FF01H
状态字寄存器 FF02H
下列4 条指令完成的操作分别是什么?
操作数和存放加法的结果都不需要访问主存。
(4) 零地址双操作数指令
零地址双操作数指令中只有操作码字段, 操作数地址都是隐含的。操作数在堆栈的栈 顶位置和次栈顶位置,它们分别从堆栈中弹 出,送到运算器中进行运算,运算的结果再 压入堆栈。执行一条零地址的加法指令访问 主存的次数取决于堆栈的结构。
举例
例:分别利用三地址、二地址、一地址和零地址指令 编制计算算术表达式x = (a×b+ c - d) ÷ (e+ f)的程序。
解:假设a、b 、c 表示操作数,A 、B 、C 表示操作 数所在存储地址。
(1) 三地址指令程序
MUL A ,B ,X
ADD SUB
X ,C ,X X ,D ,X
ADD E ,F ,Y
指令类型:控制类(JNZ\JZ\JMP\CALL\RET\LOOP)、数据
传送类(MOV\PUSH\POP\LES)、算术逻辑运算类
(ADD\SUB\CMP\SHL\SHR\RCR\CBW\TEST\INC\DEC\OR\X
OR)、字符串(MOVS\LODS)
指令格式: 4
4
8
5
3
JE conditions displacement
DIV X ,Y ,X
共需5 条三地址指令,每条指令4 次访存,执行此 程序共访存20 次。
(2) 二地址指令程序
MOV X ,A MUL X ,B ADD X ,C SUB X ,D MOV Y ,E ADD Y ,F DIV X ,Y 共需7 条二地址指令,MOV 指令3 次访存,算术运 算指令4 次访存,执行此程序共访存2 × 3 + 5 × 4 = 26 次。
③因为二地址指令占5 个字节,每条指令需访 存3 次才能取出。除取指令外,传送指令还 需访存2 次,运算指令还需访存3 次,所以 总的访存次数为:5 × 3 + 2 × 2 + 3 × 3 =28 次。
指令分类:依据指令功能来分
算术逻辑运算类指令(ADD、AND) 移位指令和循环指令(CLR、RL) 传送类指令(MOV) 串指令(CWB) 顺序控制类指令(JMP) 特权指令(CHMOD) 输入输出指令(IN OUT或利用访存指令)
软件 裸机
指令系统
指令格式
操作码 (OP)
操作数(D) 寻址方式 地址码
数寄 内 值存 存
器地 址
操作码表示指令要完成的操作,其长度决 定了指令系统可以表示的指令条数;操作数是 操作的对象,对象的类型由寻址方式部分决定
指令分类:依据操作数个数来分
OP
OP D
OP
D1
D2
OP D1 D2 D3
指令中地址个数的选取要考虑诸多的因 素。从缩短程序长度,用户使用方便,增加 操作并行度等方面来看,选用三地址指令格 式较好;从缩短指令长度,减少访存次数, 简化硬件设计等方面来看,一地址指令格式 较好。对于同一个问题,用三地址指令编写 的程序最短,但指令长度最长,而用二、一、 零地址指令来编写程序,程序的长度一个比 一个长,但指令的长度一个比一个短。
(1) 分别用三地址、二地址、一地址和零地 址指令编写程序,计算A = (B - C) × (D -E)(不允许覆盖任何操作数,可以使 用暂存单元) 。
(2) 分别计算所写程序的总字节数。 (3) 分别计算程序执行时的访存次数。
① 三地址指令程序
SUB B ,C ,A
SUB D ,E ,Tmp
MUL A ,Tmp ,A
双操作数运算类指令的执行
对于双操作数运算类指令(如加法指令)来 说,每条指令中都需要包含以下4 个地址信 息:
① 第一操作数地址A1 ; ② 第二操作数地址A2 ; ③ 操作结果存放地址A3 ; ④ 下条将要执行指令的地址A4 。
这些地址信息可以明显地给出,称为显地址; 也可以依照某种事先的约定,用隐含的方式 给出,称为隐地址。
PUSH reg
4 31
32
ADD reg w immediate
8
32
CALL offset
6
11
8
8
MOVE d w displacement displacement
71
8
32
TEST w postbyte immediate
RISC机型
80%不常用 指令
复2杂精0指%指简系常令指统用令 令系统
扩展窗口1111 1110 XXXX YYYY 15条二地址指令
扩展窗口 1111 1111 0000 XXXX 15条一地址指令 1111 1111 1110 XXXX 1111 1111 1111 0000 16条零地址指令 1111 1111 1111 1111
操作数的编码方式
立即数:直接将数据表示成二进制形式
② 因为操作码8 位,地址码16 位,所以: 三地址指令程序中每条指令占7 个字节,程 序的字节总数为21 个字节;
③因为三地址指令占7 个字节,每条指令需访 存4 次才能取出,接下来每条指令还需要访 存3 次,所以3 条指令共访存21 次。
① 二地址指令程序
MOV A ,B SUB A ,C MOV Tmp ,D SUB Tmp ,E MUL A ,Tmp ②二地址指令程序中每条指令占5 个字节,程 序的字节总数为25 个字节;
(3) 一地址指令程序 LOAD E
ADD F
STORE X LOAD A MUL B ADD C SUB D DIV X STORE X 共需9 条一地址指令,每条指令2 次访存,执行此 程序共访存9 × 2 = 18 次。
(4) 零地址指令程序
PUSH A PUSH B MUL PUSH C ADD PUSH D SUB PUSH E PUSH F ADD DIV POP X
第三章 指令系统
3.1 指令系统的定义及性能要求 3.2 指令格式及指令类型 3.3 指令和数据的编码及寻址方式 3.4 堆栈寻址方式 3.5 RISC机型
指令系统是指一台计算机所有机
器指令的集合,构成了计算机的机器 语言,是计算机硬件与上层软件的接 口。计算机的指令系统决定了计算机 的CPU的功能和结构。CISC和RISC 是现代两大典型指令系统体系结构。 设计一台机器的指令系统应考虑到其 完备性和完整性、兼容性、均匀性、 可扩充性。例:指令格式如下:源自4位4位4位
4位
如何表示61条指令,其中三地址、两地址、一 地址指令各15条,零地址指令16条?能否表示 更多条指令?
4位
4位
4位
4位
OOPP OP OAP1 OP A21
A321
…… … …
0000 XXXX YYYY ZZZZ 15条三地址指令
扩展窗口1110 XXXX YYYY ZZZZ 1111 0000 XXXX YYYY
从100 号单元中取第一操作数,第三次从2 00 号单元中取第二操作数,第四次将加法的 结果保存到主存的100 号单元。
(3) 一地址双操作数指令
一地址双操作数指令只有一个显地 执址行,一参条一加地运址算的加的法另指一令只个需操要作访问数两来次自主 累加 存1寄,0存第0器一号次单A从c元c5中。0取指号操单作令元数的中。含取由指于义令第为,一:第操二作次数从和 运算(结A果c都c)放在O累P加(寄A存1器中),→所以A读cc取第一
相关主题