| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
花了点时间,把实验10的第二小问也做了。这次顺利了很多。 
但要注意一下对公式的理解。 
一开始采用了错误的压栈方式进行32位加法。。。 
后来想明白了,那个*65536其实就是在区分高位和低位,这样低位置零,再相加也就不会有进位问题。 
于是顺利解出。 
- assume cs:codeseg,ss:stack
 
  
- stack segment
 
 - dw 8 dup (0)
 
 - stack ends
 
  
- codeseg segment
 
 - start:        mov ax,stack
 
 -                 mov ss,ax
 
 -                 mov sp,16
 
 -                 mov ax,4240h
 
 -                 mov dx,000fh
 
 -                 mov cx,0ah
 
 -                 
 
 -                 call divdw
 
 -                 
 
 -                 mov ax,4c00h
 
 -                 int 21h
 
  
- divdw:        mov bx,ax
 
 -                 mov bp,dx
 
 -                 mov ax,bp
 
 -                 mov dx,0
 
 -                 div cx
 
 -                 push ax
 
  
-                 mov ax,bp
 
 -                 mov dx,0
 
 -                 div cx
 
 -                 mov ax,bx
 
 -                 div cx
 
 -                 mov cx,dx
 
 -                 pop dx
 
 -                 ret
 
 -                 
 
 - codeseg ends
 
 - end start
 
 
  复制代码 |   
 
 
 
 |