当前位置: 代码迷 >> 汇编语言 >> debug中能单步执行 cmd中直接执行提醒divide overflow
  详细解决方案

debug中能单步执行 cmd中直接执行提醒divide overflow

热度:311   发布时间:2016-05-02 04:43:59.0
debug中能单步执行 cmd中直接执行提示divide overflow
debug中单步执行一切正常 cmd中直接执行提示divide overflow 


assume cs:code

data segment

db 8 dup (0)

data ends

code segment

start: mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc

mov dh,8
mov dl,3
mov cl,2
call show_str

mov ax,4c00h
int 21h

    dtoc:       push ax
  push bx
push si
mov di,0
           dtoc_1:      mov bx,10
  div bx
push dx
mov dx,0
mov cx,ax
inc di
jcxz s
jmp dtoc_1
s: mov cx,di


s1: pop ax
add ax,30H
mov [si],al
inc si
loop s1

pop si
pop bx
pop ax
ret


code ends
end start
------解决方案--------------------
由于上面的代码缺少个 show_str 子程定义,所以无法具体测试。一般来说,这样的问题是由于没有对寄存器进行适当的初始置 0 造成的;除法的话,就是没有在 div 指令前将 AH 或 DX 置 0 了;debug 是这么做了的,所以往往可以,而 dos 的加载程序没有,所以自己的代码若是不做,可能会出错。
  相关解决方案