




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三 8086 8088微处理器的结构 1 概述 1 性能的提高 2 采用的方法2 8086 8088内部结构 1 执行单元 2 总线接口单元3 分段访问内存 1 概述 1 性能的提高a 提高主频EvolutionofIntel sMicroprocessors b 改变体系结构 1 并行 2 扩大寄存器的位数 增加寄存器的数量 2 采用的方法将8086 8088微处理器分为两部分执行单元 EU ExecutionUnit 总线接口单元 BIU BusInterfaceUnit 2 8086 8088内部结构执行单元 ExecutionUnit 总线接口单元 BusInterfaceUnit 执行单元 ExecutionUnit 负责执行从BIU的指令队列中得到的指令 1 16位算术逻辑运算单元ALU 2 16位标志寄存器Flags 抄到黑板上备查 Example1 Showhowtheflagregisterisaffectedbytheadditionof38Hand2FH Solution MOVBH 38HADDBH 2FH3800111000 2F001011116701100111CF 0PF 0AF 1ZF 0SF 0JustDoit Example2 ShowhowtheflagregisterisaffectedbyMOVAL 9CHMOVDH 64HADDAL DHSolution 9C10011100 64011001000000000000CF 1PF 1AF 1ZF 1SF 0JustDoit Example3 ShowhowtheflagregisterisaffectedbyMOVAX 34F5HADDAX 95EBHSolution 34F50011010011110101 95EB1001010111101011CAE01100101011100000CF 0PF 0AF 1ZF 0SF 1 Example4 ShowhowtheflagregisterisaffectedbyMOVBX AAAAHADDBX 5556HSolution AAAA1010101010101010 5556010101010101011000000000000000000000CF 1PF 1AF 1ZF 1SF 0DoEx1 4atDebug 3 通用寄存器组 通用寄存器组 通用寄存器包括4个数据寄存器 两个地址指针寄存器和两个变址寄存器 1 数据寄存器AX BX CX DX数据寄存器一般用于存放参与运算的操作数或运算结果 每个数据寄存器都是16位的 但又可将高 低8位分别作为两个独立的8位寄存器来用 上述4个寄存器除了用来存放数据 它们各自都有自己的特定用途 AX Accumulator 累加器 用该寄存器存放运算结果可使指令简化 提高指令的执行速度 此外 所有的I O指令都使用该寄存器与外设端口交换信息 BX Base 基址寄存器 8086 8088CPU中有两基址寄存器BX和BP BX用来存放操作数在内存中数据段内的偏移地址 BP用来存放操作数在堆栈段内的偏移地址 CX Counter 计数器 在设计循环程序时使用该寄存器存放循环次数 可使指令简化 有利于提高程序的运行速度 DX Data 数据寄存器 在寄存器间接寻址的I O指令中存放I O端口地址 2 地址指针寄存器SP BPSP StackPointer 堆栈指针寄存器 在使用堆栈操作指令PUSH或POP对堆栈进行操作时 每执行一次进栈或出栈操作 系统会自动将SP的内容减2或加2 以使其始终指向栈顶 BP BasePointer 基址寄存器 作为通用寄存器 它可以用来存放数据 但更经常更重要的用途是存放操作数在堆栈段内的偏移地址 3 变址寄存器SI DISI SourceIndex 源变址寄存器 SI存放源串在数据段内的偏移地址 DI DestinationIndex 目的变址寄存器 DI存放目的串在附加数据段内的偏移地址 总线接口单元 BusInterfaceUnit 负责完成CPU与存储器或I O设备之间的数据传送 送出地址 从存储器取指令 从存储器或端口读数据以及向端口或存储器写数据 1 指令队列寄存器 2 段寄存器 CS DS SS ES 3 指令指针寄存器 IP 4 20位地址加法器 5 逻辑地址 6 物理地址 2 段寄存器8086 8088的4个段寄存器分别为 CS CodeSegment 代码段寄存器 用来存储程序当前使用的代码段的段地址 CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址 DS DataSegment 数据段寄存器 用来存放程序当前使用的数据段的段地址 DS的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址 SS StackSegment 堆栈段寄存器 用来存放程序当前所使用的堆栈段的段地址 堆栈是存储器中开辟的按 先进后出 原则组织的一个特殊存储区 主要用于调用子程序或执行中断服务程序时保护断点和现场 ES ExtraSegment 附加数据段寄存器 用来存放程序当前所使用的附加数据段的段地址 附加数据段用来存放字符串操作时的目的字符串 3 控制寄存器IP InstructionPointer 指令指针寄存器 用来存放下一条要读取的指令在代码段内的偏移地址 用户程序不能直接访问IP 分段访问内存模型 示意图 FULLSEGMENTDEFINITION完整程序框架 熟练掌握 stacksegment STACKSEGMENTDB64DUP STACKENDS datasegment DATASEGMENT datadefinitionsareplacedhereDATAENDS codesegment CODESEGMENTASSUMECS CODE DS DATA SS STACKstart MOVAX DATAMOVDS AX MOVAH 4CHINT21HCODEENDSENDstart 3 分段访问内存的思想 1 段 偏置的方法只要求一个16位的数来表示一个段的基地址 同时也只要求一个用来访问段内任一单元的16位的偏置 这意味着8086只处理和存储16位的值 而不是20位的值 这使得在8086中8位或16位存储器与16位的寄存器的接口变得容易实现了 2 存储器分段易于保持用户程序和数据的彼此分离 并且易于从一个用户程序切换到另一个用户程序 3 与8085完全兼容 四 8086 8088存储器和I O的组织 8086 8088存储器的组织 1 8086 8088存储空间2 存储器的段结构3 逻辑地址于物理地址4 堆栈操作5 8086 8088存储器结构8086 8088的I O组织 1 8086 8088存储空间 8086 8088有20条地址线 可直接对1M个存储单元进行访问 每个存储单元存放一个字节型数据 且每个存储单元都有一个20位的地址 这1M个存储单元对应的地址为00000H FFFFFH 一个存储单元中存放的信息称为该存储单元的内容 00001H单元的内容为9FH 记为 00001H 9FH 2 存储器的段结构 8086 8088CPU中有关可用来存放地址的寄存器如IP SP等都是16位的 故只能直接寻址64KB 为了对1M个存储单元进行管理 8086 8088采用了段结构的存储器管理方法 8086 8088将整个存储器分为许多逻辑段 每个逻辑段的容量小于或等于64KB 允许它们在整个存储空间中浮动 各个逻辑段之间可以紧密相连 也可以互相重叠 用户编写的程序 包括指令代码和数据 被分别存储在代码段 数据段 堆栈段和附加数据段中 这些段的段地址分别存储在段寄存器CS DS SS和ES中 而指令或数据在段内偏移地址可由对应的地址寄存器或立即数给出 如果从存储器中读取指令 则段地址来源于代码段寄存器CS 偏移地址来源于指令指针寄存器IP 如果从存储器读 写操作数 则段地址通常由数据段寄存器DS提供 必要时可通过指令前缀实现段超越 将段地址指定为由CS ES或SS提供 偏移地址则要根据指令中所给出的寻址方式确定 这时 偏移地址通常由寄存器BX SI DI以及立即数等提供 这类偏移地址也被称为 有效地址 EA 如果操作数是通过基址寄存器BP寻址的 则此时操作数所在段的段地址由堆栈段段寄存器SS提供 必要时也可指定为CS SS或ES 如果使用堆栈操作指令 PUSH或POP 进行进栈或出栈操作 以保护断点或现场 则段地址来源于堆栈段寄存器SS 偏移地址来源于堆栈指针寄存器SP 如果执行的是字符串操作指令 则源字符串所在段的段地址由数据段寄存器DS提供 必要时可指定为CS ES或SS 偏移地址由源变址寄存器SI提供 目的字符串所在段的段地址由附加数据段寄存器ES提供 偏移地址由目的变址寄存器DI提供 以上这些存储器操作时段地址和偏移地址的约定是由系统设计时事先已规定好的 编写程序时必须遵守这些约定 缺省段和偏置 3 逻辑地址与物理地址逻辑地址 在CPU内部对RAM或I O地址的表示方式 段基址 偏置 偏置 表示所需代码或数据到段基地址的位移量 其范围从0000H 0FFFFH 物理地址 由CPU的20位引脚输出的实际对RAM或I O地址的表示方式 其范围从00000H 0FFFFFH 例如 代码段 要执行的下一条指令的地址在CPU内部的表示为 CS IP 假设CS 24F6H IP 634AH 则 逻辑地址为24F6 634A偏置为634A物理地址为PA 24F6 10H 634A 24F60 634A 2B2AA数据段 指令要操作的数据的地址在CPU内部的表示方式为 DS offset 假设DS 7FA2H offset 438EH 则 逻辑地址为7FA2 438E偏置 offset 为438E物理地址为PA 7FA2 10H 438E 7FA20 438E 83DAE 堆栈段 假设SS 3500H SP 0FFFEH 则 逻辑地址为SS SP即3500 0FFFE偏置为0FFFEH物理地址为SS 10H SP即PA 3500H 10H 0FFFEH 35000H 0FFFEH 44FFEH缺省段和偏置 Program addxy用本节课所学理论解释此程序的执行过程 datasegmentxdw16hydw20hzdw dataendscodesegmentassumecs code ds datastart movax datamovds ax movax x movdx y addax dxmov z axmovah 4chint21hcodeendsendstart 4 堆栈操作堆栈段 CPU用来临时存储信息的RAM区域 其特点是先进后出 假设 SP 1236 AX 24B6 DI 85C2 DX 5F93执行指令PUSHAXPUSHDIPUSHDX POPDXPOPDIPOPAX 堆栈操作程序演示 asm 5 8086 8088存储器结构 8086的1MB存储空间实际上分为两个512KB的存储体 又称存储库 分别叫高位库和低位库 如图所示 低位库与数据总线D7 D0相连 该库中每个存储单元的地址为偶数地址 高位库与数据总线D15 D8相连 该库中每个存储单元的地址为奇数地址 地址总线A19 A1可同时对高 低位库的存储单元寻址 A0和BHE用于对库的选择 分别连接到库选择端
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业废气治理工成本控制考核试卷及答案
- 长期照护师抗压考核试卷及答案
- 2025合同范本融资项目知识产权质押合同
- 2025年职业技能认证跨境培训平台教育资源共享平台建设报告
- 压敏电阻器制造工技能操作考核试卷及答案
- 2025还款合同样本
- 烟草制品转运设备操作工三级安全教育(班组级)考核试卷及答案
- 肃南裕固族自治县电梯安全管理人员月考试题库加答案
- 妊娠期高血压考核试题(含答案)
- 人口和计划生育科学技术研究所生殖医学伦理考试试题(附答案)
- 超级大乐透介绍课件
- 正常产褥 教学课件
- 2025年北京市海淀区高一(下)期末考试数学试卷(含答案)
- 机场安检员岗位培训教程
- 卫生院常见护理常规
- 中国高尿酸血症与痛风诊疗指南(2024年)
- 2025年全国矿山安全生产事故情况
- 2024年北京市西城区第十五中学七上数学期末检测模拟试题含解析
- 2025年环境监测试验检测人员培训计划
- 市政项目成本测算手册2023版
- 幼儿园网络安全管理培训
评论
0/150
提交评论