您的位置:首页 > 其它

汇编算术运算指令

2010-02-27 16:53 337 查看
 算术运算指令
 

 
ADDADCINCNEGMULIMULCBWDAAAAA
SUBSBBDECCMPDIVIDIVCWDDASAAS
 
加法运算指令
ADD(ADD)加法指令
ADD     DST , SRC      //Byte/Word
执行操作: dst=dst+src
1.两个存储器操作数不能通过ADD指令直接相加, 即DST 和SRC必须有一个是通用寄存器操作数.
2.段寄存器不能作为SRC 和DST.
3.影响标志位Auxiliary Crray Flag ,Carry Flag, Overflow Flag, Parity Flag, Sign Flag 和Zero Flag ,如下所示:
CF根据最高有效位是否有进(借)位设置的:有进(借)位时CF=1, 无进(借)位时CF=0.
OF根据操作数的符号及其变化来设置的:若两个操作数的符号相同,而结果的符号与之相反时OF=1, 否则为0.
ZF根据结果来设置:不等于0时ZF=0, 等于0时ZF=1
SF根据结果的最高位来设置:最高位为0, 则SF=0.
AF根据相加时D3是否向D4进(借)位来设置:有进(借)位时AF=1, 无进(借)位时AF=0
PF根据结果的1的个数时否为奇数来设置:1的个数为奇数时PF=0, 为偶数时PF=1
 
 
 
ADC( ADd with Carry)带进位加法指令
ADC     DST , SRC  //Byte/Word
执行操作: dst=dst+src+CF  //与ADD不同之处是还要加上进位标志位的值.
 
INC ( INCreament) 加1指令
INC    OPR    //Byte/Word
执行操作: OPR=OPR+1
1.OPR可以是寄存器和存储器操作数, 但不能是立即数和段寄存器
2.影响标志位OF,SF,ZF,PF 和AF,不影响CF.
 
减法运算指令
SUB ( SUBtract ) 不带借位的减法指令
SUB    DST , SRC    //Byte/Word
执行操作:dst=dst - src
1.DST和SRC寻址方式及规定与ADD相同.
2.影响全部标志位.(判断标志位参见ADD)
 
 
SBB ( SuBtract with  Borrow) 带借位减法指令
SBB    DST , SRC        //Byte/Word
执行操作:dst= dst - src - CF
 
DEC ( DECrement ) 减1指令
DEC    OPR    //Byte/Word
执行操作:OPR = OPR - 1  //除CF标志位, 其余标志位都受影响.
 
NEG ( NEGate ) 求补指令
NEG    OPR
执行操作:opr = 0- opr //将操作数按位求反后末位加1.
 
 
CMP ( CoMPare ) 比较指令
CMP    OPR1 , OPR2
执行操作:OPR1 - OPR2  //与SUB指令一样执行运算, 但不保存结果.
比较情况无符号数有符号数
A=BZF=1ZF=1
A>BCF=0 && ZF=0SF^OF=0 && ZF=0
A<BCF=1 && ZF=0SF^OF=1 && ZF=0
A>=BCF=0 || ZF=1SF^OF=0 || ZF=1
A<=BCF=1 || ZF=1SF^OF=1 || ZF=1
 
 
乘法运算指令
MUL ( unsigned  MULtiple ) 无符号数乘法指令
MUL    SRC   //Byte/Word    .
执行操作:Byte  =>   AX= AL *src    //字节运算时目的操作数用AL, 乘积放在AX中
         Word =>   DX=AX *src    //字运算时目的操作数用AX, DX存放乘积的高位字, AX放乘积的低位字
1.目的数必须是累加器 AX 或AL,指令中不需写出
2. 源操作数SRC可以是通用寄存器和各种寻址方式的存储器操作数, 而绝对不允许是立即数或段寄存器.
 
IMUL (sIgned  MULtiple) 有符号数乘法指令
IMUL    SRC    //与MUL指令相同,但必须是带符号数
 
 
除法运算指令
DIV ( unsigned DIVide) 无符号数除法指令
DIV     SRC        //Byte/Word    其中: SRC的规定同乘法指令MUL
执行操作:Byte => AX / src     //字节运算时目的操作数在AX中,结果的商在AL中 ,余数中AH中
         Word=> DX,AX /src //字运算时目的操作数在DX高位字和AX低位字中,结果的商在AX中 ,余数在DX中
存储器操作数必须指明数据类型:BYTE PTR src 或 WORD PTR src
 
IDIV (sIgned DIVied) 有符号数除法指令
IDIV     SRC        //Byte/Word        与DIV指令相同,但必须是带符号数
 
 
转换指令
CBW (Convert Byte to Word) 字节转换为字指令
CBW
执行操作: AL中的符号位(D7)扩展到8位AH中,若AL中的D7=0,则AH=00H,若AL中的D7=1,则AH=FFH.
 
CWD (Convert Word  to Double word) 字转换为双字指令
CWD
执行操作: AX中的符号位(D15)扩展到16位DX中,若AX中的D15=0,则DX=0000H,若AX中的D15=1,则DX=FFFFH.
 
 
十进制调整指令
当计算机进行计算时,必须先把十进制数转换为二进制数,再进行二进制数运算,最后将结果又转换为十进制数输出.
在计算机中,可用4位二进制数表示一位十进制数,这种代码称为BCD ( Binary Coded Decimal ).
BCD码又称8421码,在PC机中,BCD码可用压缩的BCD码和非压缩的BCD码两种格式表示.
压缩的BCD码用4位二进制数表示一个十制数,整个十进数形式为一个顺序的以4位为一组的数串.
非压缩的BCD码以8位为一组表示一个十进制数,8位中的低4位表示8421的BCD码,而高4位则没有意义.
 
压缩的BCD码调整指令
DAA (Decimal Adjust for Addition) 加法的十进制调整指令
DAA
执行操作:执行之前必须先执行ADD或ADC指令,加法指令必须把两个压缩的BCD码相加,并把结果存话在AL寄存器中.
 
DAS (Decimal Adjust for Subtraction) 减法的十进制调整指令
DAS
执行操作:执行之前必须先执行SUB或SBB指令,减法指令必须把两个压缩的BCD码相减,并氢结果存放在AL寄存器中.
 
 
非压缩的BCD码调整指令
AAA (ASCII Adjust for Addition) 加法的ASCII调整指令
AAA
执行操作:执行之前必须先执行ADD或ADC指令,加法指令必须把两个非压缩的BCD码相加,并把结果存话在AL寄存器中.
 
AAS (ASCII Adjust for Subtraction) 减法的ASCII调整指令
AAS
执行操作:执行之前必须先执行SUB或SBB指令,减法指令必须把两个非压缩的BCD码相减,并氢结果存放在AL寄存器中.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 dst byte 存储 div 扩展
相关文章推荐