网站大量收购闲置独家精品文档,联系QQ:2885784924

第2章微型计算机原理与应用讲解.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 8088/8086的标志寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CF PF OF DF IF TF SF ZF AF CF PF AF ZF SF TF IF DF OF CF:进位标志 当执行一个加法运算使最高位产生进位 时,或执行一个减法运算引起最高位产 生借位时CF=1,否则CF=0。此外循环 指令也会影响这一标志。 SF:符号标志 与运算结果的最高位相同,当数据用补 码表示时,负数的最高位为1,所以符号 标志表示运算执行后的结果是正还是负。 ZF:零标志 当前的运算结果为零ZF=1, 当前的运算结果为非零ZF=0。 PF:奇/偶标志 运算结果的低8位中所含的1的 个数为偶数PF=1,否则PF=0。 AF:辅助进位标志 加法运算时,如果第3位往第4位 有进位,减法运算时,第3位往第 4位有借位AF=1。 OF:溢出标志 运算过程产生溢出时OF=1。 DF:方向标志 控制串操作指令用的标志,DF=0串操作过 程中的地址会不断增值,DF=1串操作过程 中的地址会不断减值。 IF:中断标志 控制可屏蔽中断的标志,IF=0 CPU不能 对可屏蔽中断请求作出响应,IF=1 CPU 可接受可屏蔽中断请求。 TF:跟踪标志 TF=1,CPU按跟踪方式执行指令。 控制标志 状态标志 2.2.4 8088/8086的功能结构 * 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 + 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 运算结果最高位为1 ∴SF=1; 例:2个数相加后,分析各标志位的值 第三位向第四位有进位 ∴AF=1; 次高位向最高位有进位 ,最高位向前没有进位,∴OF=1?0=1 最高位没有进位 ∴CF=0; 低8位中1的个数为偶数个 ∴PF=1; 运算结果本身≠0 ∴ZF=0; 2.2.4 8088/8086的功能结构 * 2.2.5 8086的存储器组织   8086有20根地址线,具有1M字节的存储器地址空间。这1M字节的内存单元按照00000~FFFFFH来编址。 8086有20根地址线,但其内部可以表示的地址最多只能是16位。 连续 逻辑段 A段 B段 C段 D段 E段 00000H 10000H 20000H 30000H 40000H …… 实际(物理) 存储器 分离 完全重叠 部分重叠 为了能寻址1MB空间,8086对存储器进行逻辑分段,每个逻辑段≤64K, 1M的空间分成16个逻辑段(0~15)。允许它们在整个存储空间浮动,即段与段之间可以部分重叠、完全重叠、连续排列、断续排列。 * 物理地址的生成方法 2 0 位 物 理 地 址 偏移地址(16位) 段基 地 址(16位) 0000 + 2.2.5 8086的存储器组织 * 在寻址一个具体的物理单元时,必须要由一个基地址再加上SP或IP或BP或SI或DI等可由CPU处理的16位偏移量来形成实际的20位物理地址。 I P C S S I 、 D I 或 B X D S S P 或 B P S S 代 码 段 数 据 段 堆 栈 段 C S 、 D S 、 S S 和 其 他 寄 存 器 组 合 指 向 存 储 单 元 示 意 2.2.5 8086的存储器组织 * 存储器中的操作数可以是一个字节,也可以是一个字。如果是字操作数,那么低位字节放在较低的地址单元,高位字节放在较高地址单元。 在不改变段寄存器值的情况下,寻址的最大范围是64KB。所以若有一个任务,它的程序长度、堆栈长度以及数据区长度都不超过64KB,可在程序开始的时候,分别给DS、SS、ES置值,然后在程序中就可以不再考虑这些段寄存器,程序就可以在各自的区域中正常地进行工作。 若某一个任务所需的总的存储器长度(包括程序长度、堆栈长度和数据长度等)不超过64KB,则可以在程序开始时使CS、SS、DS相等,程序也能正常工作。   若一个程序中要用的数据区超过64KB,或要求从两个(或多个)不同区域中去存取操作数,只要在取操作数以前,用指令给数据段寄存器重新赋值就可以了。 2.2.5 8086的存储器组织 * [例]: 已知CS=1055H, DS=250AH ES=2EF0H SS=8FF0H 某操作数偏移地址=0204H 画出各段在内存中的分布、 段首地址及操作数的物理地址 10550H 250A0H 2EF00H 8FF00H CS DS ES SS 设操作数在数据段,则

文档评论(0)

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

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

1亿VIP精品文档

相关文档