⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3mul.asm

📁 汇编实现一位数加数
💻 ASM
字号:
;******************************************************
;* 数据段 
;******************************************************
    DATA_SEG  SEGMENT   PARA
;------------------------------------------------------
; TODO: 数据的定义及存储器的分配
;------------------------------------------------------
       BEGIN  DB        9
       INTER  DB        9
      RESULT  DW        ?
    DATA_SEG  ENDS
;******************************************************
;* 代码段 
;******************************************************
    CODE_SEG  SEGMENT   PARA
;------------------------------------------------------
        MAIN  PROC      FAR
              ASSUME    CS:CODE_SEG,DS:DATA_SEG

      START:

              MOV       AX,DATA_SEG
              MOV       DS,AX
;------------------------------------------------------
; TODO: 从这里开始您的代码
;------------------------------------------------------
              MOV       CX,9
              
         L2:  MOV       BL,BEGIN    ;BL为低位
              MOV       BH,INTER    ;BH为高位
              
         L1:  MOV       AL,BH       ;二数相乘,并调整为非压缩型BCD码
              MUL       BL
              AAM
              
              MOV       RESULT,AX
              MOV       DL,BH
              
              ADD       DL,30H      ;显示乘数
              MOV       AH,02H
              INT       21H
              
              MOV       DL,2AH      ;显示乘号
              MOV       AH,02H
              INT       21H
              
              MOV       DL,BL       ;显示被乘数
              ADD       DL,30H
              MOV       AH,02H
              INT       21H
              
              MOV       DL,3DH      ;显示等号
              MOV       AH,02H
              INT       21H
              
              MOV       DX,RESULT   ;一位数时不显示0
              CMP       DH,0
              JE        L3
              
              ADD       DX,3030H    ;显示结果的十位数
              XCHG      DH,DL
              MOV       AH,02H
              INT       21H
              
              XCHG      DH,DL       ;显示结果的个位数
              MOV       AH,02H
              INT       21H
              JMP       L4
              
         L3:  ADD       DL,30H      ;显示结果的个位数
              MOV       AH,02H
              INT       21H
              
         L4:  MOV       DL,32       ;显示空格
              MOV       AH,02H
              INT       21H
              
              CMP       BL,01H
              JZ        L5
              DEC       BL          ;内部循环,当低位小于高位时跳转
              CMP       BH,BL       ; 被乘数增1
              JAE       L1

         L5:  MOV       AL,INTER    ; 被乘数数目多一
              DEC       AL
              MOV       INTER,AL

             ; SUB       BEGIN,01H
           ;   MOV       AL,BEGIN    ; 被乘数数目多一
            ;  DEC       AL
             ; MOV       BEGIN,AL
              DEC       BEGIN

              MOV       DL,0DH      ;换行,回车
              MOV       AH,02H
              INT       21H
              MOV       DL,0AH
              MOV       AH,02H
              INT       21H

              LOOP      L2
                      
              MOV       AX,4C00H
              INT       21H
        MAIN  ENDP
;------------------------------------------------------
    CODE_SEG  ENDS
;******************************************************
              END       START       ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -