当前位置: 代码迷 >> 汇编语言 >> 在32位DEBUG下调试提示“除法校验”怎么处理
  详细解决方案

在32位DEBUG下调试提示“除法校验”怎么处理

热度:120   发布时间:2016-05-02 04:33:36.0
在32位DEBUG下调试提示“除法校验”怎么办?
调试的时候,用“-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
  相关解决方案