




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 微型计算机的结构 本章要点 l 8086/8088CPU内部结构 l 8086/8088寄存器和标志 l 堆栈与存储器结构 l 寻址方式和指令系统 8086是16位字长的微处理器,8088的内部结构为16 位 ,外部数据总线8位,是准16位字长的微处理器,二者指令 系统相同,均具有20位地址线,寻址能力达到1MB空间。 3.1 8086/8088的功能结构 next 总线接口单元 BIU( Bus Interface Unit ) 执行单元 EU( Execution Unit ) 协同完成执行内存中存放的指令序列。Go 8086/8088微处理器由总线接口单元 和执行单元组成。 BIU 和 EU 相互独立,可并行操作,构成指令流水线结构 。 T1 取指令取指令取指令 等待执行执 行 执行 BIU EU T2T3 返回 3.2 8086/8088的寄存器结构 14个16位寄存器,分为4类。 (1)数据寄存器: 4个AX、 BX、 CX、 DX 计算过程中的常用寄存器 Go (3) 段寄存器: 4个CS、 DS、 SS、 ES 存放段起始地址 Go (2) 指针与变址寄存器: 4个SP、 BP、 SI、 DI 提供操作数的偏移地址 Go (4) 控制寄存器: 2个IP、 F 提供指令的偏移地址; 保存条件码标志和控制标志 Go AX BX CX DX 数据寄存器 AH BH CH DH AL BL CL DL CS DS SS ES 代码段寄存器 数据段寄存器 堆栈段寄存器 附加段寄存器 SP BP SI DI 堆栈指针寄存器 基址指针寄存器 源变址寄存器 目的变址寄存器 F IP指令指针寄存器 标志寄存器 next AX(累加器 Accumulator): 主要的算术运算寄存器,专用于:乘、除法运算、十进 制调整及I/O操作等操作。 返回 DX AX 31 16 15 0 BX(基址寄存器 Base): 常用于存放存储区的起始地址。 CX(计数寄存器 Count): 常用作循环操作和字串处理的计数控制。 DX(数据寄存器 Data): 常与AX联用,做双字乘、除法时,DX存放高位字,AX 存放低位字。此外在I/O操作时提供外部设备接口的端口地 址。 CS(代码段地址寄存器 Code Segment): 存放代码段的起始地址。代码段存放当前正在运行的程序 返回 DS(数据段地址寄存器 Data Segment): 存放数据段的起始地址。数据段存放当前正运行的程序所 用的数据。 SS(堆栈段地址寄存器 Stack Segment): 存放堆栈段的起始地址。堆栈段是定义堆栈的存储区。 ES(附加段地址寄存器 Extra Segment): 存放附加段的起始地址。附加段是附加的数据段,作为辅 助数据区存放当前正运行程序所用的数据。 SP(栈顶指针寄存器 Stack Pointer): 提供堆栈栈顶单元的偏移地址。与SS段寄存 器联用,控制数据进栈和出栈。 堆栈段 SS:SP 访问 栈顶 堆栈段 SS:BP 访问 栈内 数据段 DS:SI 访问 数据 附加段 ES:DI 访问 数据 BP(基址指针寄存器 Base Pointer): 常用于提供堆栈内某个单元的偏移地址。与 SS段寄存器联用,访问堆栈中的任一个存储 单元。 SI(源变址寄存器 Source Index): 与DS段寄存器联用,可以访问数据段中的任 一个存储单元。 DI(目的变址寄存器 Destination Index): 与ES段寄存器联用,可访问附加段中的任一个 存储单元。 SI、DI也常用于在字串操作中提供偏移地址 ,并具有地址自动增量或减量的功能。 返回 IP(指令指针寄存器 Instruction Pointer) : 存放代码段中指令的偏移地址。在程序 执行过程中,始终自动给出下一条要取的指 令的偏移地址。 IP与CS段寄存器联用,可以确定下一条 要取的指令的物理地址,因此IP是很重要的 控制寄存器,用于控制程序的执行流程。 代码段 CS:IP 访问 指令 F(标志寄存器 Flags): 用于存放反映处理器和运行程序执行结果状态的控制标 志和条件码标志。 F中共有9个标志位:6个条件码标志位,3个控制标志位。 CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PFAFZF SF TFIFDFOF F寄存器 OF 溢出标志:计算结果溢出时,OF=1,否则 OF=0。 SF 符号标志:计算结果小于0时,SF=1,否则 SF=0。 ZF 零标志:计算结果等于0时,ZF=1,否则 ZF=0。 CF 进位/借位标志:最高有效位有进位或借位时,CF=1,否则 CF=0。 AF 辅助进位/借位标志,半字节进位/借位标志 PF 奇偶标志 DF 方向标志,控制串操作中的地址增减。DF=0,地址增;DF=1,地址减。 IF 中断标志,IF=1,开中断;IF=0,关中断。 TF 陷阱标志,TF=1,CPU单步方式下执行程序,TF=0,CPU正常工作。 3个控制标志位: 6个条件码标志位: 0 0 0 0 0 0 1 1PF=1 0 0 0 0 1 0 1 1 PF=0 7 6 5 4 3 2 1 0 返回 3.3 堆栈与存储器结构 (1) 堆栈 堆栈的固定端称为栈底, 在存储 器的高地址端,活动端称为栈顶, 数据的存取以先进后出原则在栈顶 进行。SP栈顶指针寄存器始终保存 栈顶地址,指向栈顶。 随着进栈数据的增多,堆栈从高地 址向低地址方向扩展。 SP 低地址 高地址 堆 栈 扩 展 方 向 (SP)-2 新栈顶 堆栈数据的存取必须以字为单位 PUSH BX (2) 存储器结构 在存储器中,最小的存储单位是字节,每个字节单元用一个无符号二 进制数编地址,从0开始编址。书写存储单元地址时用十六进制形式。 . 栈顶 栈底 堆栈段 BH BL 栈顶 . . . 存储器 64K存储器单元的 编址方法如图所示。 0000H 0001H 0002H 0003H 0004H 0005H 0006H FFFEH FFFFH 低字节 高字节 字单元 字节单元 低地址字节单元 高地址字节单元 低字节存低地址单元, 高字节存高地址单元。 例: 将3456H存入地址为0005H 的字单元中。 56 34 一个存储器单元的物理地址由段地址和偏移地址形成。 问题:为什么要分段地址和偏移地址呢? 16位寄存器不能提供20位的物理地址 解决问题的办法:存储器分段管理 将存储器分段,每段最大不超过64KB,段内单元地址可用16位表 示,称为偏移地址。每段的起始地址称为段地址(也称为段基址)。 段地址如何表示? 规定段地址必须能够被16整除,按20位地址对1M存储器编址如下: 0000 0H 00001H 00002H 0000EH 0000FH 0001 0H 00011H 00012H 0001EH 0001FH 0002 0H 00021H 00002H 0002EH 0002FH FFFF 0H FFFF1H FFFF2H FFFFEH FFFFFH 20位物理地址的形成方法: 20位物理地址=16位段地址左移4位(段地址16)+ 16位偏移地址 16位段地址 015 16位偏移地址 015 + 0 20位物理地址 19 例: 已知一个存储单元的段地址为3200H,偏 移地址为1210H,其物理地址是多少? 0011 0010 0000 0000 | 0000 0001 0010 000 1 0000+ 0011 0011 0010 0001 0000 32000H + 1210H 33210H 0000 64K个 段内偏移量 偏移地址 = 段起始地址 64K段内地址 0000H 0001H 0FFFH . FFFFH 64K段内地址 0000H 0001H FFFFH 30000H 段内偏移量 偏移地址 = 段起始地址 40000H 存储器分段管理的地址概念图示: 30000H + 0FFFH =30FFFH 物理地址 . . 存储器 0FFFH 可以对代码段、数据段、附加段和堆栈段各段按需要灵活地进行存储 区分配。(图) 存储器分段法的优点: (2) 将代码、数据存放在不同的内存区,便于程序重定位。 (1) 使16位寄存器最终可以提供20位物理地址; 访问存储器单元时,寄存器的联用方式: (图) next 200FH 返回 返回 寄存器与存储器的比较: 寄 存 器 存 储 器 在CPU内部在CPU外部 访问速度快访问速度慢 容量小,成本高容量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论