首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2014-03-30 
debug中能单步执行 cmd中直接执行提示divide overflowdebug中单步执行一切正常 cmd中直接执行提示divide o

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 的加载程序没有,所以自己的代码若是不做,可能会出错。

热点排行