第3章 8086_Pentium指令系统(1)

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

3
指令系统
指令系统:一台计算机全部指令的集合。
4
指令执行时间
总时间=基本执行时间 + 计算有效地址的时间 + 读取内存的时间 字操作数在内存的存放格式也是影响一条指令执行时间的因素。
5
对于16位数据,操作 数存放地址对指令执 行会产生影响。 8086数据总线的传输特性 : (a)读写偶地址字 (b) 读写偶地址字节 (c) 读写奇地址字节 (d) 读写奇地址字 当16位操作数存放在偶数 地址时,存取时间=1个机 器周期,否则需要2个机器 周期
23
指令的书写格式 MOV AL, [SI+1000H] 22700H 34H MOV AL,1000H[SI] 22701H 12H MOV AL,[SI]+1000H 三种格式是相同的。 ① 可使用的变址寄存器: SI,DI,BX,BP ② 使用 SI,DI,BX 这时默认的段寄存器为DS, PA=(DS)*10H+EA 例如 MOV AX,[SI+1200H] 假设(DS)=2000h,(SI) =1500h 假设地址为22700H的存储单元的内容:34H,12H。 PA=2000h*10h+1500h+1200h=22700h,从22700H存储单元取 16位数据送到AX寄存器。 指令执行完毕, (AX)=1234H
13
地址操作数
这类操作数是与程序转移地址有关的操作数, 这类操作数是与程序转移地址有关的操作数,即指令中要 操作的对象不是数据,而是要转移的目的地址。 操作的对象不是数据,而是要转移的目的地址。 地址操作数也可分为立即数操作数、 地址操作数也可分为立即数操作数、寄存器操作数和存储 器操作数,即要转移的目的地址包含在指令中, 器操作数,即要转移的目的地址包含在指令中,或存放在寄存 器中,或存放在存储器单元之中。 器中,或存放在存储器单元之中。
(2) 寄存器间接寻址
存储器的地址存放在寄存器中。 注意与前面的存储器寻址的区别! 例:MOV AX,[BX] ; BX的内容是操作数的有效地址。 注: ① 可以使用的寄存器:BX, BP, SI, DI ② 若是用BX,SI,DI,段寄存器默认DS,默认的是数据段, 若是用BP,段寄存器默认SS,则默认的是寻址堆栈段 ③ 可以用段超越前缀强制使用某个制定的段。 例如 MOV AX , [BP] ;使用堆栈段,物理地址 ; PA=(SS)*10H+(BP) 注:PA表示物理地址,EA表示有效地址(段内偏移地量)
12
数据操作数 这类操作数是与数据有关的操作数, 这类操作数是与数据有关的操作数,即指令中要操作的对 象是数据。数据操作数又可分为立即数操作数、寄存器操作数、 象是数据。数据操作数又可分为立即数操作数、寄存器操作数、 I/O操作数 存储器操作数。 操作数、 I/O操作数、存储器操作数。
立即数操作数: 立即数操作数:要操作的数据包含在指令中 寄存器操作数:要操作的数据存放在指定的寄存器中。 寄存器操作数:要操作的数据存放在指定的寄存器中。 存储器操作数:要操作的数据存放在指定的存储器中。 存储器操作数:要操作的数据存放在指定的存储器中。 I/O操作数:要操作的数据来自或送到I/O端口。 I/O操作数:要操作的数据来自或送到I/O端口。 操作数 I/O端口
6
3.1 8086的寻址方式和指令系统 汇编语言指令要解决的两个问题: 要指出进行什么操作——操作符; 要指出操作数和操作结果放在何处——寻址方式。
寻址方式
包括两大类: (1)操作数的存放地址; (2)下一条要执行的指令的地址。 下面讨论的是操作数的寻址。 按照操作数的来源:指令中、寄存器中、存储器中、I/O端口, 又分为: 立即数寻址 寄存器寻址 输入/输出端口寻址 存储器寻址——存储器寻址有有若干种不同的方法。
10
根据操作数的个数,指令格式可分为以下几种: 根据操作数的个数,指令格式可分为以下几种: ① 零操作数指令 指令格式中没有操作数或操作数是隐含约定的。 指令格式中没有操作数或操作数是隐含约定的。 ② 一操作数指令 指令格式中有一个操作数,或还有一个隐含的操作数( 指令格式中有一个操作数,或还有一个隐含的操作数(实际 上是双操作数)。 上是双操作数)。 ③ 二操作数指令 指令中有两个操作数,其中一个为目的操作数, 指令中有两个操作数,其中一个为目的操作数,另一个为源 操作数。 操作数。 对于运算类指令, 个源操作数,一个目的操作数, 对于运算类指令,2个源操作数,一个目的操作数,往往目 的操作数和一个源操作数都是累加器。 的操作数和一个源操作数都是累加器。
22
(3) 寄存器相对寻址 )
有效地址是指令指定的寄存器的类容与一个偏移量之和。 有效地址是指令指定的寄存器的类容与一个偏移量之和。 EA=寄存器内容 指令给出的位移量D EA=寄存器内容 + 指令给出的位移量D D可以是8位,也可以是16位的立即数。 可以是 也可以是16位的立即数。 位的立即数 可以认为它是直接寻址和寄存器简介寻址的结合。 可以认为它是直接寻址和寄存器简介寻址的结合。 例如 MOV [BX BX] AX, 0100H [BX] ;EA=(BX)+0100H EA=(BX)+0100H BX ;PA=(DS)*16+EA 上述指令也可以写成: 上述指令也可以写成: AX,[BX+100H BX+100H) MOV AX,[BX+100H) 有时又叫变址寻址。 有时又叫变址寻址。
20
(1)直接寻址 )
指令中直接给出存储器的地址。 例: MOV AX, [1234H] ;地址用方括号括起来 MOV 92345H],BL 如果(DS)=1000H,则从 11234H取数送AX 默认段:DS。 可以强制使用其他段——使用段超越前缀 例: MOV AX, ES:[1000H]
21
1. 端口只能与AX,AL 寄存器传送 2. 直接寻址空间 0~255
注意:端口编号不大于0FFH 1. 端口只能与AX,AL寄存 器传送 2. 地址寄存器只能使用DX, 寻址空间0~65535
19
4. 存储器寻址
操作数存放在存储器中,根据获取存储器地址的不同,又分为多 种寻址方式。 注意存储器是分段管理的。
操作码
寻址方式与 寄存器号
位移量/ 立即数
位移量/ 立即数
立即数
立即数
第1字节
第2字节
第3字节
第4字节
第5字节
第6字节
15
8086/ 8088指令编码由 指令编码由1 个字节组成, 8086 / 8088 指令编码由 1 ~ 6 个字节组成 , 它包括操作码 第一字节) 寻址方式(第二字节)和操作数( ( 第一字节 ) 、 寻址方式 ( 第二字节 ) 和操作数 ( 第三到第六 字节)三部分组成。 字节)三部分组成。
24
③ 使用BP时 这时默认的段寄存器为SS, PA=(SS)*10H+EA 例如 MOV 2100H[BP],AX 假设(SS)=3000H,(BP)=2000H PA=3000H*10H+2100H+2000H=34100H 执行该指令,是将AX的内容送到34100H存 储单元保存。 允许段超越——利用段超越前缀制定段寄存器
11
由此可见,操作数可分为源操作数和目的操作数。 由此可见,操作数可分为源操作数和目的操作数。 源操作数:需要处理的数据,它是要读取的操作数。 源操作数:需要处理的数据,它是要读取的操作数。 目的操作数:它是对源操作数处理的结果,写入( 目的操作数:它是对源操作数处理的结果,写入(存放操作结 的操作数。 果)的操作数。 在许多情况下,有一个特殊的寄存器,它既是源操作数, 在许多情况下,有一个特殊的寄存器,它既是源操作数,有保 存结果(目的操作数)——累加器AX。 累加器AX 存结果(目的操作数)——累加器AX。 操作数又可分为两大类:数据操作数和地址操作数。 操作数又可分为两大类:数据操作数和地址操作数。
9
(1) 操作码:表示指令操作类型; 操作码:表示指令操作类型; 例如做加法,从内存中读取数据, 例如做加法,从内存中读取数据,或将数据输出到 输出端口等。 输出端口等。
(2) 操作数:给出指令所需操作数或操作数的地址; 操作数:给出指令所需操作数或操作数的地址; 操作数可以有一个,也可以有两个,一个源操作数,一 操作数可以有一个,也可以有两个,一个源操作数, 个目的操作数。 个目的操作数。
opcode opcode Mod字节 Mod字节 opcode Mod字节 Data/disp Mod字节
Data 立即数 disp 位移量
opcode Mod字节 Data/disp(低) Data/disp(高) Mod字节 Data/disp(低 Data/disp(高 opcode Mod字节 disp(低) disp(高) Mod字节 disp(低 disp(高
第3章 16位和32位微处理器的指令系统
本章基本要求
(1)8086的指令 指令与指令系统 汇编语言的寻址方式 8086的指令及其用法 数据传送 算术运算指令22 逻辑运算指令与移位指令 串操作指令 程序控制指令 (2)Pentium指令 与8086指令的兼容性,区别 新扩展的指令简介
指令
指挥计算机执行某种操作的命令。 它包含的内容: (1)做什么? (2)到哪去取所需要的数据,结果存放到哪里。 指令在计算机内部用二进制代码表示。 有二进制表示的指令——机器指令。 机器指令是计算机唯一能直接执行的指令。
Data
opcode Mod字节 disp(低) disp(高) Data(低) Data(高) Mod字节 disp(低 disp(高 Data(低 Data(高
操作码部分 寻址方式部分
操作数部分
16
3.1.2 3.1.2
8086的寻址方式 8086的寻址方式
1. 立即数寻址 操作数直接包含在指令中。 操作数直接包含在指令中。 立即数有8位和 位和16位 立即数有 位和 位。 例: MOV AL , 80H ;源操作数为立即寻址方式 指令执行后, ;指令执行后,AL=05H, , 例: MOV AX ,3064H ;源操作数为立即寻址 指令执行后, ;指令执行后,X=3064H。 。 立即数寻址,主要是对寄存器赋值,操作数是常数。 立即数寻址,主要是对寄存器赋值,操作数是常数。
8
3.1.1 指令格式
指令及其格式 指令是指挥计算机执行某种操作的命令。 指令是指挥计算机执行某种操作的命令。 是指挥计算机执行某种操作的命令 指令系统就是计算机全部指令的集合。 指令系统就是计算机全部指令的集合。 就是计算机全部指令的集合 指令在计算机内部是一组二进制编码。通常, 指令在计算机内部是一组二进制编码。通常,它 需要告诉计算机要执行什么操作,如果需要数据, 需要告诉计算机要执行什么操作,如果需要数据,要 给出数据或数据的存放地址。 给出数据或数据的存放地址。 指令的基本格是: 指令的基本格是: 操作码 或叫地址码 操作数
2. 寄存wenku.baidu.com寻址
操作数存放在CPU内部寄存器——寄存器寻址方式。 比如: INC CX ;将CX的内容加1 ROL AH,1 ;将AH中的内容循环左移一位
AX,3064H MOV AX,3064H
;目的操作数是寄存器寻址
3. 输入输出端口寻址
与外设之间的数据传送。 (1)I/O端口直接寻址 指令中直接给出I/O端口地址。 例: IN AL, 82H ; ; OUT 80H, AX (2) I/O端口间接寻址 端口地址在寄存器DX中。 例: IN AL,DX OUT DX, AX
14
指令在计算机中使用二进制编码来表示的。 指令在计算机中使用二进制编码来表示的。
一条指令中的信息按其含义分成若干个信息段,每一信 一条指令中的信息按其含义分成若干个信息段, 息段占一个字节或多个字节, 且按一定的顺序排列, 息段占一个字节或多个字节 , 且按一定的顺序排列 , 这便于 CPU解释执行。 CPU解释执行。 解释执行 8086/8088CPU的指令系统,它采用1 CPU的指令系统 如 8086 / 8088CPU 的指令系统 , 它采用 1 ~ 6 个指令字节 的变字长指令格式: 的变字长指令格式:
相关文档
最新文档