| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1243 人关注过本帖
标题:初学汇编,用一天半写一个九九乘法表,是不是花太长时间啦?
只看楼主 加入收藏
mi53
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
初学汇编,用一天半写一个九九乘法表,是不是花太长时间啦?
程序代码:
        DATA  SEGMENT
         C10  DB        10
        DATA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       CX,9
              MOV       BH,0
        _BH:  INC       BH
              MOV       BL,0
        _BL:  MOV       DL,BH;输出i
              ADD       DL,30H
              MOV       AH,02H
              INT       21H
              INC       BL
              MOV       DL,2AH;输出*
              MOV       AH,02H
              INT       21H
              MOV       DL,BL;输出j
              ADD       DL,30H
              MOV       AH,02H
              INT       21H
              MOV       DL,3DH;输出=
              MOV       AH,02H
              INT       21H
              PUSH      CX ;求结果,按十进制输出
              XOR       CX,CX
              MOV       AL,BH
              MUL       BL
              CMP       AX,10
              JGE       DODIV;跳过对齐的空格

          PUSH      AX
              ;PUSH      DX
              MOV       DL,20H
              MOV       AH,02H
              INT       21H
              ;POP       DX
              POP       AX

      DODIV:  DIV       C10
              PUSH      AX
              INC       CX
              XOR       AH,AH
              CMP       AL,0
              JNZ       DODIV
   
     SHOW_R:  POP       DX
              XCHG      DH,DL
              ADD       DL,30H
              MOV       AH,02H
              INT       21H
    ;cmp cx,1
    ;je sp_1
    ;mov dl,20h
    ;mov ah,02h
    ;int 21h
;sp_1:    mov dl,20h
    ;mov ah,02h
    ;int 21h
              LOOP      SHOW_R
              POP       CX
              MOV       DL,20H
              MOV       AH,02H
              INT       21H

              CMP       BL,BH
              JE        DPCRLF;是否要输出回车换行
              JMP       _BL;回到内层循环
     DPCRLF:  MOV       DL,0DH
              MOV       AH,02H
              INT       21H
              MOV       DL,0AH
              MOV       AH,02H
              INT       21H
              LOOP      _BH;回到外层循环

       
              MOV       AH,4CH
              INT       21H
        ;SP_S  PROC
             
             ; RET
        ;SP_S  ENDP
        CODE  ENDS
              END       START
我发现些程序的时候,有些地方是可以用子程序替代的。我想是否可以都换成子程序?换成子程序调用的话是不是会拖慢程序执行的时间?
搜索更多相关主题的帖子: 乘法表 初学 汇编 时间 
2010-10-24 22:29
wisji8
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:53
专家分:198
注 册:2010-9-19
收藏
得分:1 
没用汇编写过九九乘法表,只用过C语言写过,下次有空我也写个,不知道要多久。
个人感觉子程序就像C语言里面的函数,虽然是调用,但让我们有结构感。一个函数干一个功能。呵呵。
我学汇编不久。
2010-10-25 12:47
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:19 
DATA  SEGMENT
         C10  DB        10
        DATA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       CX,9
              MOV       BH,0
            _BH:
              INC       BH
              MOV       BL,0
            _BL:
              call disequ
              PUSH      CX ;求结果,按十进制输出
              XOR       CX,CX
              MOV       AL,BH
              MUL       BL
              CMP       AX,10
              JGE       DODIV;跳过对齐的空格

              PUSH      AX
              ;PUSH      DX
              MOV       DL,20H
              call dischar
              ;POP       DX
              POP       AX

      DODIV:  DIV       C10
              PUSH      AX
              INC       CX
              XOR       AH,AH
              CMP       AL,0
              JNZ       DODIV
   
     SHOW_R:  POP       DX
              XCHG      DH,DL
              ADD       DL,30H
              call dischar
    ;cmp cx,1
    ;je sp_1
    ;mov dl,20h
    ;mov ah,02h
    ;int 21h
;sp_1:    mov dl,20h
    ;mov ah,02h
    ;int 21h
              LOOP      SHOW_R
              POP       CX
              MOV       DL,20H
              call dischar

              CMP       BL,BH
              JE        DPCRLF;是否要输出回车换行
              JMP       _BL;回到内层循环
     DPCRLF:  
                call crlf
              LOOP      _BH;回到外层循环

      
              MOV       AH,4CH
              INT       21H
        ;SP_S  PROC
            
             ; RET
        ;SP_S  ENDP
        crlf proc
            MOV       DL,0DH
              call dischar
              MOV       DL,0AH
              call dischar
              ret
        crlf endp
        dischar proc
            mov ah,2h
            int 21h
            ret
        dischar endp
        disequ proc
                  MOV       DL,BH;输出i
                  ADD       DL,30H
                  call dischar
                  INC       BL
                  MOV       DL,2AH;输出*
                  call dischar
                  MOV       DL,BL;输出j
                  ADD       DL,30H
                  call dischar
                  MOV       DL,3DH;输出=
                  call dischar
                  ret
        disequ endp
        CODE  ENDS
              END       START
2010-10-26 11:55
快速回复:初学汇编,用一天半写一个九九乘法表,是不是花太长时间啦?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043405 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved