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

我的博客

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

[2015-02-27 14:32] 课程设计 1

程序代码如下:
              ASSUME    ES:DATA,DS:DATA2,CS:CODESG,SS:STACK
        DATA  SEGMENT
              DD        1975,1976,1977,1978,1979,1980,1981,1982,1983
              DD        1984,1985,1986,1987,1988,1989,1990,1991,1992
              DD        1993,1994,1995
              
              DD        16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
              DD        345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

              DW        3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
              DW        11542,14430,15257,17800
        DATA  ENDS
       DATA2  SEGMENT
              DB        20H DUP (0)
              DB        0EH,00000111B      ;注意,我将每列数据在屏幕上输出的起始行的列号、行号、字符颜色存在这段临时的空间内,方便程序自动读取,同时给AX、DX的值提供了4字节的暂存空间,另写了一个名为combine的子程序,用来读取数据,并调用相应的其他子程序。
              DB        0,0,0,0,0,0,18H
              DB        5H,0,0,0,0,0,20H
              DB        10H,0,0,0,0,0,2BH
              DB        18H,0,0,0,0,0,35H
       DATA2  ENDS
       STACK  SEGMENT
              DB        30H DUP (0)
       STACK  ENDS
      CODESG  SEGMENT
      START:  MOV       AX,DATA
              MOV       ES,AX
              MOV       AX,DATA2
              MOV       DS,AX
              MOV       AX,STACK
              MOV       SS,AX
              MOV       SP,30H

              MOV       BX,0
              MOV       DI,0
              
              MOV       DH,DS:[20H]
              MOV       CX,21
      TRANS:  MOV       SI,0
              PUSH      DX

              MOV       AX,ES:[BX]
              MOV       DX,ES:2[BX]
              MOV       20H[SI].4,AX
              MOV       20H[SI].6,DX
              MOV       AX,ES:54H[BX]
              MOV       DX,ES:56H[BX]
              MOV       20H[SI].11,AX
              MOV       20H[SI].13,DX
              DIV       WORD PTR ES:0A8H[DI]
              MOV       20H[SI].25,AX
              MOV       DX,ES:0A8H[DI]
              MOV       20H[SI].18,DX
              
              POP       DX
              
              CALL      COMBINE
              
              INC       DH
              ADD       BX,4
              ADD       DI,2
             
              LOOP      TRANS
              
              MOV       AX,4C00H
              INT       21H

    COMBINE:  PUSH      CX
              MOV       SI,22H
                        
              MOV       CX,4
  COMBINE_R:  PUSH      CX
              MOV       DL,[SI].6
              PUSH      DX
              PUSH      SI
              MOV       AX,[SI].2
              MOV       DX,[SI].4
              MOV       SI,[SI]
              CALL      DTOCDW
              POP       DX
              MOV       CL,DS:[21H]
              CALL      SHOW_STR
              POP       SI
              ADD       SI,7
              POP       CX
              LOOP      COMBINE_R
              
              POP       CX
              RET

     DTOCDW:  PUSH      CX
              PUSH      SI
              PUSH      AX
              PUSH      DX
     
              SUB       CX,CX
              PUSH      CX
 DTOCDW_DIV:  MOV       CX,10
              CALL      DIVDW
              ADD       CX,30H
              PUSH      CX
              MOV       CX,AX
              JCXZ      DTOCDW_DIV_LOK
              JMP       SHORT DTOCDW_DIV
         DTOCDW_DIV_LOK:  MOV       CX,DX
              JCXZ      DTOCDW_TRANS
              JMP       SHORT DTOCDW_DIV
              
           DTOCDW_TRANS:
              POP       CX
              JCXZ      DTOCDW_TRANS_OK
              MOV       [SI],CX
              INC       SI
              INC       CX
              LOOP      DTOCDW_TRANS
        DTOCDW_TRANS_OK:
              POP       DX
              POP       AX
              POP       SI
              POP       CX
              RET


              
           
      DIVDW:  PUSH      BP
              PUSH      AX
              MOV       AX,DX
              SUB       DX,DX
              DIV       CX
              MOV       BP,SP
              MOV       [BP-2],AX
              POP       AX
              DIV       CX
              MOV       CX,DX
              MOV       DX,[BP-2]
              POP       BP
              RET
              
              
   SHOW_STR:  PUSH      ES
              PUSH      BX
              PUSH      SI
              PUSH      DI
              PUSH      AX
              PUSH      CX
              MOV       AX,0B800H
              MOV       ES,AX
              MOV       AL,0A0H
              MUL       DH
              MOV       BX,AX
              MOV       AL,2
              MUL       DL
              MOV       DI,AX

              MOV       AH,CL
 SHOW_STR_C:  MOV       CH,0
              MOV       CL,[SI]
              JCXZ      SHOW_STR_OUT
              MOV       AL,CL
              MOV       ES:[BX][DI],AX
              ADD       DI,2
              INC       SI
              JMP       SHORT  SHOW_STR_C
           SHOW_STR_OUT:
              POP       CX
              POP       AX
              POP       DI
              POP       SI
              POP       BX
              POP       ES
              RET
              
      CODESG  ENDS
              END       START
评论次数(0)  |  浏览次数(405)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码