




已阅读5页,还剩151页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言课件由本课件或汇编器()创建和提供。 第11章标志寄存器11.1ZF标志11.2PF标志11.3SF标志11.4CF标志11.5OF标志11.6adc命令11.7sbb命令11.8cmp命令11.9检测比较结果的条件分支命令11.10DF标志、串行传送命令11.11puffh和popfh 在Debug中的表现、引言、8086CPU的标志寄存器是16位,其中存储的信息通常被称为程序状态字(PSW )。 我们使用了8086CPU的ax、bx、cx、dx、si、di、bp、sp、ip、cs、ss、ds、es这13个寄存器。 本章的标志寄存器(以下简称flag )是我们学习的最后一个寄存器。 引言,flag与其他寄存器不同,其他寄存器用于存储数据,全部寄存器具有意义。 flag寄存器按每一位发挥作用,即,每一位都有特别的含义,并记录特定的信息。 引言8086CPU的flag寄存器的结构:在8086CPU中不使用flag的1、3、5、12、13、14、15位,没有任何意义。 0、2、4、6、7、8、9、10、11位具有特殊意义。 引言本章将学习标志寄存器的CF、PF、ZF、SF、OF、DF标志位及其相关的典型指令。 11.1ZF标志,flag的第6位是ZF,零标志位。 这记录了当执行相关命令时得到的0,ZF=1的结果不是0,而是作为对于ZF=0的示例(例如,11.1ZF )标志(例如,movax,1subax,1命令)的执行结果,0的结果是ZF=1。 执行movax,2subax,1指令后,结果为1,ZF=0。 另外,对于11.1ZF标记、ZF的值,在与ZF标记相关联的命令的计算结果是0还是0时,在ZF中记录“0”这样的肯定性信息。 在计算机中,1表示逻辑是真的、肯定的,因此结果为0时ZF=1表示“结果为0”。 如果结果不是0,ZF就会记录“不是0”的否定信息。 在计算机中,0表示逻辑假,因为表示否定,当结果不为0时ZF=0表示“结果不是0”。 例如,执行11.1ZF标志、示例命令: movax,1andax,0后,结果为0时,ZF=1,“结果为0”。 命令:运行movax,1orax,0后,如果结果不是0,则ZF=0表示结果不是0。11.1ZF标志,注意:在8086CPU的指令集中,执行add、sub、mul、div、inc、or、and等指令会影响标志寄存器,执行大部分为运算指令(进行逻辑运算或算术运算)的指令也不会影响标志寄存器。 例如mov、push、pop等,它们大多是传送命令。 11.1ZF标志,注意:使用1个指令时,请注意该指令的所有功能。 其中包括执行结果对标志寄存器的哪个标志位产生影响。 11.2PF标志、flag的第2位是PF、奇偶校验标志位。 在执行指令之后,它记录所有结果二进制比特中的第一个比特的数目:偶数,PF=1; 奇数,PF=0。 例如,11.2PF标志,例如命令: moval,1addal,执行10后,结果为00001011B,其中有3个(奇数)个1时,PF=0; 命令:执行moval,1oral,10后,结果为00000011B,其中有2个(偶数)个1时PF=1; 11.3SF标志、flag的第7位为SF、标志位。 它在执行命令后,结果为负,记录SF=1的结果为正,SF=0。 编码数据和补数有例如moval,10000001Baddal,1结果: (al)=10000010B,编码数据和补数有关,我们知道在计算机中常用的补数有编码数据。 计算机内的单个数据被视为具有符号数或没有符号数。 例如,00000001B可以被认为是无符号整数1或有符号整数1的100000001 b可以被认为是无符号整数129,或者被认为是有符号整数-127。 有符号数和补码。 也就是说,对于相同的二进制数据,计算机可以将其计算为无符号数据或有符号数据。此外,11.3SF标志,我们所作的add命令的运算可以是无符号运算,其中,add命令对应于计算129 1,结果为130 (10000010 b )。 也可以利用具有符号的add命令的运算,其中,add命令对应于计算-127 1,并且结果为-126(10000010B )。 不管我们怎么想,当CPU执行诸如add之类的命令时,11.3SF标志既包含两个含义,也能获得记录在相同信息中的两个结果。 重要的是我们的程序需要什么样的结果。 另外,11.3SF标记、SF标记是CPU的带符号运算结果的记录中记录数据的正负。 在我们将数据作为有符号整数进行运算的情况下,那么可知道结果的正负。 当数据被计算为无符号整数时,SF的值没有意义,但是相关联的指令将影响该值。 此外,当执行指令,例如add时,11.3SF标志,即CPU必定影响SF标志位的值。 关于不需要这样的影响,让我们来看看命令进行的计算是怎样的。 另外,在执行了11.3SF标志,例如moval、1000001 baddal、1之后,结果为10000010B、SF=1,如果命令进行了带符号运算,则结果表示为负的11.3SF标志,此外,例如moval、1000001 baddal 11.3SF标志,其影响标志寄存器的多个标志位,使得受影响的标志位相对全面地记录指令的执行结果,并且为相关联的处理提供必要的依据。 例如,在执行subal、al时,ZF、PF、SF等标志位受到影响,分别为1、1、0。 尤其是检测点11.1(p205 )尚未完成该检测点,因此请勿向下移动。 11.4CF标志、flag的第0位为CF、进位标志位。 一般而言,在进行无符号整数运算的情况下,记录运算结果的从最高位向高位的进位值、或者来自高位的进位值。 另外,11.4CF标志是对于比特数为n的无符号数,作为与其对应的二进制信息的最高有效位的第N-1比特的最高有效位,虚拟存在的第n比特是对于最高有效位的最高有效位。 另外,已知当将11.4CF标志和两个数据相加时,可能发生从最高有效位到最高有效位的进位。 例如,两个8位数据: 98H 98H生成进位。 因为这个进位值不能用8位保存,所以在以前的课程中,只简单地说这个进位值丢失了。 另外,11.4CF标志,实际上是CPU运算时,并不是废弃该进位值,而是记录在特殊寄存器的某个位中。 8086CPU以flag的CF位记录该进位值。 另外,11.4CF标志,例如moval、98Haddal、al; 执行后: (al)=30H、CF=1、 CF记录从最高有效位到最高位的进位值addal,al执行后: (al)=30H、CF=1、 CF记录有从最高有效位到最高位的进位值,11.4CF标记,但是在减去2个数据的情况下,有可能进位到最高位。 例如,两个8比特数据: 97H-98H对应于发生借位并计算借位之后的197H-98H。 flag的CF位也可用于记录此借位值。 另外,11.4CF标志,例如moval、98Haddal、al; 执行后: (al)=30H、CF=1、 CF记录从最高有效位到最高位的进位值addal,al执行后: (al)=30H、CF=1、 CF记录了从最高有效位到上位的进位值、11.5OF标志,首先就溢出的问题进行说明。 在进行带符号整数运算的情况下,将结果超出机器能够显示的范围的情况称为溢出(overflow )。 那么,机器能够表现的范围是什么呢?11.5OF标志,例如指令运算的结果存储在8位寄存器或存储单元中。 例如,在addal,3中,对于8位的带符号数据,机器可显示的范围为-128127。 同样,16位有符号数时,机器可表现的范围为-3276832767。 另外,在11.5OF标志、运算结果超出机器能够表现的范围的情况下,发生溢出。 请注意,此处所说的溢出仅适用于带符号运算。让我们看看两个溢出的例子。 执行、11.5OF标志、示例命令moval、98addal、99时发生溢出。 addal,99的带符号运算是(al)=(al) 99=98 99=197,结果197超出了机器能够表现的8位带符号数的范围。 - 128至127。11.5OF标志、命令示例: moval、0F0H; 0F0H,代码数-16的补数addal,88H; 执行88H、符号数-120的补数时发生溢出。 addal,88H执行的带符号运算为(al )=(al ) (-120 )=(-16 ) (-120 )=-136 ),因为结果-136超出了机器可表示的8位带符号范围。 - 128至127。 另外,关于11.5OF标志,如果在执行有符号整数运算时发生溢出,则运算结果不正确。 在上述的两个例子中,moval、98addal、99add命令运算的结果是(al)=0C5H,因为进行有符号运算,所以在al中存储有符号数,0C5H是有符号数-59的补数。 此外,如果利用11.5OF标志、add指令进行带符号运算,则不能接受98 99=-59这一结果。 该原因是实际的结果197,因而无法存储在8位寄存器al中作为带符号整数。 11.5OF标志,同样,moval、0F0H; 0F0H,代码数-16的补数addal,88H; 88H,带符号整数-120的补数add命令计算的结果为(al)=78H,并且执行带符号整数计算,使得将带符号整数存储在al中,并且78H表示带符号整数120。 此外,在利用11.5OF标志、add指令进行带符号运算的情况下,-16-120=120这一结果明显不正确。 该原因是实际结果-136,并且不能存储在8位寄存器al中作为有符号整数。 11.5OF标志在进行带符号数运算时,可能会发生溢出而导致结果错误。 CPU必须记录执行指令后是否发生溢出。 flag的第11位是OF,溢出标志的位。 另外,在11.5OF标记处,通常,OF记录了有符号运算的结果是否溢出。 发生溢出时,OF=1,没有发生溢出时,OF=0。 另外,应当注意11.5OF标志,CF和OF之间的差异: CF是无符号数学运算中有意义的标志位,而OF是符号数学运算中有意义的标志位。 11.5OF标志,例如执行moval、98addal、99add指令后: CF=0,OF=1。 如上所述,当执行诸如add之类的指令时,CPU包括无符号计算和有符号计算这两个含义。 另外,对于11.5OF标志和无符号整数运算,在CPU以CF位记录进位是否发生的有符号运算中,CPU以OF位记录溢出是否发生,当然以SF位记录结果的符号。对于11.5OF标志、无符号数运算,无98 99位进位,CF=0; 在带符号整数运算中,98 99溢出,并且OF=1。执行11.5OF标志、moval、0F0Haddal、88Hadd命令后: CF=1、OF=1。 在无符号整数运算中,0F0H 88H有进位,CF=1; 在带符号整数运算中,0F0H 88H溢出,OF=1。执行11.5OF标志、moval、0F0Haddal、78Hadd命令后: CF=1、OF=0。 在无符号运算中,0F0H 78H有进位,CF=1; 在有符号运算中,0F0H 78H不溢出,OF=0。 另外,发现由11.5OF标志和CF与OF表示的进位和溢出,相对于无符号数目和有效符号数目的计算,它们之间没有任何关系。 尤其是检查点11.2(page207 )尚未完成该检查点,请勿向下进行。 11.6adc命令和adc命令使用CF比特记录的进位值,并且附加进位加法命令。 格式: adc操作对象1、操作对象2功能:操作对象1=操作对象1操作对象2 CF,例如adcax、bx实现的功能包括(ax)=(ax) (bx) CFadc命令执行步骤演示、11.6adc命令、adc命令示例(movax,2movbx,1subbx,axadcax,l 执行adc时,相当于(ax) 1 CF=2 1 1=4。11.6adc命令、adc命令示例(movax、1addax、axadcax、3执行后,(ax)=5)。 执行adc时,相当于(ax) 3 CF=2 3 0=5。11.6adc命令、adc命令示例(在执行moval、98Haddal、aladcal和3之后,(ax)=34H )。 执行adc时,相当于(ax) 3 CF=30H 3 1=34H。可选地,11.6adc命令指示adc命令比add命令增加1个CF比特值。 为什么要加上CF的值?CPU为什么要提供这样的命令呢? 让我们先看看CF值的含义。 另外,11.6adc命令,在执行adc命令时添加的CF值的含义由adc命令之前的命令确定,也就是说,要添加的CF值由哪个命令设置是重要的。 很明显,如果CF的值是由sub命令设置的,并且该意思是由作为借位值的add命令设置的,则该意思是进位值。 11.6adc命令,我们来看看以下两个数据: 0198H和0183H如何相加: 0198 01831-031 b,相加可分两个阶段进行: (1)下位相加; (2)在上位加法中加上下位加法的进位值。 此外,具有与addax,bx相同的结果的11.6adc命令;可以设想addal、bladcah,bh用于CPU提供adc命令的目的是用于求和的第二步骤操作。 adc指令和add指令组合后,可增加更大的数据。 另外,11.6adc命令、编程计算器1EF000H 201000H,结果输入到ax (高位16比特)和bx (低位16比特)中。 分析,11.6adc指令,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚后子女抚养费增加及支付方式调整合同
- 机器学习在数据分析中的新应用-洞察及研究
- 社交媒体整合对织梦系统销售转化率提升研究-洞察及研究
- 2025四川省住宿和餐饮行业劳动合同书
- 2025-2030封装晶体振荡器行业企业战略合作与联盟模式研究报告
- 2025-2030多协议网关在异构楼宇控制系统集成中的技术突破方向
- 2025-2030固态电解质材料研发进展与固态电池产业化障碍评估
- 2025-2030固态电池量产时间节点与产业链重构机会研究
- 2025-2030固态电池量产工艺突破对动力电池行业重塑影响分析
- 2025-2030固态电池量产工艺突破与供应链重塑机会研判
- 施工现场安全监理危险源清单一览表
- GB/T 233-2000金属材料顶锻试验方法
- FZ/T 74003-2014击剑服
- 颈椎DR摄影技术-
- 功能材料概论-课件
- 一点儿有点儿课件
- 眼视光技术专业技能考核题库-眼镜定配技术模块
- 体育测量与评价-第二章-体育测量与评价的基础理论课件
- 超清地质年代表
- 铺轨工程监理规划及工作内容
- 女生青春期生理卫生知识讲座(课堂PPT)
评论
0/150
提交评论