实际上,对带符号数进行运算,可理解 (内部过程),先对数求其绝对值,再进行二进 制乘,再求补,得其补码结果。对无符号数乘贝 直接进行二进制运算 无符号数的乘法指令可用于多倍精度的乘法 操作(由乘移位,加实现)。多倍精度的负数乘 则只能将它们的绝对值用无符号乘法实现后,再 求补。 事实上,∴乘积的字长相对操作数来说总是加 倍的 乘法不会产生溢出
实际上,对带符号数进行运算,可理解 (内部过程),先对数求其绝对值,再进行二进 制乘,再求补,得其补码结果。对无符号数乘则 直接进行二进制运算。 无符号数的乘法指令可用于多倍精度的乘法 操作(由乘移位,加实现)。多倍精度的负数乘, 则只能将它们的绝对值用无符号乘法实现后,再 求补。 事实上,∵乘积的字长相对操作数来说总是加 倍的 ∴乘法不会产生溢出
例、将AX中的3位BCD数转换为二进制数→SB。 N2大102+N1大10+No=(N2大10+N1)大10+No SB DB MOV AX0125H MOV CH,10 MOV CL 4 MOV SB,AL→暂存 MOV ALAH D2大10→AL MUL CH MOV AHSB SHR AHCL D2大10+D1→AL ADD ALAH MUL CH →(D*10+D1)大10→>AL AND SB, OFH ADD SB.AL (D2*10+D1)大10+D→SB=7DH
例、将AX中的3位BCD数转换为二进制数→SB。 N2*102+N1*10+N0=(N2*10+N1)*10+N0 SB DB ? MOV AX,0125H M0V CH,10 MOV CL,4 MOV SB,AL →暂存 MOV AL,AH MUL CH MOV AH,SB SHR AH,CL ADD AL,AH MUL CH →(D2*10+D1)*10→AL AND SB,0FH ADD SB,AL D2*10→AL D2*10+D1→AL (D2*10+D1)*10+D0→SB=7DH
●对同一操作数进行两种运算结果不同。 除法运算可能产生溢出,但OF标志不能 标志这种溢出(除法对状态标志未定义) 而由溢出中断来指示,若溢出,则立即停 止程序的执行
• 对同一操作数进行两种运算结果不同。 除法运算可能产生溢出,但OF标志不能 标志这种溢出(除法对状态标志未定义), 而由溢出中断来指示,若溢出,则立即停 止程序的执行
例计算无符号数OF252H÷:20H MOV AX 0F252H 产生溢出, MOV BL, 20H 商>255, DIV BL AL存放不下 MOV AX, 0F252H MOV DX, 0 ;无符号数扩展,高位直接送0即可 MO∨BX,20H DIV BX 应使用字运算才正确
MOV AX , 0F252H MOV BL,20H DIV BL MOV AX,0F252H MOV DX,0 ;无符号数扩展,高位直接送0即可。 MOV BX , 20H ; DIV BX ; 应使用字运算才正确 例.计算无符号数 0F252H÷20H 产生溢出, ∵商﹥255, AL存放不下