汇编网首页登录博客注册
yang5731的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
友情链接

[2010-08-24 18:01] 10.3 改进

assume cs:code 
data segment 
       dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 
       dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 
data ends 
table segment
        dd 11 dup (0,0,0,0,0,0,0,0)
table ends

code segment 
start:  mov ax,data 
        mov ds,ax  
        mov ax,table
        mov es,ax
        mov si,0
        mov di,0
        mov cx,21
  b:         mov ax,[si]
        mov dx,[si+2]
        call dtoc
        add si,4
        add bx,8        
         loop b

        mov ax,table
        mov ds,ax
        mov dh,4 
        mov dl,13
        mov cl,2 
        mov si,0
        call show_str         

        mov ax,4c00h 
        int 21h 

dtoc:   push si 
        push bx
        push cx
        push di
        push bp

        
        mov di,0ah 
        mov si,0         
        mov cx,di
        
s1:        push ax
        mov ax,dx 
        mov dx,0
        div di         
        mov bp,ax ;保存高16位的商
        pop ax
        div di
        add dx,30h        
        push dx
        mov dx,bp         
        inc si 
        
                
        mov cx,ax
        inc cx         ;这CX+1主要是让CX=1时不触发跳转       
        jcxz s2         
        loop s1         ;CX-1

   s2:  mov cx,si
        sub si,si 

   s3:  pop dx
        
        mov es:[si+bx],dl 
        inc si 
        loop s3 
        pop bp
        pop di
        pop cx
        pop bx
        pop si 
        ret                
         
show_str:       push dx 
                push cx                               
                mov ax,0b800h 
                mov es,ax                                  
                mov ax,2
                mul dl
                
                mov bx,ax
                sub bx,2
                mov ax,0a0h 
                sub dh,1
                mul dh                                 
                add bx,ax 
                mov ah,cl
                mov di,0 
                mov cx,21      
        s:        push cx
                mov di,0
                mov cx,8 
       a:       mov al,ds:[si]
                                
                mov es:[bx+di],ax 
                inc si 
                add di,2                                
                loop a
                
                pop cx
                add bx,0a0h
                loop s
                pop cx
                pop dx                                   
                ret           
         

       
code ends 
end start
评论次数(0)  |  浏览次数(356)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码