+ -
当前位置:首页 → 问答吧 → divide overflow

divide overflow

时间:2011-09-23

来源:互联网

DATA SEGMENT
W DW 100
X DW -28
Y DW -15
Z DW 300
S DW 2 DUP(?)
DATA ENDS

STACK SEGMENT PARA STACK 'STACK'
DW 100 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X
IMUL Y
MOV CX,AX
MOV BX,DX
MOV AX,Z
CWD
ADD CX,AX
ADC BX,DX
SUB BX,200
SBB BX,0
MOV AX,W
CWD
SUB AX,CX
SBB DX,BX
IDIV X
MOV S,AX
MOV S+2,DX
MOV AH,4CH
INT 21H

CODE ENDS
END START


运行时出现divide overflow报错,刚接错汇编语言,希望大家多多指导

作者: gongfupanda2   发布时间: 2011-09-23

AX=FD94 BX=FF37 CX=02D0 DX=00C8 SP=00C8 BP=0000 SI=0000 DI=0000
DS=11F3 ES=11E3 SS=11F8 CS=11F4 IP=0027 NV UP EI PL NZ AC PO CY
11F4:0027 F73E0200 IDIV WORD PTR [0002] DS:0002=FFE4
-dds:0002
11F3:0000 E4 FF F1 FF 2C 01-00 00 00 00 00 00 00 00 ....,.........

----------------------------------
DX:AX = 00C8:FD94 = 00c80 + FD94 = 68116 (十进制)

68116除以-28的商为-2432,AL寄存器显然放不下了。
(If source is a word value, DX:AX is
  divided by "src", and the quotient is stored in AL and the
  remainder in DX.

作者: s11ss   发布时间: 2011-09-24