当前位置: 代码迷 >> 汇编语言 >> 除法溢出解决方法
  详细解决方案

除法溢出解决方法

热度:3592   发布时间:2013-02-26 00:00:00.0
除法溢出
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
  相关解决方案