微机原理218088CPU内部结构寄存器组存储器组织

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单步执行和单步调试
利用单步中断可对程序进行逐条指令的调试。
这种逐条指令调试程序的方法就是单步调试。
22
15 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF
AF
PF
CF
控制 反映结果状态 反应运算过程
23
3、段寄存器(CS、DS、SS、ES) 在8088可寻址的1MB内存空间中,可以存

19
方向标志DF(Direction Flag)
用于串操作指令中,控制地址的变化方向:
设置DF=0,串操作后存储器地址自动增量(增址) ; 设置DF=1,串操作后存储器地址自动减量(减址) 。
串:存储器中一序列字或字节单元
串操作——对序列字或字节单元中的内容进行某种操作 , 比如:将一个字符串从源区传送到目的区 。 MOVS——串传送指令 CMPS——串比较指令 SCAS—— 串扫描指令 LODS——装入串指令 STOS——存储串指 令
86H + 7CH=00H
最高位D7=0:SF=0
有符号数利用最高有效位(MSB)来表示它 的符号。所以,运算结果的MSB与符号标志SF相 一致。
17
奇偶标志PF(Parity Flag)
当运算结果最低字节中“1”的个数为零或偶 数时,PF=1;否则PF=0(奇校验)。
例如:
3AH + 7CH=B6H=10110110B,
结果中有5个1,是奇数,则 PF=0 注意:PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作。
18
辅助进位标志AF(Auxiliary Carry Flag)
运算时D3位(低半字节)有进位或借位时, AF=1;否则AF=0。
这个标志主要由处理器内部使用,用于 十进制算术运算的调整,用户一般不必关心
若算术运算的结果有溢出,则OF=1;否则 OF=0。例如:
问题:
什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出?
P30找答案
12
什么是溢出
处理器内部以补码表示有符号数 8位表达的整数范围是:+127 ~ -128 16位表达的范围是:+32767 ~ -32768 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确
若运算结果为全0,则ZF=1,否则ZF=0。 例如:
3AH + 7CH=B6H 结果不是零:ZF=0
86H + 7CH=00H 结果是全零:ZF=1
16
符号标志SF(Sign Flag)
运算结果最高位为1,则SF=1;否则SF=0。 例如:
3AH + 7CH=B6H
最高位D7=1:SF=1
(1)
偏移地址(字节距离)16位
段 基 址 16 位 0 0 0 0
偏 移 地 址 16 位
+
物 理 地 址 20 位
28
存储器的分段管理
逻辑地址的表示——段地址:偏移地址
段尾

逻 辑
某寻址单元

地址偏移量(xxxxH)
段首(xxxx0H)
低址
29
存储器的分段管理
段地址说明逻辑段在存储器中的起始位置, 为模16地址:xxxx0H,省略低4位后,可 用1个16位数来表示,该地址可被存放在不 同的段寄存器CS/SS/DS/ES中。
默认的情况允许改变,需要使用段跨越前缀 指令,8088指令系统中共有4个:
CS: SS: DS: ES:
——代码段超越,使用代码段的数据 ——堆栈段超越,使用堆栈段的数据 ——数据段超越,使用数据段的数据 ——附加段超越,使用附加段的数据
33
段超越的例子
没有段超越的指令实例:
MOV AX, [2000H]
AX BX CX DX
16 位
暂存寄存 器
地址加法器
20 位
CS
DS
SS
ES
指令指针
IP
内部通信寄存器
16 位
总线
外部总线
控制
逻辑
ALU 标志寄存器
执行 控制
电路
指令队列
12 34
执行单元 (EU)
总线接口单元(BIU)
5
8088的编程结构从功能分成两个单元
总线接口单元BIU (Bus Interface Unit)——管理8088与系统 总线的接口,负责CPU对存储器和外设进行访问
分隔符
26
逻辑地址
地址加法器
将16位的逻辑地址转换为20位的物 理地址,具体操作过程为:先将段寄存 器提供的16位段地址左移四位,低位补0 ,恢复为20位地址,然后与由各种寻址 方式提供的16位偏移地址相加,即得到 20位的物理地址。
27
逻辑地址
• 物理地址: 20 位 • 逻辑地址: 段基址 (段寄存器的内容)16位
20
中断允许标志IF(Interrupt-enable Flag)
用于控制外部可屏蔽中断是否可以被处理器 响应:
设置IF=1,则允许中断; 设置IF=0,则禁止中断。
CLI 指令复位中断标志:IF=0 STI 指令置位中断标志:IF=1
21
陷阱标志TF(Trap Flag)
用于控制处理器是否进入单步执行方式: 设置TF=0,处理器正常工作; 设置TF=1,处理器每执行一条指令就中断一次 ,中断编号为 1 (称单步中断), TF 也被称为 单步标志。
进先出LIFO(Last In First Out)的原则进行存 取操作,而不是随机存取操作方式。 堆栈指针——它指示栈顶位置,在8086/8086中 ,栈顶由SS和SP共同指示,即SS:SP。 堆栈操作 处理器自动维持(子程序调用时的断点处理) 用户操作(PUSH/POP指令)
38
三、 8088/8086的存储器结构
➢ 8位的CPU没有指令预取功能,执行指令前必须等 待“取指”操作完成。
➢ 取指操作是CPU最频繁的操作。 ➢ 这种操作方式节省了CPU大量的取指等待时间。 ➢ “指令流水线”。
7
二、 8088寄存器结构
8088共有8个的通用寄存器,1个标志寄存器 ,4个段寄存器和1个指令指针寄存器。
1、通用寄存器
35
总结一下:
通用寄存器
8
指令指针寄存器 1
标志寄存器
1
段寄存器
4
AX/BX/CX/DX BP/SP DI/SI IP PSW CS/SS/DS/ES
掌握通用寄存器的作用
熟悉PSW中各个标志的含义 切实理解存储器组织和存储空间分段的概念
36
8088的寄存器组
37
堆栈的概念
堆栈(Stack)是主存中一个特殊的区域。 它采用先进后出FILO(First In Last Out)或后
;AX←DS:[2000H],
;从默认的DS数据段取出数据
采用段超越前缀的指令实例:
MOV AX, ES:[2000H] ;AX←ES:[2000H],
;从指定的ES附加段取出数据
34
4、指令指针寄存器(IP )
IP(Instruction Pointer)中 存放即将要执行的指令的有效地址 ,IP具有自增量功能。在每取出一 条指令后,IP自增一,指令指针指 向下一条指令。
偏移地址说明寻址单元距离段首的偏移量, 因每段长度不超过64KB,所以偏移地址也 可用1个16位数来表示。
30
存储器的分段管理
一个存储单元可以拥有多个逻辑地址,但只 可能拥有一个唯一的物理地址。
逻辑地址 1460:100、1380:F00 物理地址 14700H 14700H
31
如何分配各个逻辑段
存储器是计算机存储信息的地方。掌握数 据存储格式,以及存储器的分段管理对以 后的汇编程序设计非常重要
你能区别寄存器、存储器(主存)、外存(包 括硬盘、光盘、磁带等存储介质)吗?
39
寄存器、内存储器和外存储器的区别
寄存器是微处理器(CPU)内部暂存数据的存储 单元,以名称表示,例如:AX,BX..….等
执行单元EU (Execution Unit)——负责指令的译码、执行和数 据的运算
两个单元相互独立,分别完成各自操作 两个单元可以并行执行,实现指令取指和执行的流水线
操作
6
并行操作的意义
➢ EU执行指令的同时,BIU可以继续读取后续指令, 并存入指令队列(first in first out)。这叫做“指令预取” 。
10
进位标志CF(Carry Flag)
当运算结果的最高有效位有进位(加法)或 借位(减法)时,进位标志置1,即CF = 1 ;否则 CF=0。
例如(以8位运算为例,8088中为16位) :
3AH + 7CH=B6H
没有进位:CF=0
AAH + 7CH=(1)26H
有进位:CF=1
11
溢出标志OF(Overflow Flag)
在四种分工不同的逻辑段:代码段、数据段、堆 栈段和附加段。
段寄存器即是存放各个逻辑段段首地址的寄 存器。
?为什么要分段
24
存储器的分段管理
8088有20条地址线, 最大可寻址空间为 220=1MB, 可寻址的地址范围为 00000H~FFFFFH 该地址称物理地址
硬件用20位的物理地址来对存储单元进行寻 址
13
溢出和进位的对比
例1:3AH+7CH=B6H
无符号数运算: 58+124=182 范围内,无进位
有符号数运算: 58+124=182 范围外,有溢出
例2:AAH+7CH=(1)26H
无符号数运算: 170+124=294 范围外,有进位
有符号数运算: -86+124=28 范围内,无溢出
14
数据总线
控制
暂存器
累加器
标志寄存器
ALU
3
8088/8086的功能结构
16位微处理器也具有以上结构中的基本单元 ,但更为复杂。
以8088为例讲解16位微处理器的功能结构 。
8088是8086的简化版本。
段寄存器 通 用 寄存 器
4
AH AL BH BL CH CL DH DL
SP BP DI SI 数据总线
25
存储器的分段管理
由于8088中的地址寄存器都是16位的,用 户不能直接使用20位的物理地址,编程时需 要使用逻辑地址来寻址存储单元。
逻辑地址由物逻两理辑个地 地1址 址6位11数4476构00成0HH:,10其0H形式为: 段的起始地址 : 段内的偏移地址
(16位段地址) :( 16位gister) 是一个十六位的寄存器,但只利用了其中 的9位:六个条件标志和三个控制标志。
FR的格式
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
进位
校验
辅助进位
零标志 符号标志 陷阱标志 中断标志 方向标志 溢出标志
微机原理218088CPU内部结 构寄存器组存储器组织
2
一、 8086/8088CPU的内部结构
8位微处理器的内部结构


时序





控制
控制总线


逻辑
1. 算术逻辑单元(运算器)
寄存器组 2.
通用 寄存器组
地址 寄存器组
地址 总线 控制
地址总线
3. 指令内处部数理据总单线 元(控数制据器)
总线
➢ 处理器对两个操作数进行运算时,按照无符 号数求得结果,并相应设置进位标志CF;同 时,根据是否超出有符号数的范围设置溢出 标志OF
➢ 应该利用哪个标志,则由程序员来决定。也 就是说,如果将参加运算的操作数认为是无 符号数,就应该关心进位;认为是有符号数 ,则要注意是否溢出。
15
全零标志ZF(Zero Flag)
8
②指针和变址寄存器 共BP、SP、SI、DI四个
BP:基址指针寄存器Base Pointer ,默认表示 堆栈段基地址;
SP:堆栈指针寄存器Stack Pointer,指示栈顶 SI:源变址寄存器Source Index
DI:目的变址寄存器Destination Index
9
2、标志寄存器
(PSW:program state word)
① 数据寄存器 共AX、BX、CX、DX四个,每个寄存器即可作 为16位寄存器,又可拆分为两个8位寄存器,此时记 为AH、AL、BH、BL等。
AX(AH、AL):累加器accumulator BX(BH、BL):基址寄存器base CX(CH、CL):计数寄存器counter DX(DH、DL):数据寄存器data
存储器也就是平时所说的主存,也叫内存,可直 接与CPU进行数据交换。主存利用地址区别
程序的指令序列必须安排在代码段; 程序使用的堆栈一定在堆栈段; 程序中的数据默认是安排在数据段,也经常
安排在附加段,尤其是串操作的目的区必须 是附加段。 数据的存放比较灵活,实际上可以存放在任 何一种逻辑段中。
程序中如何指明数据所在的逻辑段呢?
32
段跨越前缀指令
没有指明时,一般的数据访问在DS段; 若使用BP访问存储器,则在SS段。
相关文档
最新文档