《汇编语言》第二章 课件2.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
更多精彩资编程源请关注: 2.8 段的概念 错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址。 其实: 内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。 2.8 段的概念 2.8 段的概念 以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。 两点需要注意 两点需要注意 (1)段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数; (2)偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。 内存单元地址小结 CPU访问内存单元时,必须向内存提供内存单元的物理地址。 8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。 思考两个问题 内存单元地址小结 (1)观察下面的地址,读者有什么发现? 结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。 内存单元地址小结 (2)如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位多少内存单元? 结论:偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64K个内存单元。 比如:给定段地址1000H,用偏移地址寻址,CPU的寻址范围为:10000H~1FFFFH。 没有小结的小结 在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。 “数据在21F60H内存单元中。”对于8086PC机的两种描述: (a)数据存在内存2000:1F60单元中; (b)数据存在内存的2000段中的1F60H单元中。 可根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。 2.9 段寄存器 段寄存器就是提供段地址的。 8086CPU有4个段寄存器: CS、DS、SS、ES 当8086CPU要访问内存时,由这4个段寄存器提供内存单元的段地址。 2.10 CS和IP CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。 CS为代码段寄存器; IP为指令指针寄存器。 8086PC读取和执行指令相关部件 8086PC读取和执行指令演示 8086PC工作过程的简要描述 8086PC工作过程的简要描述 (1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器; (2)IP = IP + 所读取指令的长度,从而指向下一条指令; (3)执行指令。 转到步骤 (1),重复这个过程。 8086PC工作过程的简要描述 在 8086CPU 加电启动或复位后( 即 CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。 即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行。 FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。 2.10 CS和IP 在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。 如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。 2.11 修改CS、IP的指令 在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。 CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。 我们如何改变CS、IP的值呢? 2.11 修改CS、IP的指令 8086CPU必须提供相应的指令 先回想我们如何修改AX中的值? mov指令不能用于设置CS、IP的值, 8086CPU没有提供这样的功能。 8086CPU为CS、IP提供了另外的指令来改变它们的值:转移指令 如何修改AX中的值? mov 指令 如:mov ax,123 mov指令可以改变8086CPU大部分寄存器的值,被称为传送指令。 能够通过mov 指令改变CS、IP的值吗? Return 2.11 修改CS、IP的指令 同时修改CS、IP的内容: jmp 段地址:偏移地址 jmp 2AE3:3 jmp 3:0B16 功能:用指令中给出的段地址修改CS,偏移地址修改IP。 2.11 修改CS、IP的指令 仅修改IP的内容: jmp 某一合法寄存器 jmp ax (类似于 mov IP,ax) jmp bx 功能:用寄存器中的值修改IP。 问题分析:CPU运行的流程 内存中存放的机器码和对应汇编指令

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档