主题:请问一下,这个程序为什么会溢出?
;实现(V-(X*Y+Z-540))/X
DSEG SEGMENT 'DATA'
X DW 0007H
Y DW 0030H
Z DW 0122H
V DW 0410H
W1 DW ?
W2 DW ?
DSEG ENDS
SSEG SEGMENT STACK 'STACK'
DW 100h DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
;*******************************************
START PROC FAR
PUSH DS
MOV AX, 0
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
MOV AX,X
IMUL Y
MOV BX,AX
MOV CX,DX
MOV AX,Z
CWD
ADD CX,AX
ADC BX,DX
SUB CX,540
SBB BX,0
MOV AX,V
CWD
SUB AX,CX
SBB DX,BX
IDIV X ;除法溢出
MOV W1,AX
MOV W2,DX
RET
START ENDP
CSEG ENDS
END START
这程序在运行到idiv x这条语句时溢出,请问一下,为什么在这里会溢出?
DSEG SEGMENT 'DATA'
X DW 0007H
Y DW 0030H
Z DW 0122H
V DW 0410H
W1 DW ?
W2 DW ?
DSEG ENDS
SSEG SEGMENT STACK 'STACK'
DW 100h DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
;*******************************************
START PROC FAR
PUSH DS
MOV AX, 0
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
MOV AX,X
IMUL Y
MOV BX,AX
MOV CX,DX
MOV AX,Z
CWD
ADD CX,AX
ADC BX,DX
SUB CX,540
SBB BX,0
MOV AX,V
CWD
SUB AX,CX
SBB DX,BX
IDIV X ;除法溢出
MOV W1,AX
MOV W2,DX
RET
START ENDP
CSEG ENDS
END START
这程序在运行到idiv x这条语句时溢出,请问一下,为什么在这里会溢出?