- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第02讲 8086编程结构
第2章:2. 存储器的分段管理 8088CPU有20条地址线 最大可寻址空间为220=1MB 物理地址范围从00000H~FFFFFH 8088CPU将1MB空间分成许多逻辑段(Segment) 每个段最大限制为64KB 段地址的低4位为0000B 这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址 第2章:物理地址和逻辑地址 8088CPU存储系统中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H ~ FFFFFH 分段后在用户编程时,采用逻辑地址,形式为 段基地址 : 段内偏移地址 分隔符 物理地址 14700H 逻辑地址 1460H:100H 第2章:逻辑地址 段地址说明逻辑段在主存中的起始位置 8088规定段地址必须是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址 偏移地址说明主存单元距离段起始位置的偏移量 每段不超过64KB,偏移地址也可用16位数据表示 第2章:物理地址和逻辑地址的转换 将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址 一个物理地址可以有多个逻辑地址 逻辑地址 1460:100、1380:F00 物理地址 14700H 14700H 14600H + 100H 14700H 13800H + F00H 14700H 段地址左移4位 加上偏移地址 得到物理地址 第2章:3. 段寄存器 8088有4个16位段寄存器 CS(代码段)指明代码段的起始地址 SS(堆栈段)指明堆栈段的起始地址 DS(数据段)指明数据段的起始地址 ES(附加段)指明附加段的起始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途 第2章:代码段寄存器CS(Code Segment) 代码段用来存放程序的指令序列 代码段寄存器CS存放代码段的段地址 指令指针寄存器IP指示下条指令的偏移地址 处理器利用CS:IP取得下一条要执行的指令 第2章:堆栈段寄存器SS(Stack Segment) 堆栈段确定堆栈所在的主存区域 堆栈段寄存器SS存放堆栈段的段地址 堆栈指针寄存器SP指示堆栈栈顶的偏移地址 处理器利用SS:SP操作堆栈顶的数据 第2章:数据段寄存器DS(Data Segment) 数据段存放运行程序所用的数据 数据段寄存器DS存放数据段的段地址 各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址 处理器利用DS:EA存取数据段中的数据 第2章:附加段寄存器ES(Extra Segment) 附加段是附加的数据段,也保存数据: 附加段寄存器ES存放附加段的段地址 各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址 处理器利用ES:EA存取附加段中的数据 串操作指令将附加段作为其目的操作数的存放区域 第2章:如何分配各个逻辑段 程序的指令序列必须安排在代码段 程序使用的堆栈一定在堆栈段 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段 数据的存放比较灵活,实际上可以存放在任何一种逻辑段中 演示 第2章:段超越前缀指令 没有指明时,一般的数据访问在DS段;使用BP访问主存,则在SS段 默认的情况允许改变,需要使用段超越前缀指令;8088指令系统中有4个: CS: ;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据 示例 第2章:段超越的示例 没有段超越的指令实例: MOV AX,[2000H] ;AX←DS:[2000H] ;从默认的DS数据段取出数据 采用段超越前缀的指令实例: MOV AX,ES:[2000H];AX←ES:[2000H] ;从指定的ES附加段取出数据 总结 第2章:段寄存器的使用规定 访问存储器的方式 默认 可超越 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP 一般数据访问 DS CS ES SS 有效地址EA BP基址的寻址方式 SS CS ES DS 有效地址EA 串操作的源操作数 DS CS ES SS SI 串操作的目的操作数 ES 无 DI 第2章:寄存器的总结 8088有8个8位通用寄存器、8个16位通用寄存器 8088有6个状态标志和3个控制标志 8088将1MB存储空间分段管理,有4个段寄存器,对应4种逻辑段 8088有4个段超越前缀指令,用于明确指定数据所在的逻辑段 熟悉上述内容后,就可以进入下节 8088的内部结构 1 2 3 4 内部暂存器 IP ES SS DS CS 输入/输出控制电路 总线 执行
原创力文档


文档评论(0)