我做的课设,出现除法溢出错误,麻烦大家帮帮忙,我没有分可送啊
DATA SEGMENT
TISHI DB 'START?(Y/N)','$'
SHURU DB 'T=?','$'
ZHOUQI DB 10
DB ?
DB 10 DUP(?)
JIEGUO db 2 dup(0)
SHI DB 10
DUANMA DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
mov AL,82h
mov dx,28bh
out dx,AL
KAISHI:
MOV DX,OFFSET TISHI
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,'Y' ;确定是否开始
JNZ QUIT
MOV DX,OFFSET SHURU
MOV AH,09H
INT 21H ;输入周期
CALL JIESHOU ;调用接收周期子程序
MOV SI,OFFSET ZHOUQI
MOV AL,BYTE PTR[SI+2] ;周期给AL
MOV BL,100
MUL BL
MOV CX,3 ;基本延时周期为10000/1000000=0.01S,循环一次有三次循延时,所以总循环数=T*100/3
DIV CX
MOV AH,00H
MOV CX,AX
MOV DX,2A0H ;启动AD转换
OUT DX,AL
PUSH DX
XH1: CALL DELAY ;延时
POP DX
IN AL,DX ;读转换数据
mov cl,50
mul cl
and dx,00h
mov bx,256
div bx
mov cl,10
div cl ;al中存放十位
;ah中存放个位
mov si,offset JIEGUO
mov [si],al ;转换结果存数据区
mov [si+1],ah
PUSH CX
CALL XIANSHI ;调用显示子程序
POP CX
MOV AH,0BH ;判断键盘输入,无输入继续采集循环。有输入跳转到程序开始
INT 21H
CMP AL,0FFH
JZ KAISHI
LOOP XH1
QUIT:
MOV AH,4CH
INT 21H
;接收周期
JIESHOU PROC
PUSH DX
MOV DX,OFFSET ZHOUQI ;输入周期
MOV AH,0AH
INT 21H
MOV SI,OFFSET ZHOUQI
MOV AL,BYTE PTR[si+1]
CMP AL,1
JE YIWEI
MOV AL,BYTE PTR[si+2]
sub AL,30h
mov BL,10
MUL BL ;获得周期十位数字
MOV [SI+2],AL
mov AL,byte ptr[si+3]
sub AL,30h ;获得周期个位数字
mov ah,byte ptr[si+2]
add AL,ah ;十位+个位
mov [si+2],AL
JMP TUICHU
YIWEI: mov AL,byte ptr[si+2]
sub AL,30h
mov [si+2],AL
TUICHU: POP DX
RET
JIESHOU ENDP
;计数器延时
DELAY PROC
PUSH DX
MOV AL,00110000B
MOV DX,283H
OUT DX,AL
MOV AX,10000
MOV DX,280H
OUT DX,AL
MOV AL,AH
OUT DX,AL
mov dx,28Ah ; ;8255查询8253的定时是否到
CHAXUN: in AL,dx
test AL,80h ; ;查询PA7口
jz CHAXUN
POP DX
RET
DELAY ENDP
;显示结果
XIANSHI PROC
PUSH AX
mov AL,82h
mov dx,28bh
out dx,AL
pop AX
wu: ;显示个位
mov BP,OFFSET JIEGUO
MOV SI,OFFSET DUANMA
MOV AL,BYTE PTR[BP+SI]
mov dx,288h
out dx,AL
mov dx,28ah
mov AL,02h
out dx,AL
PUSH BX
CALL DELAY
;显示十位
POP BX
mov BP,OFFSET JIEGUO
ADD BP,1
MOV SI,OFFSET DUANMA
MOV AL,BYTE PTR[BP+SI]
mov dx,288h
out dx,AL
mov AL,01H
mov dx,28ah
out dx,AL
CALL DELAY
RET
XIANSHI ENDP
CODE ENDS
END START
上面是程序
要求做一个数据采集系统,对0~5伏的模拟量进行连续采集,采集周期(1~59秒)可设定,采集结果实时显示在LED数码管上。
可以通过编译,但是运行后会输入采集周期后会出现 Your program caused a divide overflow error. If problem persists...
这是哪里的问题啊?