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