汇编add指令详解(在汇编中,指令DAA是什么意思)

本文目录
在汇编中,指令DAA是什么意思
十进制数加调整指令DAA(Decimal Adjust After Addition)
该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。
压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。
其调整规则如下:
1、如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;
2、如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;
3、如果以上两点都不成立,则,清除标志位AF和CF。
经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。
汇编带进位加法指令问题
ADD指令只是将操作数中给出的两个数相加
而ADC则是再两个操作数相加的基础上再加上CF里的数(可能是1和0)
你可能对这个加上CF里的数的过程很费解吧?下面解释为什么加这个CF
当两个操作数的和大于所能表示的位数的时候,会出现进位的现象,但寄存器的位数又是有限的,这个进的位放到哪里呢?其实是放到CPU的标志寄存器里去了,下面举两个产生进位和没产生进位的ADD指令
MOV AL,11
ADD AL,11
这个ADD指令的和是22,没有产生进位,CF=0
MOV AL,0FEH
ADD AL,64H
这个的和是162H,八位的寄存器表示不下了,CPU将CF设置成1,AL=62
因为两个八位的二进制数最多只能产生一位的进位,所以一个CF就够用了
下面回想一下小学的100以内的加法运算的过程
然后看看如何进行超出寄存器所能表示的位数的数的加法运算
比如计算64+27,先将4和7相加,得13,我们可以把这个3就当成是AL这个寄存器里的数,而将这个1当成是CF里的数,这样我们进行第二位的计算时,先计算6+2,然后在加上这个"CF"里的1,结果的9,所以最后的结果就是93
现在明白带进位加法指令的意义的吧?
给你举一个用16位寄存器计算32位加法的例子:
第一加数:DX为高位,AX为低位
第二加数:CX为高位,BX为低位
结果放在DX(高位)和AX中
ADD AX,BX
ADC DX,CX
就这么简单的两条指令O(∩_∩)O~
双精度就是表示小数的一种方式,用存储空间的一部分代表科学计数法的a×10^n的a
一部分代表n
和单精度基本上没什么两样,只是表示的范围比单精度的大,因为位数比单精度的大嘛,单精度是32位的,双精度的是64位的
单精度:
***隐藏网址***
双精度:
***隐藏网址***

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




