+ -
当前位置:首页 → 问答吧 → 实验十的问题

实验十的问题

时间:2010-11-27

来源:互联网

divdw: push bx 
   
  mov bx,ax ;低16位  
  mov ax,dx ;高16位
  sub dx,dx  
  div cx  
  push ax  
  mov ax,bx  
  div cx  
  push dx 
  pop cx  
  pop dx  
   

  pop bx  
  ret 




dtoc: 
  push bx 
  push cx 
   
  sub bx,bx
push bx ;为什么这里必须将bx置零并入栈呢?
  d0: mov cx,10 
  call divdw ;(ax)=商的低16位,(dx)=商的高16位,(cx)=余数 
  mov bx,cx ;(bx)=余数 
  mov cx,dx ;(dx)?=0 
  jcxz d1 
  jmp short d5  
  d1: mov cx,ax ;(ax)?=0 
  jcxz d2 
  jmp short d5 
  d2: mov cx,bx ;(bx)?=0 
  jcxz d3 
  jmp short d5 
  d5: add bx,30h 
  push bx 
  jmp short d0 
  d3: pop ds:[si] 
  mov cx,ds:[si] 
  jcxz d4 
  inc si 
  jmp short d3 
   
  d4: inc si ;确保字符串以0为结尾符 
  pop cx 
  pop bx 
  ret

作者: guilingli   发布时间: 2010-11-27

我看书的时候也觉得这个push bx多余
暂时没找到解

作者: Rocky_   发布时间: 2010-11-29