鱼C论坛

 找回密码
 立即注册
查看: 2861|回复: 1

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

[复制链接]
发表于 2011-9-23 00:15:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本人初学者,子程序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:[si],al
   inc si
   loop s
   
   pop di
      pop si
   pop dx
   pop cx
   pop bx
   pop ax
      ret
  
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-23 06:29:29 From FishC Mobile | 显示全部楼层
CXjcxz  ok1mov dx,0 Уdx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表