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

📄 10to2.asm

📁 用汇编实现两个十进制数相加
💻 ASM
字号:
       TITLE  CONVERT DECIMAL TO BINARY
        DATA  SEGMENT
      PROMPT  DB        0AH,0DH,'INPUT DECIMAL NUMBER: $'
     PROMPT2  DB        0AH,0DH,'$'
        DECI  DB        3,0,3 DUP(0)
        DEC2  DB        3 DUP(0)
         BIN  DW        ?
           A  DW        ?
           B  DW        ?
           C  DW        ?
        DATA  ENDS
      STACK1  SEGMENT   PARA STACK
              DW        20H DUP(0)
      STACK1  ENDS
       COSEG  SEGMENT
              ASSUME    CS:COSEG,DS:DATA,SS:STACK1
     DECBIN:  MOV       AX,DATA
              MOV       DS,AX

              MOV       DX,OFFSET  PROMPT       ;提示输入第一个数
              MOV       AH,09H
              INT       21H

              MOV       DX,OFFSET  DECI         ;输入第一个十进制
              MOV       AH,0AH
              INT       21H

	      MOV       DX,OFFSET  PROMPT2      ;换行
              MOV       AH,09H
              INT       21H

              MOV       BX,OFFSET  DECI+1
              MOV       CL,[BX]     ;取输入的十进制数位数
              MOV       CH,0
       LOP1:  INC       BX          ;十进制数字符转换为
              AND       BYTE  PTR  [BX],0FH     ;4位二进制数
              LOOP      LOP1
;多位十进制数转换为二进制

              MOV       BX,OFFSET	DECI+2        ;取十进制数首址
              MOV       CL,-1 [BX]  ;取十进制数位数
              MOV       AX,0
       LOP2:  MOV       BIN,AX      ;乘10
              SAL       AX,1
              SAL       AX,1
              ADD       AX,BIN
              SAL       AX,1
              ADD       AL,[BX]     ;加1位十进制数
              ADC       AH,0
              INC       BX          ;修改指针
              LOOP      LOP2
              MOV       A,AX        ;存结果
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

              MOV       DX,OFFSET  PROMPT       ;提示输入第二个数
              MOV       AH,09H
              INT       21H

              MOV       DX,OFFSET  DECI         ;输入第二个十进制
              MOV       AH,0AH
              INT       21H

	      MOV       DX,OFFSET  PROMPT2      ;换行
              MOV       AH,09H
              INT       21H

              MOV       BX,OFFSET  DECI+1
              MOV       CL,[BX]     ;取输入的十进制数位数
              MOV       CH,0
       LOP11:  INC       BX          ;十进制数字符转换为
              AND       BYTE  PTR  [BX],0FH     ;4位二进制数
              LOOP      LOP11
;多位十进制数转换为二进制

              MOV       BX,OFFSET	DECI+2        ;取十进制数首址
              MOV       CL,-1 [BX]  ;取十进制数位数
              MOV       AX,0
       LOP22:  MOV       BIN,AX      ;乘10
              SAL       AX,1
              SAL       AX,1
              ADD       AX,BIN
              SAL       AX,1
              ADD       AL,[BX]     ;加1位十进制数
              ADC       AH,0
              INC       BX          ;修改指针
              LOOP      LOP22
              MOV       B,AX        ;存结果
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;做运算 C=3A+2B
              MOV       DX,A
              SAL       DX,1
              ADD       DX,A
              SAL       B,1
              ADD       DX,B
              MOV       C,DX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;二进制转换成十进制
              LEA       DI,DEC2+2
              MOV       AX,C
              MOV       BX,10
        LOP:  MOV       DX,0
              DIV       BX
              MOV       [DI],DL
              DEC       DI
              CMP       AX,0
              JNE       LOP
              ;单字符输出 判断是否三位
              LEA       SI,DEC2
              CMP       BYTE PTR[SI],0
              JE        LIANGWEI
              ADD       BYTE PTR[SI],30H
              MOV       DL,[SI]
              MOV       AH,02H
              INT       21H
   LIANGWEI:  INC       SI
              ADD       BYTE PTR[SI],30H
              MOV       DL,[SI]
              MOV       AH,02H
              INT       21H
              INC       SI
              ADD       BYTE PTR[SI],30H
              MOV       DL,[SI]
              MOV       AH,02H
              INT       21H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              MOV       AH,4CH
              INT       21H
       COSEG  ENDS
              END       DECBIN

⌨️ 快捷键说明

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