汇编语言写的程序运行时出现“divide overflow

来源:百度知道 编辑:UC知道 时间:2024/07/02 06:55:35
DATA SEGMENT
MARKS DB 14 DUP(0)
RESULT DW 3 DUP(0)
AVERAGE DB 0
DATA ENDS

STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS

COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET MARKS
MOV CX,14
LOP:MOV AH,01H
INT 21H
CMP AL,0AH
JE LOP
SUB AL,30H
MOV [DI],AL
INC DI
LOOP LOP
MOV CX,7
MOV DI,OFFSET MARKS
LOP4:MOV AL,[DI]
XCHG AL,[DI+1]
XCHG AL,[DI]
ADD DI,2
LOOP LOP4
MOV CX,7
MOV DI,OFFSET MARKS
LOP5:CMP BYTE PTR [DI+1],1
JG CHLI
MOV BYTE PTR [DI+1],0
ADD BYTE PTR [DI],10
JMP CHLIW
CHLI:MOV BYTE PTR [DI+1],0
ADD BYTE PTR [DI],20
LOOP LOP5
CHLIW:MOV CX,7
MOV DI,OFFSET MARKS
LOP6:MOV DL,[DI]
MOV AH

MOV DI,OFFSET RESULT
MOV [DI],DX
MOV AX,DX
MOV DL,5
DIV DL

输入的数据经处理后ax=0

除数溢出在2中情况下会报,一个除数为0,另一个商超过范围,你上面的程序用的是字节除,所以商不能超过8位两进制数