计算机微机原理8086指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
1. 通用寄存器
8086的16位通用寄存器是: AX BX CX DX SI DI BP SP 其中前4个数据寄存器都还可以分成高8位和低8位 两个独立的寄存器 8086的8位通用寄存器是: AL BL CL DL(低8位) AH BH CH DH(高8位 ) 对其中某8位的操作,并不影响另外对应8位的数 据
在8086处理器上执行的程序或任务都有一组执行
指令的资源用于存储代码、数据和状态信息。这
些资源构成了8086处理器的执行环境。
11
2.3.1基本执行环境概要
地址空间
基本程序执行寄存器
堆栈 I/O端口
12
2.3.2 基本的程序执行寄存器 寄存器是微处理器内部暂存数据的存储单
元,以名称表示。
8086微处理内部共有14个寄存器: ① ② ③ ④ 8个通用寄存器 1个指令指针寄存器 1个标志寄存器 4个段寄存器
OF DF IF TF SF ZF
图2-7 FLAGS寄存器
AF
PF
CF
16
(1)状态标志位
记录算术和逻辑运算结果的一些特征。由微处理器根据 计算的结果自动设置。为转移指令提供转移控制条件。 (1)符号标志位SF( Sign Flag,位7)
与运算结果的最高位相同。
(2)零标志位ZF( zero flag,位6) 如运算结果为0,则ZF=1,否则,ZF=0。 (3)溢出标志OF( overflow flag,位11) 当算术运算结果超出了机器能表示的范围称为溢出,此 时OF=1,否则OF=0。
40
四个段的用途
代码段:存放当前正在运行程序。 数据段:存放当前正在运行程序所用的数据。 堆栈段:堆栈是一种数据结构,它开辟了一 个比较特殊的存储区,并以“后进先出”的 方式来访问这一区域。 附加段:是附加的数据段,也用于数据的保存, 同时也是串处理指令的目的操作数存放区。
17
整数范围
无符号数整数 8个二进制位表达无符号数整数的范围:0~255 16位表达的范围:0~65535 有符号数整数(处理器内部以补码表示) 8个二进制位表达有符号数整数的范围:-128~+127 16位表达的范围:-32768~+32767
18
溢出的判断
判断运算结果是否溢出有一个简单的规则: 只有当两个相同符号数相加(包括不同符号数相 减),而运算结果的符号与原数据(包括减法的 被减数)符号相反时,产生溢出;因为,此时的 运算结果显然不正确 即:(+)+(+)=(-) (-)+(-)=(+) OF=1 (+)-(-)=(-) (-)-(+)=(+) 其他情况下,则不会产生溢出
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
5
8086是x86系列系列处理器的基础。学 习x86系列处理器必须学习掌握8086,也只 能从8086入手。本书从8086入手来学习与 掌握x86系列处理器。 本书重点介绍8086微处理器的结构、指 令、汇编语言及相应的外设接口。
BACK
6
2.2 8086的功能结构
功能结构: 指从程序员和使用者的角度看 到的结构,按其功能来划分。
8086从功能上分成两大部分: 总线接口单元BIU(Bus Interface Unit) 执行单元EU (Execution Unit)
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
31
8086存储器的分段结构
Intel 8086微处理器采用了分段的方法对存储器进行 管理。
32
问题的提出
字长为16位的CPU能计算的最大存储器空
间为216=65536=64K,但8086CPU有20根地
址线,可以接上最大存储容量为
220=210*210=1024K=1M个存储单元,那么
字长为16位的CPU如何能访问完这1M个字
36
逻辑地址表示形式
分段后在用户编程时,采用逻辑地址,形式为 段地址:段内偏移地址
分隔符
37
物理地址和逻辑地址的转换
将逻辑地址中的段地址左移4位,加上偏移 地址就得到20位物理地址 一个物理地址可以有多个逻辑地址
16 位 段 地 址
0000
+
16 位 偏 移 地 址
20 位 物 理 地 址
物理地址的形成是通过微处理器的总线接口单 元BIU中的地址加法器实现的。
78H 56H 12H
34H
00002H
00001H 00000H
低地址
29
存储单元及其存储内容
每个存储单元都有一个编号,被称为存储 器物理地址(简称PA) 每个存储单元存放一个字节的内容
Fra Baidu bibliotek
00002H单元存放有一个数据34H 表达为 (00002H)=34H
30
多字节数据存放方式
多字节数据在存储器中占连续的多个存储单元: ①存放时,低字节存入低地址,高字节存入高 地址(低对低,高对高); ②表达时,用它的低地址表示多字节数据占据 的地址空间。 上图中00002H“字”单元的内容为: (00002H) = 1234H 00002H“双字”单元的内容为: (00002H) = 78561234H
19
状态标志位
(4)进位标志位CF(carry flag,位0) 如运算时最高位产生进位或借位,则CF=1,否则, CF=0。 (5)辅助进位标志位AF( auxiliary flag,位4) 如果第三位往第四位有进位或借位,则AF=1,否则, AF=0。
20
状态标志位
(6)奇偶标志位PF(parity flag,位2) 若运算结果的低8位中所含的1的个数为偶数,则 PF=1,否则,PF=0。
25
4、指令指针寄存器IP
指令指针寄存器IP(Instruction Pionter) 总是存放下一条要执行指令在当前代码段中的偏移地 址。 注意:用户程序不能直接访问指令指针寄存器。
26
2.3.3存储器组织
存储器是微处理器外部存放程序及其数据的 空间 程序及其数据可以长久存放在外存,在程序 需要时才进入主存 主存需要利用地址区别
功能: 负责指令的执行。
9
8位微处理器与8086执行程序的方式
取指令→执行→取指令→执行...(串行工作) 时间 图2-2 取指 8位微处理器的执行顺序 取指 取指 . . . .
取指 取指
(并行工作)
等待 时间 图2-3 8086的执行顺序
10
执行
执行
执行
. . . .
2.3 8086微处理器的执行环境
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
本章内容
2.1 80x86系列微处理器是8086的延伸
2.2 8086的功能结构
2.3 8086微处理器的执行环境
1
2.1 80x86系列结构微处理器与8086
80x86系列结构微处理器已经经历许多代, 但从使用者(包括程序员)的角度来看, 它是以8086处理器为基础,是一个兼容 的微处理器系列,是8086在功能上 和性能上的延伸。
34
段地址和偏移地址 段起始地址的高16位。存 段地址(16位): 放在段寄存器中。 段地址说明逻辑段在主存中的起始位置。
偏移地址(16位): 在段内相对于段起始地址的偏 移值,取决于指令的寻址方式。
35
物理地址和逻辑地址概念
物理地址(20位): 也叫实际地址或绝对地址,是 CPU访问存储器时实际使用的 地址,由20位二进制表示。 CPU需要访问存储器时,采用物理地址。20位 物理地址在地址总线上传输。 逻辑地址: 是程序中使用的地址,它由段地址和段内偏 移地址所组成,段地址与段内偏移地址都为 16位的二进制数。
2
2.1.1 8086功能的扩展 1. 从16位扩展为32位 2. 从实模式至保护模式 x86结构微处理器有两种主要的工作方式: 实地址方式 和保护虚地址方式。 实地址方式是为了与8086兼容而设置的方式。 在实地址方式下,具有32条地址线的x86结构微处理器 只有低20条地址线起作用,能寻址1MB的物理地址;此 时,x86系列结构微处理器相当于一个快速的8086,虽 然可以使用32位的数据寄存器,但远不能充分发挥x86 结构微处理器的全部功能。
23
溢出和进位 溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围, 运算结果仍然正确; 溢出标志表示有符号数运算结果是否超出范围, 有溢出,说明有符号数的运算结果不正确。
24
如何运用溢出和进位 应该利用哪个标志,则由程序员来决定。也 就是说,如果将参加运算的操作数认为是无 符号数,就应该关心进位标志;如果认为是 有符号数,则要注意溢出标志。
节的存储空间呢?
33
解决方法
把1M字节的存储器的地址分成若干个逻辑段 (Segments),每个段的大小根据需要决定, 最大为64KB,这样,段内地址可以用16位二 进制表示(216=64K)。
IBM-PC机对段的起始地址有所限制, 段不能 起始于任意地址,段的起始地址必须满足:在 十六进制表示的地址中,最低位是0,在二进 制表示的地址中,最低4位是0。
4
2.1.1 8086功能的扩展(续) 4. 浮点支持 早期的计算机CPU不具备浮点运算能 力, 从16位微 处理器开始,在16位微处理器的基础上设计了与之相 配合的专门用于浮点运算的协处理器---FPU:Float Point Unit,浮点运算单元 以前的FPU是一种单独芯片,如8087、80287、80387分 别与8086/8088、80286、80386配合使用。 在486之后, 英特尔把FPU与集成在CPU之内。
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
28
数据的存储格式
D7 D0
地址
00006H 00005H 00004H 00003H
⑦ SP (Stack Pointer)为堆栈指针寄存器
⑧ BP (Base Pointer)为基址指针寄存器
指 针 寄 存 器
15
3、 FLAGS(标志)寄存器
16位FLAGS寄存器包含一组状态标志、一个控制标志 和两个系统标志。图2-7定义了此寄存器中的标志。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作
21
(2)控制标志位
由程序员根据需要用指令来设置。
方向标志DF(Direction Flag,位10)
用于串操作指令中,以控制地址的变化方向。第3章介 绍!
22
(3)系统标志
中断允许标志IF(Interrupt-enable Flag,位9) 用于控制外部可屏蔽中断是否可以被处理器响 应,第8章介绍! 由程序员根据需要用指令来设置。 追踪标志TF(Trace Flag,位8) 用于控制处理器是否进入单步方操作式
3
2.1.1 8086功能的扩展(续)
保护虚地址方式是IA-32结构微处理器的主要工作方 式,在此方式下,全部32条地址线都能寻址,故可 寻址高达4GB的物理存储器
3. 片内存储管理单元 ( MMU) 内存在计算机中的作用很大,电脑中所有运行的程序 都需要经过内存来执行,如果执行的程序很大或很多, 就会导致内存消耗殆尽。为了解决这个问题, Windows中运用了虚拟内存技术,即拿出一部分硬盘 空间来充当内存使用,当内存占用完时,电脑就会自 动调用硬盘来充当内存,以缓解内存的紧张。
1. 通用寄存器
8086的16位通用寄存器是: AX BX CX DX SI DI BP SP 其中前4个数据寄存器都还可以分成高8位和低8位 两个独立的寄存器 8086的8位通用寄存器是: AL BL CL DL(低8位) AH BH CH DH(高8位 ) 对其中某8位的操作,并不影响另外对应8位的数 据
在8086处理器上执行的程序或任务都有一组执行
指令的资源用于存储代码、数据和状态信息。这
些资源构成了8086处理器的执行环境。
11
2.3.1基本执行环境概要
地址空间
基本程序执行寄存器
堆栈 I/O端口
12
2.3.2 基本的程序执行寄存器 寄存器是微处理器内部暂存数据的存储单
元,以名称表示。
8086微处理内部共有14个寄存器: ① ② ③ ④ 8个通用寄存器 1个指令指针寄存器 1个标志寄存器 4个段寄存器
OF DF IF TF SF ZF
图2-7 FLAGS寄存器
AF
PF
CF
16
(1)状态标志位
记录算术和逻辑运算结果的一些特征。由微处理器根据 计算的结果自动设置。为转移指令提供转移控制条件。 (1)符号标志位SF( Sign Flag,位7)
与运算结果的最高位相同。
(2)零标志位ZF( zero flag,位6) 如运算结果为0,则ZF=1,否则,ZF=0。 (3)溢出标志OF( overflow flag,位11) 当算术运算结果超出了机器能表示的范围称为溢出,此 时OF=1,否则OF=0。
40
四个段的用途
代码段:存放当前正在运行程序。 数据段:存放当前正在运行程序所用的数据。 堆栈段:堆栈是一种数据结构,它开辟了一 个比较特殊的存储区,并以“后进先出”的 方式来访问这一区域。 附加段:是附加的数据段,也用于数据的保存, 同时也是串处理指令的目的操作数存放区。
17
整数范围
无符号数整数 8个二进制位表达无符号数整数的范围:0~255 16位表达的范围:0~65535 有符号数整数(处理器内部以补码表示) 8个二进制位表达有符号数整数的范围:-128~+127 16位表达的范围:-32768~+32767
18
溢出的判断
判断运算结果是否溢出有一个简单的规则: 只有当两个相同符号数相加(包括不同符号数相 减),而运算结果的符号与原数据(包括减法的 被减数)符号相反时,产生溢出;因为,此时的 运算结果显然不正确 即:(+)+(+)=(-) (-)+(-)=(+) OF=1 (+)-(-)=(-) (-)-(+)=(+) 其他情况下,则不会产生溢出
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
5
8086是x86系列系列处理器的基础。学 习x86系列处理器必须学习掌握8086,也只 能从8086入手。本书从8086入手来学习与 掌握x86系列处理器。 本书重点介绍8086微处理器的结构、指 令、汇编语言及相应的外设接口。
BACK
6
2.2 8086的功能结构
功能结构: 指从程序员和使用者的角度看 到的结构,按其功能来划分。
8086从功能上分成两大部分: 总线接口单元BIU(Bus Interface Unit) 执行单元EU (Execution Unit)
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
31
8086存储器的分段结构
Intel 8086微处理器采用了分段的方法对存储器进行 管理。
32
问题的提出
字长为16位的CPU能计算的最大存储器空
间为216=65536=64K,但8086CPU有20根地
址线,可以接上最大存储容量为
220=210*210=1024K=1M个存储单元,那么
字长为16位的CPU如何能访问完这1M个字
36
逻辑地址表示形式
分段后在用户编程时,采用逻辑地址,形式为 段地址:段内偏移地址
分隔符
37
物理地址和逻辑地址的转换
将逻辑地址中的段地址左移4位,加上偏移 地址就得到20位物理地址 一个物理地址可以有多个逻辑地址
16 位 段 地 址
0000
+
16 位 偏 移 地 址
20 位 物 理 地 址
物理地址的形成是通过微处理器的总线接口单 元BIU中的地址加法器实现的。
78H 56H 12H
34H
00002H
00001H 00000H
低地址
29
存储单元及其存储内容
每个存储单元都有一个编号,被称为存储 器物理地址(简称PA) 每个存储单元存放一个字节的内容
Fra Baidu bibliotek
00002H单元存放有一个数据34H 表达为 (00002H)=34H
30
多字节数据存放方式
多字节数据在存储器中占连续的多个存储单元: ①存放时,低字节存入低地址,高字节存入高 地址(低对低,高对高); ②表达时,用它的低地址表示多字节数据占据 的地址空间。 上图中00002H“字”单元的内容为: (00002H) = 1234H 00002H“双字”单元的内容为: (00002H) = 78561234H
19
状态标志位
(4)进位标志位CF(carry flag,位0) 如运算时最高位产生进位或借位,则CF=1,否则, CF=0。 (5)辅助进位标志位AF( auxiliary flag,位4) 如果第三位往第四位有进位或借位,则AF=1,否则, AF=0。
20
状态标志位
(6)奇偶标志位PF(parity flag,位2) 若运算结果的低8位中所含的1的个数为偶数,则 PF=1,否则,PF=0。
25
4、指令指针寄存器IP
指令指针寄存器IP(Instruction Pionter) 总是存放下一条要执行指令在当前代码段中的偏移地 址。 注意:用户程序不能直接访问指令指针寄存器。
26
2.3.3存储器组织
存储器是微处理器外部存放程序及其数据的 空间 程序及其数据可以长久存放在外存,在程序 需要时才进入主存 主存需要利用地址区别
功能: 负责指令的执行。
9
8位微处理器与8086执行程序的方式
取指令→执行→取指令→执行...(串行工作) 时间 图2-2 取指 8位微处理器的执行顺序 取指 取指 . . . .
取指 取指
(并行工作)
等待 时间 图2-3 8086的执行顺序
10
执行
执行
执行
. . . .
2.3 8086微处理器的执行环境
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
本章内容
2.1 80x86系列微处理器是8086的延伸
2.2 8086的功能结构
2.3 8086微处理器的执行环境
1
2.1 80x86系列结构微处理器与8086
80x86系列结构微处理器已经经历许多代, 但从使用者(包括程序员)的角度来看, 它是以8086处理器为基础,是一个兼容 的微处理器系列,是8086在功能上 和性能上的延伸。
34
段地址和偏移地址 段起始地址的高16位。存 段地址(16位): 放在段寄存器中。 段地址说明逻辑段在主存中的起始位置。
偏移地址(16位): 在段内相对于段起始地址的偏 移值,取决于指令的寻址方式。
35
物理地址和逻辑地址概念
物理地址(20位): 也叫实际地址或绝对地址,是 CPU访问存储器时实际使用的 地址,由20位二进制表示。 CPU需要访问存储器时,采用物理地址。20位 物理地址在地址总线上传输。 逻辑地址: 是程序中使用的地址,它由段地址和段内偏 移地址所组成,段地址与段内偏移地址都为 16位的二进制数。
2
2.1.1 8086功能的扩展 1. 从16位扩展为32位 2. 从实模式至保护模式 x86结构微处理器有两种主要的工作方式: 实地址方式 和保护虚地址方式。 实地址方式是为了与8086兼容而设置的方式。 在实地址方式下,具有32条地址线的x86结构微处理器 只有低20条地址线起作用,能寻址1MB的物理地址;此 时,x86系列结构微处理器相当于一个快速的8086,虽 然可以使用32位的数据寄存器,但远不能充分发挥x86 结构微处理器的全部功能。
23
溢出和进位 溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围, 运算结果仍然正确; 溢出标志表示有符号数运算结果是否超出范围, 有溢出,说明有符号数的运算结果不正确。
24
如何运用溢出和进位 应该利用哪个标志,则由程序员来决定。也 就是说,如果将参加运算的操作数认为是无 符号数,就应该关心进位标志;如果认为是 有符号数,则要注意溢出标志。
节的存储空间呢?
33
解决方法
把1M字节的存储器的地址分成若干个逻辑段 (Segments),每个段的大小根据需要决定, 最大为64KB,这样,段内地址可以用16位二 进制表示(216=64K)。
IBM-PC机对段的起始地址有所限制, 段不能 起始于任意地址,段的起始地址必须满足:在 十六进制表示的地址中,最低位是0,在二进 制表示的地址中,最低4位是0。
4
2.1.1 8086功能的扩展(续) 4. 浮点支持 早期的计算机CPU不具备浮点运算能 力, 从16位微 处理器开始,在16位微处理器的基础上设计了与之相 配合的专门用于浮点运算的协处理器---FPU:Float Point Unit,浮点运算单元 以前的FPU是一种单独芯片,如8087、80287、80387分 别与8086/8088、80286、80386配合使用。 在486之后, 英特尔把FPU与集成在CPU之内。
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
28
数据的存储格式
D7 D0
地址
00006H 00005H 00004H 00003H
⑦ SP (Stack Pointer)为堆栈指针寄存器
⑧ BP (Base Pointer)为基址指针寄存器
指 针 寄 存 器
15
3、 FLAGS(标志)寄存器
16位FLAGS寄存器包含一组状态标志、一个控制标志 和两个系统标志。图2-7定义了此寄存器中的标志。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作
21
(2)控制标志位
由程序员根据需要用指令来设置。
方向标志DF(Direction Flag,位10)
用于串操作指令中,以控制地址的变化方向。第3章介 绍!
22
(3)系统标志
中断允许标志IF(Interrupt-enable Flag,位9) 用于控制外部可屏蔽中断是否可以被处理器响 应,第8章介绍! 由程序员根据需要用指令来设置。 追踪标志TF(Trace Flag,位8) 用于控制处理器是否进入单步方操作式
3
2.1.1 8086功能的扩展(续)
保护虚地址方式是IA-32结构微处理器的主要工作方 式,在此方式下,全部32条地址线都能寻址,故可 寻址高达4GB的物理存储器
3. 片内存储管理单元 ( MMU) 内存在计算机中的作用很大,电脑中所有运行的程序 都需要经过内存来执行,如果执行的程序很大或很多, 就会导致内存消耗殆尽。为了解决这个问题, Windows中运用了虚拟内存技术,即拿出一部分硬盘 空间来充当内存使用,当内存占用完时,电脑就会自 动调用硬盘来充当内存,以缓解内存的紧张。