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

我的博客

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

[2008-12-18 13:34] 作业设计1 (实验10)

图片载入中
终于完成了, 但并没有想象中的高兴。这个题消磨了我两个礼拜,刚看到题时很想把它实现,但我并没有很好的天赋,支持我很快把它完成。我做到第三个子程序时,才发现他并不是我想象的那样。之前完成的子程序并没有提供很好的独立性,再加上子程序接口的细节有些忘了,我陷入了个个子程序和主程序的细枝末节中。。 我第一次感觉到完成这个题是这麽的困难,甚至是无法完成。 我是个内心怕困难的人,(我很想改变)就这样这道题成了一个拦路虎,我不敢再看这道题。
  昨天发生了一件很丢人事,我非常的生气和难过,我决定把这不睡觉也把这道题搞完。 就这样我完善的子程序的独立性,重做的子程序3.
理清了思路,一步步的实现功能,很自然的完成了设计1.
 我觉得 子程序的独立性很重要,在完成一个子程序后要记下他的功能和接口, 这十分重要! 2debug的效率好低 3对于带一点的程序要记得多注释。 好了就这麽多。希望对大家有帮助。


源程序:
assume  cs:code

data segment
   db 16 dup(0) //专门开辟一个16字的长度存放转换后的字符串。 从si=0开始

   dd 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982
   dd 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990
   dd 1991, 1992, 1993, 1994, 1995, 16  , 22  , 382
   dd 1356     , 2390    , 8000     , 16000
   dd 24486    , 50065   , 97479    , 140417   
   dd 197514   , 345980  , 590827   , 803530   
   dd 1183000  , 1184000 ,2759000   , 3753000 
   dd 4649000  , 5937000 ,3         , 7
   dd 9 , 13   , 28, 38  , 130,  220 ,  476, 778
   dd 1001    ,1442      , 2258     , 2793
   dd 4037    , 5635     , 8226     , 11542  
   dd 11430   , 15257    , 17800

       
data ends


stack segment
   dw 32 dup(0)
stack ends


code segment 
  start: mov ax, data
         mov ds, ax
         mov si, 10h

         mov ax, stack
         mov ss, ax
         mov sp, 64

        
         mov cx, 3
         mov dl, 3
     s4: push cx
         mov dh, 3
         mov cx, 21

     s2: 
    call dtoc   ////转换的内容由ds:di提供,ax接收
         push cx
                              
         mov cl, 2  
        call show_str
             pop cx

         inc dh
         add si, 4
         loop s2

         add dl, 20
         pop cx
         loop s4

         mov dh, 3
         mov si, 0
         mov cx, 21

   s5:   push cx
    call least     ///输除商子程序,把商放在ds:0处调用dtoc转换
                      //显示
    call dtoc
         mov cl, 2
    call show_str
         
         pop cx
         add si, 4
         inc dh
         loop s5
        
         mov ax, 4c00h
         int 21h

  dtoc: push ax //子程序3
        push dx 
        push cx
        push si 
        push di

        mov ax, [si]
        mov dx, [si+2]
        mov di, 0 // //计转换了几次  
                mov si, 0
     s: mov cx, 10

   call divdw 

        add cx, 30h 
        push cx
        inc di       
        mov cx, ax
        jcxz s1
        jmp s

    s1: pop [si]
        mov cx, di
        sub di, 1
        add si, 1

        loop s1
        mov byte ptr [si], 0 //最后一位为0
        pop di
        pop si
        pop cx
        pop dx
        pop ax
        ret

 least:         //子程序4
        push ax
        push dx
        push cx
                    
        mov ax, ds:[si+64h]
        mov dx, ds:[si+66h]
        mov cx, ds:[si+0b8h]

                                       
      call divdw 
           mov [si], ax
           mov [si+2], dx

           pop cx
           pop dx
           pop ax
           ret

 show_str: push ax //子程序2
           push bx
           push cx
           push dx
           push es
           push si
           push di

           mov si, 0
           mov ax, 0b800h
           mov es, ax

           sub dh, 1
           mov al, 160
           mul dh
           mov di, ax

           sub dl, 1
           mov al, 2
           mul dl
           add di, ax

           mov bl, cl
      s3:  mov cx, 1
           mov al, [si]
           mov byte ptr es:[di], al
           mov byte ptr es:[di+1], bl
           add di, 2
           inc si
           add cl, [si]
           loop s3

           pop di
           pop si
           pop es
           pop dx
           pop cx
           pop bx
           pop ax
           ret


  divdw: push bx//子程序1
         mov bx, ax
         mov ax, dx
         mov dx, 0
         div cx

         push ax
         mov ax, bx
         div cx

         mov cx, dx
         pop dx
         pop bx
         ret

                 

code ends
end start
评论次数(3)  |  浏览次数(1060)  |  类型(汇编作业) |  收藏此文  | 

[  jcw2008   发表于  2008-12-18 18:35  ]

祝贺!

[  游客   发表于  2008-12-18 22:00  ]

我是个内心怕困难的人,(我很想改变)就这样这道题成了一个拦路虎,我不敢再看这道题。 
=============
你自己已经证明锲而不舍能够给你带来的惊喜了。
也算是一个对自己的小小超越!
恭喜!!!!

[  pascale   发表于  2008-12-19 22:32  ]

谢谢!大家。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码