当前位置:
文档之家› 计算机组成原理4.1 指令系统
计算机组成原理4.1 指令系统
指令系统:
一台计算机支持(或称使用)的全部指令的 集合构成该计算机的指令系统。 由于指令与计算机的性能以及硬件结构密 切相关,所以不同系列、不同型号的计算机其 指令系统是不一样的。
4.1 指令系统
指令的基本格式 指令格式的优化 寻址方式 指令系统举例
Th-union汇编语言程序设计
一、指令的格式
单字指令仅用一个指令字。
双字指令要用两个指令字, 此时第二个指 令字的内容可能是立即数、一个绝对地址或 一个变址位移量。
Th-union的机器指令 0000000000010010 0000000100010010 0000100100110000 1000100000010000 0000000001010101
Ri:通用寄存器
12 D2 12 D
Xi:变址寄存器
Bi:基址寄存器 Di:位移量 I: 立即数 L: 数据的长度
8 4 4 4 OPC Rn Rm B
8 4 4 12 OPC I2 B1 D2 8 8 4 12 OPC L B1 D1
4 B2
12 D2
定长操作码的特点
优点:有利于简化硬件设计,提高 指令译码的速度和指令执行的速度。 缺点:限制了指令系统的扩充、 不 利于缩短指令的长度,存在有很大程度 的信息冗余 。
b. 变长指令定长操作码
指令字的长度与机器字长没有固定的关系。 例:IBM360/370 指令的操作码是8位的, 指令字为16位、32位、48位。
TH-union
指令的操作码是8位的, 指令字为16位.
Th-union的指令格式
8位 操 作 码 4位 4位 目的寄存器 源寄存器 I/O 端口地址 条件转移指令的偏移量 直接数 / 内存地址 / 指令中变址偏移量
为了克服机器语言的缺点,人们采用助记 符表示机器指令的操作码,用符号代替操作数 的存放地址等,这样就形成了汇编指令。 例:机器指令: 0000011100100001
汇编指令: MVRR
R2,R1
用汇编指令编写的程序称为汇编源程序。
一条机器指令对应一条汇编指令。用汇编 指令编写程序就直观方便得多。
规定指令完成 何种功能。
表明操作数存放 的位置,以便找 到操作数完成指 令的功能。
指令的操 例如: 作码字段 Th-union的机器指令 0000000000010010 0000000100010010 0000100100110000 1000100000010000 0000000001010101
习惯,与计算机硬件无关,易被用户掌握和使
用。
例如:编程实现 123 加 456 → 求和
(1) 用C语言实现: Main () { int a, b, sum; a=123; b=456; sum=a+b
}
(2)用8086汇编语言实现: a dw 123
b dw 456
sum dw ?
add ax, b mov sum , ax mov ax, 4c00h int 21h
操作码
…
寄存器编号
例如: 0000110010001001 0111010000110000
SUB R8,R9 INC R3
• 执行阶段不访存,只访问寄存器,执行速度快。 • 寄存器个数有限,可缩短指令字长。
3)间接寻址方式
a.通过寄存器的间接寻址方式 若寄存器中存放的是操作数在内存中所在 单元的地址,这就是寄存器间接寻址方式。 OP … Reg No
1、机器指令
任何一条机器指令由一组有意义的二进制 代码构成,称为一个指令字。
0000000000010010 0000000100010010
用机器指令编写的程序是计算机惟一能够 直接识别并执行的程序,称为机器语言程序。 机器语言程序被称为目标程序(目标代码)。
机器语言的特点
机器直接执行,速度快。 缺点:与机器硬件直接相关,通用性差; 编程不直观、难以记忆、使用很不方便。
多地址指令
Th-union的机器指令 0000000000010010 0000000110001001 0000100100110000 1000100000010000 NC MOV R1,R2 R8,R9 R3 R1,0055H
a. 无地址指令(零地址指令)
第4章 指令系统和控制器部件
4.1 指令系统 4.2 控制器部件
指令:
是指示计算机执行基本操作的命令。 指令也是用户使用计算机的最小功能单 位。 从计算机组成的层次结构来说,计 算机的指令有微指令、机器指令和宏指 令之分。
微指令:是微程序级的命令,它属于硬件; 宏指令:是由苦干条机器指令组成的软件指令, 它属于软件; 机器指令:则介于微指令与宏指令之间,通常 简称为指令。每一条指令可完成一个独立的算 术运算或逻辑运算操作。 本章所讨论的指令是机器指令。
操作码
…
存储器地址 操作数 内 存 储 器
存储器地址为操作数在 存储器中的地址。或转移 指令等用到的指令地址。
例:MOV R1,[0800] 操作码 0001 不用
0000100000000000
特点是什么? 简单直观,执行速度快。
编程不灵活,访问空间有限。
2)寄存器寻址
指令地址码字段给出某一通用寄存器的 编号(地址),且所需的操作数就在这个寄存 器中,这就是寄存器寻址方式。
指令的操 作数字段 汇编指令 ADD R1,R2 SUB R1,R2 INC R3 MVRD R1,0055
0
0
5
5
1)操作码
在指令系统中,每一条指令都有唯一确定 的操作码。 定长操作码 分二种形式: 变长操作码
a. 定长操作码形式
在指令字中,操作码字段的位数和 位置是固定的。 早期的计算机一般采用定长操作码 的设计,控制简单,且对操作码的译码 实现容易。
c. 双地址指令
格式:
操作码 地址码1 地址码2
地址码1既是源操作数的地址,也是目 的操作数的地址。 双操作数在运算类、传送类指令中使用 较多。 ADD DR, SR
d. 多地址指令
格式1: 格式2:
操作码 地址码1 地址码2 地址码3
操作码
地址码1
地址码2
地址码3
地址码4
特点:操作完成后源操作数的内容不被破坏, 用户编程方便。严重的缺点是指令字较长。
汇编指令 ADD R1,R2 SUB R1,R2 INC R3 MVRD R1,0055
思考:
设某机型需设计 100条指令。试确定 以下两种操作码设计方案的操作码长度。
1)采用定长操作码格式。 2)采用扩展操作码法。(设10℅的指令使 用频度为90℅)
二、寻址方式
寻址方式:指的是确定本条指令的数据地址 及下一条要执行的指令地址的方法。 不同的计算机系统,使用数目和功能不 同的寻址方式,其实现的复杂程度和运行性 能也各不相同。
设计方案为:
三地址指令采用4位操作码 0000 ~ 1110 双地址指令采用8位操作码 11110000 ~ 11111110 一地址指令采用12位操作码 111111110000 ~ 111111111110 无地址指令采用16位操作码 1111111111110000 ~ 1111111111111111
~
~ ~ ~
(3地址指令15条) (2地址指令15条)
8位操 作码
12位操 作码
(1地址指令15条)
(0地址指令16条)
16位操 作码
练习: 设某机为定长指令字结构,指令长度12位, 每个地址码占3位,试提出一种方案,使该系 统包含4条三地址指令,8条二地址指令, 180 条单地址指令。 另:能否构成三地址指令4条,单地址指 令 255条,零地址指令64条呢?
3) 指令字长度
机器指令的二进制序列的位数。
定长指令变长操作码
变长指令定长操作码
a. 定长指令变长操作码
该种形式是将操作码的设计与地址码的 设计作为一个整体考虑,以形成高效合理的 指令编码。 例:某机指令系统,指令字为16位固定长, 要求有3地址指令、2地址指令、1地址指 令和0地址指令,每个地址码4位。应如何 设计?
2500 1100 ...
跳跃寻址 顺序寻址
2、数据寻址
通常需要在指令中为每一个操作数专设一个地址字 段,用来表示数据的来源或去向的地址。
在指令中给出的操作数的地址被称为形式地址,使 用形式地址信息并按一定的规则计算出来的一个数值 才是数据(或指令)的实际地址。
操作码 寻址特征 形式地址 A
约定
指令字长 = 存储字长 = 机器字长
1、指令寻址
顺序 跳跃
PC +1
( PC ) + 1
由转移指令指出
指令地址
0 1 1 2 2 3 3 4 5 6 7 7 8 8 9
PC
指令
LDA ADD DEC JMP LDA SUB INC STA LDA 1000 1001 1200 7 2000 2001 指令地址寻址方式 顺序寻址 顺序寻址 顺序寻址
Code segment assume CS: Code, DS:Data Main endp Code ends Main:mov ax,data mov ds,ax end main mov ax, a
(3)用机器语言实现: 键入代码: -e cs:100 A1 0F 01 03 06 11 01 A3 13 01 B8 00 4C CD 21 为数据分配空间: -e ds:10F 7B 00 C8 01 00 00
三种语言编写程序占用字节数
程序设计语言
高级语言( C ) 汇编语言
可执行程序占用字节数
CSUM.EXE
4330 21
机器语言
21
2. 指令的基本格式