ch02_寄存器.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch02_寄存器

第二课 寄存器 2.1通用寄存器 一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连,内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其它器件的联系。 8086CPU有14个寄存器 它们的名称为: AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。 这些寄存器以后会陆续介绍 8086CPU所有的寄存器都是16位的,可以存放两个字节。 AX、BX、CX、DX 通常用来存放一般性数据被称为通用寄存器。 下面以AX为例,我们看一下寄存器的逻辑结构。 数据:20000 二进制表示:0100111000100000 在寄存器AX中的存储: 8086上一代CPU中的寄存器都是8位的,为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。 AX可以分为AH和AL; BX可以分为BH和BL; CX可以分为CH和CL; DX可以分为DH和DL。 以AX为例,8086CPU的16位寄存器分为两个8位寄存器的情况: AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器。 AH和AL寄存器是可以独立使用的8位寄存器。 2.2 字在寄存器中的存储 一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。 2.3几条汇编指令 注意:汇编指令不区分大小写 2.4 物理地址 CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。 概括的讲,16位结构描述了一个CPU具有以下几个方面特征: 1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。 8086有20位地址总线,可传送20位地址,寻址能力为1M。 8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。 8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。 地址加法器合成物理地址的方法: 物理地址=段地址×16+偏移地址 2.5 段的概念 错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址。 其实: 内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。 我们也可以认为地址10000H~1007FH、10080H~100FFH 的内存单元组成两个段,它们的起始地址( 基础地址 )为10000H和10080H,段地址为:1000H 和1008H,大小都为80H。 参考动画演示:DEMO/2_8086CPU读取和执行指令的过程.swf 8086PC工作过程的简要描述: (1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器; (2)IP = IP + 所读取指令的长度,从而指向下一条指令; (3)执行指令。 转到步骤 (1),重复这个过程。 在 8086CPU 加电启动或复位后( 即 CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。 2.7 CS和IP 内存中指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。 CPU根据什么将内存中的信息看作指令? CPU将CS:IP指向的内存单元中的内容看作指令。 在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。 如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。 2.8 修改CS、IP的指令 在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。 CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。 我们如何改变CS、IP的值呢? mov指令不能用于设置CS、IP的值,8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来改变它们的值:转移指令 同时修改CS、IP的内容: jmp 段地址:偏移地址 jmp 2AE3:3 jmp 3:0B16 功能:用指令中给出的段地址修改CS,偏移地址修改IP。 仅修改IP的内容: jmp 某一合法寄存器 jmp ax (类似于

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档