十进制调整指令优质PPT.ppt
- 文档编号:15655381
- 上传时间:2022-11-10
- 格式:PPT
- 页数:15
- 大小:287KB
十进制调整指令优质PPT.ppt
《十进制调整指令优质PPT.ppt》由会员分享,可在线阅读,更多相关《十进制调整指令优质PPT.ppt(15页珍藏版)》请在冰豆网上搜索。
对AL中的加法结果进行中的加法结果进行BCD运算调整运算调整例例:
89+57MOVAL,89H;
BCD数数89装入装入AL,使用,使用16进制数格式进制数格式ADDAL,57H;
按照二进制格式相加;
按照二进制格式相加,(AL)=0E0H,AF=1DAA;
进行;
进行BCD加法调整,(加法调整,(AL)=46H,CF=1说明说明:
调整之前先进行二进制加法,和必须在调整之前先进行二进制加法,和必须在AL中中。
(1)DAA(DecimalAdjustafterAddition)十进制加法调整)十进制加法调整if(AL低低4位位9或或AF=1)thenAL=AL+06H;
AF=1;
endifif(AL高高4位位9或或CF=1)thenAL=AL+60H;
CF=1;
endifDAA调整算法:
调整算法:
格式格式:
DAS功能功能:
对AL中的减法结果进行中的减法结果进行BCD运算调整运算调整例例:
8357MOVAL,83H;
BCD数数83装入装入AL,使用,使用16进制数格式进制数格式SUBAL,57H;
按照二进制格式相减;
按照二进制格式相减,(AL)=2CH,AF=1DAS;
进行BCD减法调整减法调整,(AL)=26H,CF=0说明说明:
调整之前先进行二进制减法,差在调整之前先进行二进制减法,差在AL中。
中。
(2)DAS(DecimalAdjustafterSubtraction)十进制减法调整)十进制减法调整if(AL低低4位位9或或AF=1)thenAL=AL06H;
endifif(AL高高4位位9或或CF=1)thenAL=AL60H;
endifDAS调整算法:
两个数的加法要分两个数的加法要分4次进行。
次进行。
最低最低2位数的加法(位数的加法(78+66)用)用ADD指令相加,指令相加,DAA指令调整。
指令调整。
其余三次加法用其余三次加法用ADC指令相加,指令相加,DAA指令调整。
上面的上面的4次运算可以用循环实现。
运算前通过指令次运算可以用循环实现。
运算前通过指令“ADDAL,0”把把CF清清零,零,4次加法统一使用次加法统一使用ADC指令实现。
指令实现。
DATASEGMENTADD12345678HBDD33445566HXDD?
DATAENDS例例3-9用用BCD数进行运算:
数进行运算:
12345678+33445566CODESEGMENTASSUMEDS:
DATA,CS:
CODESTART:
MOVAX,DATAMOVDS,AXMOVDI,0;
设置指针初值;
设置指针初值MOVCX,4;
循环次数;
循环次数ADDAL,0;
CF清零清零NEXT:
MOVAL,BYTEPTRADI;
取出;
取出A的两位的两位BCD数数ADCAL,BYTEPTRBDI;
与;
与B的对应两位进行加法的对应两位进行加法DAA;
BCD数加法调整数加法调整MOVBYTEPTRXDI,AL;
保存结果;
保存结果INCDI;
修改指针;
修改指针LOOPNEXT;
计数和循环控制;
计数和循环控制MOVAX,4C00HINT21HCODEENDSENDSTART程序运行后,(程序运行后,(X)=45791244H,结果正确。
如果把如果把“INCDI”指令改为指令改为“ADDDI,1”,运行后,运行后(X)=45781144H,结果错误。
,结果错误。
用用TD单步执行程序,发现单步执行程序,发现78H+66H和和56H+55H均产生了进位均产生了进位(CF=1),执行),执行“ADDDI,1”指令后,指令后,CF均被清零,低位的均被清零,低位的进位没有传递到高位,导致了错误的发生。
进位没有传递到高位,导致了错误的发生。
“INCDI”指令不影响指令不影响CF,程序能够正常运行,这一点在设计,程序能够正常运行,这一点在设计指令系统时已经作了充分的考虑。
指令系统时已经作了充分的考虑。
从本例可以看到,使用从本例可以看到,使用CF传递进位时,要细心地选择所使用传递进位时,要细心地选择所使用的指令。
的指令。
汇编语言程序员,应该十分注意标志位的状态汇编语言程序员,应该十分注意标志位的状态。
(1)AAA(ASCIIAdjustafterAddition)非压缩十进制加法调整)非压缩十进制加法调整格式格式:
AAA功能功能:
对AL中的加法结果进行非压缩中的加法结果进行非压缩BCD数运算调整数运算调整例例:
9+8MOVAL,9;
非压缩;
非压缩BCD数数9装入装入AL,使用,使用ASCII格式格式ADDAL,8;
按照二进制格式相加,(;
按照二进制格式相加,(AL)=71H,AF=1AAA;
非压缩BCD加法调整,(加法调整,(AL)=07H,CF=1说明说明:
调整之前先进行二进制加法,和必须在调整之前先进行二进制加法,和必须在AL中中;
低低4位的进位用两种方式同时表达:
位的进位用两种方式同时表达:
CF=1,AH=AH+1。
2.2.非压缩非压缩BCDBCD数运算数运算if(AL低低4位位9或或AF=1)thenAL=AL+06H;
AH=AH+1;
elseAF=0;
CF=0;
endifAL=ALAND0FH;
AL高高4位清零位清零AAA调整算法:
AAS功能功能:
对AL中的减法结果进行非压缩中的减法结果进行非压缩BCD数运算调整数运算调整例例:
68MOVAL,6;
非压缩BCD数数6装入装入AL,使用,使用ASCII格式格式SUBAL,8;
按照二进制格式相减,;
按照二进制格式相减,(AL)=0FEH,AF=1AAS;
进行非压缩;
进行非压缩BCD加法调整,加法调整,(AL)=08H,CF=1说明说明:
低低4位的借位用两种方式同时表达:
位的借位用两种方式同时表达:
CF=1,AH=AH1。
(2)AAS(ASCIIAdjustafterSubtraction)非压缩十进制减法调整非压缩十进制减法调整if(AL低低4位位9或或AF=1)thenAL=AL06H;
AH=AH1;
AL高高4位清零位清零AAS调整算法:
AAM功能功能:
对AX中的乘法结果进行非压缩中的乘法结果进行非压缩BCD数运算调整数运算调整调整算法调整算法:
AH=AX/10,AL=AXmod10例例:
67MOVAL,6;
非压缩BCD数数6装入装入AL,高,高4位必须为位必须为0MOVBL,7;
非压缩BCD数数7装入装入BL,高,高4位必须为位必须为0MULBL;
按照二进制格式相乘,(;
按照二进制格式相乘,(AX)=002AHAAM;
非压缩BCD乘法调整,乘法调整,(AH)=04H,(AL)=02H说明说明:
先进行二进制无符号乘法:
先进行二进制无符号乘法,积在积在AX中,然后用中,然后用AAM指令调整。
(3)AAM(ASCIIAdjustafterMultiplication)非压缩十进制乘法调整非压缩十进制乘法调整格式格式:
AAD功能功能:
将:
将AH和和AL中的两位中的两位BCD数调整为等值的数调整为等值的16位二进制数位二进制数调整算法调整算法:
AX=AH10+AL例例:
587MOVAX,0508H;
非压缩BCD数数58装入装入AX,高,高4位必须为位必须为0AAD;
把非压缩;
把非压缩BCD数数58调整为二进制数调整为二进制数,(AX)=003AHMOVBL,7DIVBL;
按照二进制格式相除;
按照二进制格式相除;
(AL)=08H(商商),(AH)=02H(余数)(余数)说明说明:
先进行非压缩先进行非压缩BCD数调整数调整,然后用二进制无符号数除法指,然后用二进制无符号数除法指令相除,商在令相除,商在AL中,余数在中,余数在AH中。
(4)AAD(ASCIIAdjustbeforeDivision)非压缩十进制除法调整)非压缩十进制除法调整
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 十进制 调整 指令