读书人

除法溢出解决方法

发布时间: 2012-02-16 21:30:36 作者: rapoo

除法溢出
STACKS SEGMENT STACK
STK DB 20 DUP(?)
STACKS ENDS

DATAS SEGMENT
DATA1 DD 12345678H
DATA2 DD 98765443H
RLT DD ?
DATAS ENDS

CODES SEGMENT
ASSUME DS:DATAS,SS:STACKS,CS:CODES
START: MOV AX,DATAS
MOV DS,AX

MOV AX,WORD PTR DATA1
ADD AX,WORD PTR DATA2

MOV DX,WORD PTR DATA1+2
ADC DX,WORD PTR DATA2+2

MOV BX,0FFFFH
IDIV BX

MOV AX,4C00H
INT 21H


CODES ENDS
END START
运行后总是提示除法溢出:
但是aaaa aabb\ffff 结果用计算机算的aaab并没有溢出啊?
郁闷啊?


[解决办法]
IDIV是有符号除法,0FFFFH作为有符号数表示-1,所以溢出。改成DIV就不会溢出了。
[解决办法]
楼上正解
[解决办法]
看看你的操作数的大小及类型,注意除法指令的种类。div/idiv

读书人网 >汇编语言

热点推荐