数除法。源操作数作为除数,为通用寄存器或存储器操作数。被除数缺省在目的操作数AX,DX:AX,EDX:EAX中。字节除法:AXSRC商→AL,余数→AH字除法:DXAXSRC商→AX,余数→DX双字除法:EDXEAXSRC商→EAX,余数→EDX由于被除数必须是除数的双倍字长,一般应使用扩展指令进行高位扩展。当进行无符号数除法时,被除数高位按0扩展为双倍除数字长。当进行有符号数除法时,被除数以补码表示。可使用扩展指令CBW,CWD,CWDE,CDQ进行高位扩展。例如:MOVAX,BLOCKCWD;被除数高位扩展MOVBX,1000HIDIVBX对于带符号除法,其商和余数均采用补码形式表示,余数与被除数同符号。当除数为零或商超过了规定数据类型所能表示的范围时,将会出现溢出现象,产生一个中断类型码为“0”的中断。执行除法指令后标志位无定义。九、BCD算术运算十进制数在机器中采用BCD码表示,以压缩格式存放,即一个字节存储2位BCD码,加减法是在二进制加减运算的基础上,BCD对其二进制结果进行调整,将结果调整成BCD码表示形式。1格式:DAA功能:将存放在AL中的二进制和数,调整为压缩格式的BCD码表示形式。调整方法:AL中低4位大于9或标志AF1表示低4位向高4位有进位,若则AL6→AL1→AF,若AL中高4位大于9,或标志CF1,表示高4位有进位,则AL60H→AL1→CF,DAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义。例3.33ADDAL,BLDAA2格式:DAS功能:将存放在AL中的二进制差数,调整为压缩的BCD码表示形式。调整方法:若AL中低4位大于9或标志AF1表示低4位向高位借位,则AL6→AL1→AF若AL中高4位大于9或标志CF1表示高4位向高位借位,则
fAL60H→AL1→CFDAS指令一般紧跟在SUB或SBB指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义。例3.34SUBAL,BLDAS十、ASCII算术运算数字0~9的ASCII码为30H~39H,机器采用一个字节存放一位ASCII码,对于ASCII码的算术运算是在二进制运算基础上进行调整。调整指令有加、减、乘、除四种调整指令。1格式:AAA功能:将存放在AL中的二进制和数,调整为ASCII码表示的结果。调整方法:若AL中低4位小于或等于9,仅AL中高4位清0,AF→CF。若AL中低4位大于9或标志AF1进位,AL6→ALAH1→AH1→AFAF→CFAL则中高4位清0。AAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为AF,CF。其它标志位无定义。例3.35MOVAX,0036HADD,AL,35HAAA;AX0101H2格式:AAS功能:将存放在AL中的二进制差数,r