




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于十进制调整指令第一页,共十五页,编辑于2023年,星期日对相加后的结果作调整:在80X86微处理器上,上述调整由“十进制调整指令”实现。如果4位组的和有进位,或者出现了非法组合,将本组数字加6调整第二页,共十五页,编辑于2023年,星期日格式: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)十进制加法调整第三页,共十五页,编辑于2023年,星期日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调整算法:第四页,共十五页,编辑于2023年,星期日格式: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)十进制减法调整第五页,共十五页,编辑于2023年,星期日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调整算法:第六页,共十五页,编辑于2023年,星期日两个数的加法要分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第七页,共十五页,编辑于2023年,星期日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第八页,共十五页,编辑于2023年,星期日
程序运行后,(X)=45791244H,结果正确。如果把“INCDI”指令改为“ADDDI,1”,运行后
(X)=45781144H,结果错误。用TD单步执行程序,发现78H+66H和56H+55H均产生了进位
(CF=1),执行“ADDDI,1”指令后,CF均被清零,低位的
进位没有传递到高位,导致了错误的发生。
“INCDI”指令不影响CF,程序能够正常运行,这一点在设计
指令系统时已经作了充分的考虑。从本例可以看到,使用CF传递进位时,要细心地选择所使用
的指令。汇编语言程序员,应该十分注意标志位的状态。
第九页,共十五页,编辑于2023年,星期日(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数运算第十页,共十五页,编辑于2023年,星期日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调整算法:第十一页,共十五页,编辑于2023年,星期日格式: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)非压缩十进制减法调整第十二页,共十五页,编辑于2023年,星期日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调整算法:第十三页,共十五页,编辑于2023年,星期日格式: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乘法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木材加工中的刀具磨损与维护考核试卷
- 动物胶在纺织工业中的应用考核试卷
- 床上用品企业产品生命周期管理考核试卷
- 塑料制品在汽车燃油系统的应用考核试卷
- 婚庆布置道具考核试卷
- 放射性金属矿选矿新技术与发展趋势分析考核试卷
- 成人学生心理健康教育考核试卷
- 阿姐房屋租赁合同范本
- 沙石购销合同范本
- 苏州房屋装修合同范本
- 南航集团招聘笔试题库2024
- 中级消防设施操作员证培训项目服务方案
- 自考15040习新时代思想概论高频备考复习重点
- 精神障碍诊疗规范(2020-年版)-人格-现实解体障碍
- DB32T-工业有机废气治理用活性炭技术要求
- 污水处理及中水回用工程可行性研究报告书
- 医学课件小儿腹泻5
- 小学六年级语文下册《北京的春天》课件
- 发展汉语 初级读写一 第二课 谢谢你
- 景观照明设施运行维护经费估算
- GB/T 12279.1-2024心血管植入器械人工心脏瓣膜第1部分:通用要求
评论
0/150
提交评论