调试的时候,用“-g”命令执行到程序结尾处,但由于程序中有“div”指令,在执行“div”之前停止了,弹出“divide check”,请问这句“除法校验”是什么意思?是否出现了异常?程序是否有错?
如果没错误,接下来该怎么执行?
下面是截图,和源码:

assume cs:codesg
data segment
db 21 dup('1975')
dd 21 dup(16)
dw 21 dup(2)
data ends
table segment
db 21 dup ('year sume ne ?? ')
table ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stacksg
mov ss,ax
mov bx,0
mov cx,21
mov di,0
s0: push cx
mov cx,4
mov si,0
s1: mov al,es:[di]
mov [bx+si],al
inc si
inc di
loop s1
add bx,10h
pop cx
loop s0
mov bx,0
mov cx,21
s2: mov ax,es:[di]
mov [bx].5,ax
add di,2
mov ax,es:[di]
mov [bx].7,ax
add di,2
add bx,10h
loop s2
mov bx,0
mov cx,21
s3: mov ax,es:[di]
mov [bx].10,ax
mov ax,[bx].5
mov dx,[bx].7
div word ptr [bx].10
mov [bx].13,ax
add bx,10h
loop s3
mov ax,4c00h
int 21h
codesg ends
end start
------解决方案--------------------
这个程序最好慢慢调试,单步调试,自己的每个数据放在那个内存单元都要了解,这些争取自己做出来
后面你的程序结构设计不太合理,并且没有解决除法溢出问题,我以前的一个帖子可供参考(你可以先浏览一下有个概念)
http://bbs.bccn.net/thread-432601-1-1.html