hkcx3000 发表于 2011-9-23 00:15:48

关于实验十、子程序3的问题,初学汇编,请各位前辈看看为什么

本人初学者,子程序3 dtoc有个问题想不通,想请教下各位前辈,问题是这样的:
里面有一个汇编指令mov dx,0我放在错误位置下,编译链接都能通过,单步调试也没出错,就是运行时老提示除法溢出,我参考了正确答案后,发现把其放在正确位置就能正常运行了,这是为什么?请看我下面的汇编代码,正确和错误位置已注释

assume cs:code,ds:data,ss:stack
data segment
db 10 dup(0)
data ends
stack segment
dw 16 dup(0)
stack ends
code segment
start:mov ax,12666
      mov bx,data
   mov ds,bx
   mov bx,stack
   mov ss,bx
   mov sp,32
   mov si,0
   mov di,0
   mov bx,0ah
   
   call dtoc
   
   mov ax,4c00h
   int 21h
   
dtoc:push ax
   push bx
push cx
push dx
push si
push di

s1:            ;mov dx,0 正确放置的位置
   div bx
   mov cx,ax
jcxz ok1
add dx,30h
push dx
inc di
mov dx,0         ;mov dx,0如果放在这里会除法溢出,请问是为什么?
jmp short s1

ok1:add dx,30h
   push dx
inc di
mov cx,di

s:pop ax
   mov ds:,al
   inc si
   loop s
   
   pop di
      pop si
   pop dx
   pop cx
   pop bx
   pop ax
      ret

code ends
end start

ㄨ珊瑚岛Γ 发表于 2011-9-23 06:29:29

CXjcxzok1mov dx,0 Уdx
页: [1]
查看完整版本: 关于实验十、子程序3的问题,初学汇编,请各位前辈看看为什么