微微型计算机原理及应用课件BCD码运算的十进制.ppt

微微型计算机原理及应用课件BCD码运算的十进制.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * BCD码运算的十进制调整指令 专用于对BCD码运算的结果进行调整 包括:AAA、DAA、AAS、DAS、AAM、AAD 均为隐含寻址,隐含的操作数为AL和AH 为何要对BCD码的运算结果进行调整? BCD码本质上是十进制数,即应遵循逢十进一的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制规则进行运算。 * 8088的调整指令主要用于十进制数的调整。这些指令包括:   AAA:对AL中非压缩BCD码求和的结果进行调整。   AAS:对AL中非压缩BCD码求差的结果进行调整。   AAD:在实现十进制除法时,在除法指令前对AX用中非压缩BCD码表示的十进制数进行调整。   AAM:在实现十进制乘法时,对AX中两个非压缩BCD码相乘的结果进行调整。   DAA:对AL中的两个压缩BCD码相加之和进行调整,得到用压缩BCD码表示的十进制和。   DAS:对AL中的两个压缩BCD码相减之差进行调整,得到用压缩BCD码表示的十进制差。 * 加法的十进制调整指令 非压缩BCD码加法调整AAA 本指令对在AL中的由两个未组合的BCD码相加后的结果进行调正,得到一个正确的未组合的BCD码。 AAA指令只影响AF和CF,其余标志无定义。 AAA指令应紧跟在ADD或ADC指令之后。 * AAA指令的操作如下: * 如果AL的低4位>9∨AF=1,则: ① AL←(AL)+6,(AH)←(AH)+1,AF←1 ② AL←((AL)∧0FH) ③ CF←AF 否则AL←(AL)∧0FH 调整原理:先看一个例子 计算8+9 0000 1000 见右式 +0000 1001 0001 0001 = 11 结果应为17,而计算机相加为11,原因在于运算过程中,如遇到低4位往高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位,个位就会少6,这就要进行加6调正。 * 这个1代表了16,而实际上仅应为10,即多进了6。 实际上当低4位的结果>9(即A~F之间)时,也应进行加6调正 (原因是逢十没有进位,故用加6的方法强行产生进位) 。 如对上例的结果进行加6: 0001 0001 11 + 0000 0110 6 0000 0111 17 ^ 0000 1111 ---------------------- 1 0000 1111 * 压缩BCD码加法调整DAA 两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码. 指令操作(调整方法): 若AL的低4位>9∨AF=1 则(AL)←(AL)+6,AF←1 若AL的高4位>9∨CF=1 则(AL)←(AL)+60H,CF←1 除OF外,DAA指令影响所有其它标志。 DAA指令应紧跟在ADD或ADC指令之后。 * 例: 0100 1000 48H MOV AL,48H + 0111 0100 74H MOV BL,74H 1011 1100 BCH ADD AL,BL + 0110 0110 66H DAA 1 0010 0010 1 22H (进位) (进位) 执行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令执行加66H调整,最后结果为: (AL)=22H, CF=1, AF=1 * * 3) 乘法的十进制调正指令AAM 对AX中由两个非压缩BCD码相乘的结果进行调整。调整操作为: (AL)/0AH, (AH)←商,(AL)←余数 隐含的操作寄存器为AL和AH; AAM跟在MUL指令之后使用; 影响标志位PF、SF、ZF,其它无定义; 用AAM可实现≤99的二-十进制转换。 *

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档