第二章 80X86微处理器PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ 寄存器 ❖ 存储器分段及地址 ❖ 堆栈 ❖ 微处理器的工作模式 ❖ 发展新技术
1
31
EAX EBX ECX EDX ESP EBP ESI EDI
EIP EFLAGS
15
0
AH AL AX BH BL BX CH CL CX DH DL DX
SP BP SI DI
IP FLAGS
CS DS ES SS FS GS
❖ 堆栈的操作特点:
❖ 实模式下的堆栈为16位宽(字宽),堆栈操作指令(PUSH 指令或POP指令)对堆栈的操作总是以字为单位进行。 即要压栈(执行PUSH指令)时,先将SP的值减2,然后 将16位的信息压入新的栈顶; 要弹栈(执行POP指令)时, 先从当前栈顶取出16位的信息,然后将SP的值加2。可 概括为: “压栈时, 先修改栈指针后压入”, “弹 栈时, 先弹出后修改栈指针”。
8
FFFFFH
FFFF0H FFFEFH
专用区
通用区
00400H 003FFH
00000H
专用区
实模式下存储器地址空间
9
❖ 为什麽要采用存储器“分段”技术?
实模式下CPU可直接寻址的地址空间为220=1M字节 单元。CPU需输出20位地址信息才能实现对1M字节单 元存储空间的寻址。但实模式下CPU中所使用的寄存 器均是16位的,内部ALU也只能进行16位运算,其寻 址范围局限在216=65536(64K)字节单元。为了实现对 1M字节单元的寻址,80x86系统采用了存储器分段技 术。 ❖ 各个逻辑段在实际的存储空间中可以完全分开,也可
堆栈的结构:
❖ 堆栈是在存储器中实现的,并由堆栈段寄存器SS和堆栈
指针寄存器SP来定位。SS寄存器存放堆栈段的段基值,
它确定了堆栈段的起始位置。SP寄存器中存放堆栈操作
单元的偏移量,SP总是指向栈顶。图给出了堆栈的基本
结构及操作示意图。
18
低地址
存储器 (字宽)
SS
SS
SS
SP 高地址
(a) 空栈堆
21
实模式
80286以上的微处理器所采用的8086的工作模式。 在实模式下,采用类似于8086的体系结构,其寻址
机制、中断处理机制均和8086相同;物理地址的形成 也同8086一样:将段寄存器的内容左移四位再与偏移 地址相加。
寻址空间为1MB,并采用分段方式,每段大小为 64KB(216);此外,在实模式下,存储器中保留两个专 用区域,一个为初始化程序区:FFFF0H~FFFFFH, 存放进入ROM引导程序的一条跳转指令;另一个为中 断向量表区:00000H~003FFH,在这1K字节的存储 空间中存放256个中断服务程序的入口地址,每个入口 地址占4个字节,这与8086的情形相同。
“溢出”与“进位”是两种不同的概念。某次运算结果有 “溢出”,不一定有“进位”;反之,有“进位”,也 不一定发生“溢出”。另外,“溢出”标志实际上是针 对有符号数运算而言,对于无符号数运算,不考虑溢出 6 标志。
例:指出80x86CPU执行如下指令后,标志寄存器中各状态 标志位的值:
(1) MOV AX,32C5H
需注意的是,每个存储单元有惟一的物理地址,但 它可以由不同的“段基值”和“偏移量”转换而来,这 只要把段基值和偏移量改变为相应的值即可。也就是说, 同一个物理地址可以由不同的逻辑地址来构成。或者说, 同一个物理地址与多个逻辑地址相对应。 例如,段基值为0020H,偏移量为0013H,构成的物理 地址为00213H;然而,若段基值改变为0021H,配以新 的偏移量0003H,其物理地址仍然是00213H,如图所示。
80x86/Pentium处理器的寄存器模型
2
❖ EIP是一个专用寄存器,用于寻址当前需要 取出的指令字节。当CPU从内存中取出一个指 令字节后,EIP就自动加1,指向下一指令字节。 当微处理器工作在实模式下时,这个寄存器为 IP(16位);当80386及更高型号的微处理器工作 于保护模式下时,则是EIP(32位)。
14
物理地址
.
逻辑地址
段基值 (0021H)
.
偏移量(03H)
偏移量 (13H)
段基值 (0020H)
一个物理地址对应多个逻辑地址
00213H 00212H 00211H 00210H 0020FH 0020EH 0020DH 0020CH 0020BH 0020AH 00209H 00208H 00207H 00206H 00205H 00204H 00203H 00202H 00201H 00200H
15
还需指出的是,在这种“段加偏移”的寻址机制中,由 于是将段寄存器的内容左移4位(相当于乘以十进制数16)来 作为段的起始地址的,所以实模下各个逻辑段只能起始于 存储器中16字节整数倍的边界。这样可以简化实模式下 CPU生成物理地址的操作。通常称这16字节的小存储区域 为“分段”或“节”(paragraph)。
❖ 程序员不能对EIP/IP进行存取操作。程序中 的转移指令、返回指令以及中断处理能对 EIP/IP进行操作。
3
8086/8088标志寄存器的格式及各位的功能
.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF
AF
PF
CF
方向标志
控 制
中断标志
(2) MOV AX,0E453H
ADD AX,546AH
ADD AX,0C572H
解 (1)00101 (2)11111
+ 01010
+ 11010
11111
10101
所以, OF=1 SF=1 ZF=0
AF=0 PF=0 CF=0
OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1
7
实模式下的存储器地址空间
数据地址 串操作目的地址
表2默认的32位“段+偏移”寻址组合
段寄存器 偏移地址寄存器
CS
EIP
SS
ESP或EBP
DS
EAX、EBX、ECX、EDX、EDI、ESI、8位(16
位或32位)数
ES
串操作指令的EDI
FS
无默认
GS
无默认
主要用途 指令地址 堆栈指针 数据地址
串操作目的地址 一般地址 一般地址
22
实模式是80x86处理器在加电或复位后立即出现的工 作方式,即使是想让系统运行在保护模式,系统初始 化或引导程序也需要在实模式下运行,以便为保护模 式所需要的数据结构做好各种配置和准备。
实模式是为建立保护式做准备的工作模式。
在实模式下存储器的地址空间为1M字节单元, 其地址范围为00000H~FFFFFH。
实模式下的存储器地址空间被分为通用和专用两 种存储区。
从地址00000H~003FFH这第一个1024个字节单 元是专用的。这个存储区为中断向量表区,专门用 来存放256个中断服务程序的入口地址(也称中断向 量),每个入口地址占4个字节单元。
SP
栈底 (栈顶 )
78H
栈顶
56H
34H
SP
12H 栈底
(b) 压入:PUSH AX; AX=1234H
PUSH BX; BX=5678H
78H
56H
34H
栈顶
12H 栈底
(c) 弹出:POP CX;
堆栈的结构与操作
19
❖ 值得注意的是,这种结构的堆栈是所谓“向下生长 的”,即栈底在堆栈的高地址端,当堆栈为空时SP就 指向栈底。因此,堆栈段的段基址(由SS寄存器确定) 并不是栈底。
标 跟踪标志 志
Trace Flag
进位标志
奇偶标志

半进位标志 态
零标志
标 志
符号标志
溢出标志
4
❖ 六个状态标志的功能简述如下:
❖ (1) 进位标志CF(Carry Flag): 当执行算术运算指令时, 其结果的最高位有进位或借位时将CF置1;否则将CF 置0。
❖ (2) 奇偶标志PF(Parity Flag): 该标志位反映操作结果 低8位中“1”的个数情况,若为偶数个“1”,则将PF置 “1”;若为奇数个“1”,则将PF置“0”。
17段寄存器偏移地址寄存器主要用途csip指令地址sssp或bp堆栈地址dsbxdisi8位或16位数数据地址es串操作指令的di串操作目的地址表1默认的16位段偏移寻址组合段寄存器偏移地址寄存器主要用途cseip指令地址ssesp或ebp堆栈指针dseaxebxecxedxediesi8位16位或32位数数据地址es串操作指令的edi串操作目的地址fs无默认一般地址gs无默认一般地址表2默认的32位段偏移寻址组合同样大小的气缸容积可以发出更大的指示功气缸工作容积的利用程度越佳
❖ 在“段加偏移”的寻址机制中,微处理器有一套用于 定义各种寻址方式中段寄存器和偏移地址寄存器的组 合规则。如表1和表2所示。
16
.
段寄存器 CS SS DS ES
表1默认的16位“段+偏移”寻址组合
偏移地址寄存器 . IP SP或BP BX、DI、SI、8位或16位数 串操作指令的DI
主要用途 指令地址 堆栈地址
.
+)
006 6
4238 6
4232 0066
段基值 偏移量
逻辑地址
物理地址
.
13
❖ 例 若段寄存器内容是002AH,产生的物理地址是 002C3H,则偏移量是多少? 解: 将段寄存器内容左移4位,低位补0得: 002A0H。 从物理地址中减去上列值得偏移量为: 002C3H-002A0H=0023H。
从地址FFFF0H~FFFFFH这16个字节单元保留给系 统的初始化代码。当处理器加电或复位(Reset)时, CPU执行的第一条指令就是起始于地址FFFF0H的。通 常是在FFFF0H处存放一条无条件转移指令,以转移到 系统程序的入口处。
通用区域用来存储一般的程序指令和数据。由图可
见,它的地址范围为00400H~FFFEFH。
❖ 逻辑地址是编程时所使用的地址。或者说程序设计时 所涉及的地址是逻辑地址而不是物理地址。编程时不 需要知道产生的代码或数据在存储器中的具体物理位 置。这样可以简化存储资源的动态管理。在实模式下 的软件结构中,逻辑地址由“段基值”和“偏移量” 两部分构成。
11
逻辑地址
.
15 段寄存器 0
. 段基值(16位)
5
❖ (5) 符号标志SF(Sign Flag):反映带符号数(以二进制补 码表示)运算结果符号位的情况。若结果为负数,则SF =1;若结果为正数,则SF=0。SF的取值总是与运算 结果的最高位(字节操作为D7,字操作为D15,双字操 作为D31)取值一致。
❖ (6) 溢出标志OF(Overflow Flag):反映有符号数运算结 果是否发生溢出。若发生溢出,则OF=1;否则,OF =0。所谓溢出,是指运算结果超出了计算装置所能表 示的数值范围。例如,对于字节运算,数值表示范围 为-128~+127;对于字运算,数值表示范围为-32768~ +32767。若超过上述范围,则发生了溢出。溢出是一 种差错,系统应做相应的处理。
❖ (3) 辅助进位标志AF(Auxiliary carry Flag):辅助进位标 志也称“半进位”标志。AF=1,表示本次运算的低4 位中的最高位有进位(加法运算时)或有借位(减法运算 时)。AF一般用于BCD运算中是否进行十进制调整的依 据。十进制调整指令DAA和DAS测试这个标志位。
❖ (4) 零标志ZF(Zero Flag):反映运算结果是否为零。若 结果为零,则ZF=1;若结果不为零,则ZF=0。
15
0
段基值(16位) 0000
15
0
偏移量(16位)
物理地址
地址加法器
19
0
物理地址(20位)
实模式下物理地址的产生
12
❖ 例 设代码段寄存器CS的内容为4232H,指令指针寄存 器IP的内容为0066H,即CS=4232H,IP=0066H,则 访问代码段存储单元的物理地址计算如下:
左移4位
4232 0
例 : 若寄存器AX,BX,CX,DX的内容分别为10,20,30,
40时,依次执行PUSH AX, PUSH BX, POP CX, POP
Hale Waihona Puke DX, PUSH CX, PUSH DX, POP AX,POP BX后,寄存器
AX和BX 的内容分别为
10, 20
20
微处理器的工作模式
❖ (1)实模式 ❖ (2)保护模式 ❖ (3)虚拟8086模式
17
堆栈定义:
堆栈是存储器中的一个特定的存储区,它的一端(栈底) 是固定的,另一端(栈顶)是浮动的,信息的存入和取出 都只能在浮动的一端进行,并且遵循后进先出的原则。
堆栈的用途:
堆栈主要用来暂时保存程序运行时的一些地址或数据 信息。例如,当CPU执行调用(Call)指令时,用堆栈保 存程序的返回地址(亦称断点地址);在中断响应及中断 处理时,通过堆栈“保存现场”和“恢复现场”;有 时也利用堆栈为子程序传递参数。
以部分重叠,甚至完全重叠。 ❖ 段的起始地址的计算和分配通常是由操作系统完成的,
并不需要普通用户参与。
10
物理地址与逻辑地址
❖ 物理地址是信息在存储器中实际存放的地址,它是 CPU访问存储器时实际输出的地址。例如,实模式下 的80x86/Pentium系统的物理地址是20位,存储空间为 220=1M字节单元,地址范围从00000H到FFFFFH。 CPU和存储器交换数据时所使用的就是这样的物理地 址。
相关文档
最新文档