《计算机硬件技术基础(第三版)》第4章 指令系统

发布时间:2021-06-08

《计算机硬件技术基础(第三版)》

第4章

指令系统天津大学 计算机科学与技术学院

《计算机硬件技术基础(第三版)》

4. 1

指令格式

4.1.1 指令格式 . . 指令是由许多部分组成的,在构成指令的这几部分中, 只有操作码部分是必需存在的。其余各部分则要根据指令操 作所涉及的操作数类型、以及操作数存放在何处等因素决定 取舍。 任何一条机器指令都是由一组二进制代码构成,通常又 被进一步分成操作码部分和地址码部分,一般的指令格式如 图所示。操作码 地址码

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

8086~80286是16位的微处理器, 16位的指 令格式如图所示。

操作码 1~2字节

MOD-REG-R/M 0~1字节

位移量 0~1字节

立即数 0~2字节

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

Pentium(32位)指令的一般格式如图所示;指令前缀 指令前缀 0或1字节 段的超前前缀 0或1字节 地址大小前缀 0或1字节 操作数大小前 缀 0或1字节

操作码 1或2 字节 指令

Mod R/M 0或1 字节

SIB 0或1字节

立即数 位移量 0,1,2或4字节 0,1,2或4字节

Mod 7 6 5

Reg/OPcode 4 3 2

R/M 1 0 7

SS 6 5

Index 4 3 2

Base 1 0

由图可知,一条指令是由可任选的指令前缀(可以以任何的次序)、一个或两 由图可知,一条指令是由可任选的指令前缀(可以以任何的次序)、一个或两 )、 个原操作码字节、有可能要用的地址说明符( ModR/M字节和按比例变址基地址 个原操作码字节、有可能要用的地址说明符(由ModR/M字节和按比例变址基地址 SIB字节构成)、一个位移量 根据需要)和一个立即操作数数据字段( 字节构成)、一个位移量( SIB字节构成)、一个位移量(根据需要)和一个立即操作数数据字段(如果需要 的话)等元素组成的。 Pentium的所有指令都是如图所示的指令格式的子集 的话)等元素组成的。 Pentium的所有指令都是如图所示的指令格式的子集计算机硬件技术基础

《计算机硬件技术基础(第三版)》

1.指令前缀 .指令前缀是置于指令前面的一个或多个字 节,它的作用是用来修改指令的操作。下面所 列出的这四个指令前缀就是供应用程序使用的。 (1)指令前缀: (2)段的超前前缀: (3) 操作数大小前缀: (4)地址大小前缀:

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

2.指令中各字段意义 .(1)操作码字段 (2)Mod R/M字段 (3)SIB字段 (4)偏移量 (5)立即数

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4. 2

寻址方式

寻址方式是指微处理器获取操作数的方式。一条 指令必须说明两个问题;一是要说明这条指令要进行 什么操作,二是要说明这条指令的操作数位于何地。 一条指令可以对零个或多个操作数操作。零个操作数 的指令的例子是NOP指令(即没有数)。操作数可以 位于下列位置处: (1)指令本身有操作数;即立即操作数 (2)操作

数在寄存器中; (3)操作数在存储器中 (4)操作数在I/O端口计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4.2.1 常用寻址方式 . .1.立即操作数寻址 立即操作数寻址 是说指令本身带的数据作为一个操作数用,即指令所用的操作数是指 令自身所拥有的,像单操作数指令或两操作数指令即是这类指令。凡指令 本身所拥有的操作数就称之为立即操作数。 例如, MOV AX,1999H ;这条指令的功能是将16进制的立即操作数 1999传送到AX寄存器。由于立即操作数1999是16位的,其中存放在代码 段的高地址字节中的内容被传送到AH寄存器,低地址字节中的内容被传 送到AL寄存器,如图所示。存储器 ┋ AH 19H AL 99H 操作码 99H 19H ┋ 1380H 1381H计算机硬件技术基础

1350H 1351H

指 令

代 码 段

《计算机硬件技术基础(第三版)》

2.寄存器操作数寻址 寄存器操作数寻址 将操作数存放在32位通用寄存器中,或存 放在16位通用寄存器中,或存放在8位通用寄 存器中,并对操作数进行访问操作,称之为寄 存器操作数寻址。指令 MOV EDX,EAX ;MOV EDX , EAX 源操作数 目标操作数EAX EBX ECX EDX 1 3 9 A D 4 0 7

2 2 3 3 1 1 0 01 3 9 A

9 9 9 9 9 9 9 9D 4 0 7

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

3 存储器操作数寻址

(1)直接寻址 ) 直接寻址是一种很简单的寻址方式,虽然操作数存放在存储器内,但在 这种直接寻址方式下,操作数的有效地址是由指令直接给出。例如: MOV EAX, LISTT 这条指令的功能是,将地址LISTT处4个连续字节地址中的32位操作数 传送到寄存器EAX内。LISTT 是存储器中存储单元的符号地址,LISTT的实 际地址是1230H这个十六进制地址存储器 ┋ 80 38 6A BC EAX 8 0 3 8 6 A B C ┋计算机硬件技术基础

1233H 1232H 1231H 1230H

《计算机硬件技术基础(第三版)》

(2)寄存器间接寻址 寄存器间接寻址这种寻址方式, 寄存器间接寻址这种寻址方式,可以对存储器内的 任何存储单元的数据进行寻址,只是要借助于在BP BX, BP, 任何存储单元的数据进行寻址,只是要借助于在BP,BX, DI和SI这些寄存器内保存的偏移地址。 DI和SI这些寄存器内保存的偏移地址。 这些寄存器内保存的偏移地址 如果寄存器BX的内容是1000H 在执行MOV AX, BX的内容是1000H, 例,如果寄存器BX的内容是1000H,在执行MOV AX, [BX]指令之后 地址1000H处的字内容被传送到AX 指令之后, 1000H处的字内容被传送到AX寄存 [BX]指令之后,地址1000H处的字内容被传送到AX寄存 器中,如图所示。 器中,如图所示。存储器 ┋ 89 35 A3 D4 1003H 1002H 1001H 1000H

EAX EBX

A3 10

D4 00

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

(3) (3)基地址加变址寻址

所谓基地址加变址寻址,就是操作数位于所选的存储器段内,操作数的有 效地址由一个基地址寄存器的内容再加上一个变址寄存器的内

容构成。 通常,在基地址寄存器内保存的是位于存储器内数组的起始地址,而在变 址寄存器内保存的是数组元素的相对位置。每次BP寄存器在对存储器内的数 组进行寻址时,由BP寄存器和堆栈段寄存器两者生成有效地址。 例如:MOV EDX ,[EAX + EBX]EAX EBX ECX EDX EBP ESI EDI ESP 0 0 2 0 0020H + 102AH计算机硬件技术基础

存储器 102CH 102BH 102AH 1029H 1028H 1027H 1026H

1 0 A B

0 A A B 8 9 100AH 8 9

《计算机硬件技术基础(第三版)》

寄存器相对寻址类似于基址加变址寻址,只不过是在寄存器相对寻址 方式下,在变址寄存器或基地址寄存器的内容中,加上了一个位移量,而 形成了操作数的有效地址的值,然后是用这个有效地址的值,对存储器中 的操作数进行寻址。 操作数的有效地址是由基地址或变址寄存器的内容再加上一个8位数 值、16位数值或32位数值的位移量组成。 例如:MOV EAX, [ECX+1AH] 指令是,将数据段中由ECX寄存器上的内容,再加上1A这个数值所形成 的操作数地址中的内容传送至EAX寄存器。 指令 MOV AX,[BX+1000H]的操作过程 如图示存储器 ┋ EAX EBX AB 12 D6 00 1200H 位移量 1000H + 2200H计算机硬件技术基础

(4)寄存器相对寻址

99 45 AB D6 ┋

2203H 2202H 2201H 2200H

《计算机硬件技术基础(第三版)》

( 5)相对基地址加变址寻址相对基地址加变址寻址类似于基地址加变址寻址,它除了需要加上位 移量之外,仍然需要用基地址寄存器和变址寄存器的内容来形成操作数的 地址。也就是说,它是用基址寄存器和变址寄存器上的内容再加上位移量, 从而形成操作数在存储器中的有效地址。这种寻址方式常被用来对存储器 内的二维数组的数组元素进行寻址。例如: MOV EDX ,[EBX+ECX+200H] 图中以指令MOV EAX,[BX+SI+100H]执行过程为例,展示出用相对 基址加变址寻址方式进行寻址的操作过程。EAX EBX ECX EDX EBP ESI EDI ESP 位移量0100H + 102AH 112AH计算机硬件技术基础

存储器 2 B 1 0 5 9 0 A 2 B 5 9 100AH 0 0 2 0 0020H + 112CH 112BH 112AH 1129H 1128H 1127H 1126H

《计算机硬件技术基础(第三版)》

6) ( 6)带比例因子的变址寻址这种寻址方式是80386~Pentium所特有的,在对存储器 进行寻址操作时,要用到两个寄存器,第1个是基地址寄存器, 第2个是变址寄存器,它们均是32位的寄存器。 这种寻址,只有第2个变址寄存器才会与比例因子相乘, 变址寄存器内容乘以比例因子后,再加上位移量即可形成操 作数的32位的有效地址。 比例因子可以是1、2、4或8。比例因子为1是默认的,例 如,指令MOV AL,[EBX+ECX] 就没有在变址寄存器ECX前 面显式地乘以1。 比例因子为2用来对字数组中的数组元素进行寻址操作的 比例因子为4用来对双字数组中的数组元素进行寻址, 例如: MOV EAX ,[EBX+4*ECX] 比例因子为8用来对四字数组中的数组

元素进行寻址。计算机硬件技术基础

《计算机硬件技术基础(第三版)》

(7)基地址加比例因子变址寻址 ) 这种寻址方式是在前面所述带比例因子的 变址寻址方式的基础上,再加上一个位移量就 构成了这种寻址方式。例如: MOV [ EAX + 2 * EBX + 100H ] , DX 这条指令的功能是将16位寄存器DX之内 容存储到,由EAX内容加上EBX寄存器内容的 2倍,再加上位移量100H而生成的存储器地址。

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4.2.2.有效地址计算在指令的操作码后面有mod R/M字节时,是最常用的一种指令格式,该字节 为用户提供了灵活的寻址方式。存储器中操作数由mod R/M字节指定。被选中段 内偏移量是位移量、基地址寄存器内容、一个变址寄存器的内容乘比例因子之和。 mod R/M字节给出了有效地址的计算过程公式; 有效地址= 有效地址 段+基地址+ (变址 ×比例因子)+位移量段 (segment CS SS DS ES FS GS 基地址 (base) EAX EBX ECX EDX + ESP EBP ESI EDI 变址 比例常数 (index (scale) EAX 1 EB EC 2 ED + × — EBP 4 ESI EDI 8 位移量 (displancement) 0位移量

有效地址=

+

8位位移量

16位位移量

计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4.3 .

指令系统

指令是对计算机发出的要计算机执行部件执行某种操作的 操作命令,且由计算机直接识别执行。一般说来,一条指令对 应着计算机的一种基本操作。 8086~Pentium的指令系统分成如下几类 (1) 数据传送指令 (2) 算术运算指令 (3) 基本逻辑运算指令 (4) 控制转移指令 (5) 处理器控制指令 (6) 输入输出指令 (7) 串操作指令 (8) 新增指令计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4.3.1 数据传送类指令 . .1.通用传送类MOV指令 .通用传送类 指令 指令格式: MOV 目的操作数,源操作数 指令功能:把源操作数的内容复制到目的操作数中去。 8086~Pentium的几个MOV指令都具有同样的功能。都是把源 操作数的内容传送(复制)到目的操作数中,但不破坏源操作 数的内容。 例如: ① 从存储器将数据传送到寄存器AX ② 从寄存器将数据传送到存储器 ③ 从段寄存器将数据传送到存储器/寄存器 ④ 从存储器/寄存器将数据传送到段寄存器 ⑤ 从一个寄存器将数据传送到另一个寄存器 ⑥ 从存储器/寄存器将数据传送到寄存器 ⑦ 把立即数据传送到寄存器 ⑧ 把立即数据传送到存储器/寄存器计算机硬件技术基础

《计算机硬件技术基础(第三版)》

2.堆栈操作指令 . (1)PUSH 把操作数下压入栈 ) 指令格式: PUSH 源操作数 (2) PUSHA把全部 位通用寄存器内容下压 把全部16位通用寄存器内容下压 ) 把全部 入堆栈 指令格式: PUSHA (无操作数) (3)POP 上托堆栈字至目的寄存器 存储器 上托堆栈字至目的寄存器/存储器 ) 3. XCHG交换指令 . 交换指令 指令格式: XCHG 目的寄存器,源寄

存器/ 存储单元计算机硬件技术基础

《计算机硬件技术基础(第三版)》

4.3.2 算术运算指令又可分为加法指令,减法指令,乘法指令,除法指 令。 1.加法指令 . (1) ADD 加法指令 ) 指令格式: ADD 目的操作数,源操作数 指令功能: 两个操作数相加 例如: ① 两寄存器操作数内容相加 ② 寄存器与存储器内容相加 ③ 存储器与寄存器内容相加 ④ 立即数与寄存器内容相加 ⑤ 立即数与存储器的内容相加计算机硬件技术基础

《计算机硬件技术基础(第三版)》第4章 指令系统.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219