十进制调整指令_第1页
十进制调整指令_第2页
十进制调整指令_第3页
十进制调整指令_第4页
十进制调整指令_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于十进制调整指令对相加后的结果作调整:在80X86微处理器上,上述调整由“十进制调整指令”实现。如果4位组的和有进位,或者出现了非法组合,将本组数字加6调整第2页,共15页,2024年2月25日,星期天格式:DAA功能:对AL中的加法结果进行BCD运算调整例:89+57MOV AL,89H;BCD数89装入AL,使用16进制数格式ADD AL,57H;按照二进制格式相加,(AL)=0E0H,AF=1DAA ;进行BCD加法调整,(AL)=46H,CF=1说明:调整之前先进行二进制加法,和必须在AL中。(1)DAA(DecimalAdjustafterAddition)十进制加法调整第3页,共15页,2024年2月25日,星期天if(AL低4位>9或AF=1)then AL=AL+06H; AF=1;endifif(AL高4位>9或CF=1)then AL=AL+60H; CF=1;endifDAA调整算法:第4页,共15页,2024年2月25日,星期天格式:DAS功能:对AL中的减法结果进行BCD运算调整例:83-57MOV AL,83H;BCD数83装入AL,使用16进制数格式SUB AL,57H;按照二进制格式相减,(AL)=2CH,AF=1DAS ;进行BCD减法调整,(AL)=26H,CF=0说明:调整之前先进行二进制减法,差在AL中。

(2)DAS(DecimalAdjustafterSubtraction)十进制减法调整第5页,共15页,2024年2月25日,星期天if(AL低4位>9或AF=1)then AL=AL-06H; AF=1;endifif(AL高4位>9或CF=1)then AL=AL-60H; CF=1;endifDAS调整算法:第6页,共15页,2024年2月25日,星期天两个数的加法要分4次进行。最低2位数的加法(78+66)用ADD指令相加,DAA指令调整。其余三次加法用ADC指令相加,DAA指令调整。上面的4次运算可以用循环实现。运算前通过指令“ADDAL,0”把CF清零,4次加法统一使用ADC指令实现。DATA SEGMENT A DD 12345678H B DD 33445566H X DD ?DATA ENDS[例3-9]用BCD数进行运算:12345678+33445566第7页,共15页,2024年2月25日,星期天CODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX,DATA MOV DS,AX MOV DI,0 ;设置指针初值

MOV CX,4 ;循环次数

ADD AL,0 ;CF清零NEXT: MOV AL,BYTEPTRA[DI] ;取出A的两位BCD数

ADC AL,BYTEPTRB[DI] ;与B的对应两位进行加法

DAA

;BCD数加法调整

MOV BYTEPTRX[DI],AL ;保存结果

INC DI ;修改指针

LOOP NEXT ;计数和循环控制

MOV AX,4C00H INT 21HCODE ENDS END START第8页,共15页,2024年2月25日,星期天

程序运行后,(X)=45791244H,结果正确。如果把“INCDI”指令改为“ADDDI,1”,运行后

(X)=45781144H,结果错误。用TD单步执行程序,发现78H+66H和56H+55H均产生了进位

(CF=1),执行“ADDDI,1”指令后,CF均被清零,低位的

进位没有传递到高位,导致了错误的发生。

“INCDI”指令不影响CF,程序能够正常运行,这一点在设计

指令系统时已经作了充分的考虑。从本例可以看到,使用CF传递进位时,要细心地选择所使用

的指令。汇编语言程序员,应该十分注意标志位的状态。

第9页,共15页,2024年2月25日,星期天(1)AAA(ASCIIAdjustafterAddition)非压缩十进制加法调整格式:AAA功能:对AL中的加法结果进行非压缩BCD数运算调整例:’9’+’8’MOV AL,‘9’;非压缩BCD数9装入AL,使用ASCII格式

ADD AL,‘8’;按照二进制格式相加,(AL)=71H,AF=1AAA ;非压缩BCD加法调整,(AL)=07H,CF=1说明:调整之前先进行二进制加法,和必须在AL中;

低4位的进位用两种方式同时表达:CF=1,AH=AH+1。非压缩BCD数运算第10页,共15页,2024年2月25日,星期天if(AL低4位>9或AF=1)then AL=AL+06H; AH=AH+1; AF=1; CF=1;else AF=0; CF=0;endif AL=ALAND0FH ;AL高4位清零AAA调整算法:第11页,共15页,2024年2月25日,星期天格式:AAS功能:对AL中的减法结果进行非压缩BCD数运算调整例:’6’-’8’MOVAL,‘6’;非压缩BCD数6装入AL,使用ASCII格式

SUB AL,‘8’;按照二进制格式相减,(AL)=0FEH,AF=1AAS ;进行非压缩BCD加法调整,(AL)=08H,CF=1说明:调整之前先进行二进制减法,差在AL中。 低4位的借位用两种方式同时表达:CF=1,AH=AH-1。(2)AAS(ASCIIAdjustafterSubtraction)非压缩十进制减法调整第12页,共15页,2024年2月25日,星期天if(AL低4位>9或AF=1)then AL=AL-06H; AH=AH-1; AF=1; CF=1;else AF=0; CF=0;endif AL=ALAND0FH ;AL高4位清零AAS调整算法:第13页,共15页,2024年2月25日,星期天格式:AAM功能:对AX中的乘法结果进行非压缩BCD数运算调整调整算法:AH=AX/10,AL=AXmod10例:6×7MOV AL,6 ;非压缩BCD数6装入AL,高4位必须为0MOV BL,7 ;非压缩BCD数7装入BL,高4位必须为0MUL BL ;按照二进制格式相乘,(AX)=002AHAAM ;非压缩BCD乘法调整,(AH)=04H,(AL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论