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

📄 hw2-10.asm

📁 实用工具
💻 ASM
字号:
            TITLE BINARY TO DECIMAL
DATA        SEGMENT
P1          DB       'Input Binary(16 BIT): $'
BIN16       DW       ?
DEC5        DB       5 DUP(0)
P2          DB       0AH,0DH,'The Result is: $'
DECASC      DB       0AH,0DH,5 DUP(0),'$'
DATA        ENDS
STACK1      SEGMENT  PARA STACK
            DW       20H DUP(0)
STACK1      ENDS
CODE        SEGMENT
            ASSUME   CS:CODE,SS:STACK1,DS:DATA
MAIN:       MOV      AX,DATA
            MOV      DS,AX
            MOV      CH,16                       ;设置二进制数ASCII码输入个数
            XOR      BX,BX                       ;将BX寄存器清零
            LEA      DX,P1                       ;显示提示信息
            MOV      AH,09H
            INT      21H
LOP1:       MOV      AH,01H                      ;DOS系统功能调用,从键盘输入二进制数
            INT      21H
            CMP      AL,'0'                      ;若输入字符小于‘0’,则重新输入 
            JE       STEP1
            CMP      AL,'1'                      ;若输入字符大于‘1’,则重新输入 
            JNE      LOP1
STEP1:      SUB      AL,30H                      ;转换成二进制数  
            SHL      BX,1                        ;将BX寄存器左移一位
            OR       BL,AL                       ;与原二进制数组合成新的二进制数
            DEC      CH                          ;输入字符满了16个吗?若没有,继续
            JNZ      LOP1
            MOV      BIN16,BX                    ;保存转换后的二进制数
            CALL     BINtoDEC                    ;调用函数         
            CALL     DECtoASC  
            LEA      DX,P2
            MOV      AH,09H
            INT      21H
            LEA      DX,DECASC
            MOV      AH,09H
            INT      21H
            MOV      AH,4CH                     ;结束程序
            INT      21H
           
BINtoDEC    PROC
            MOV      CX,5
            LEA      DI,DEC5+4
            MOV      AX,BIN16
            MOV      BX,10
LOP2:       XOR      DX,DX
            DIV      BX
            MOV      [DI],DL
            DEC      DI
            LOOP     LOP2
            RET
BINtoDEC    ENDP

DECtoASC    PROC
            LEA      SI,DEC5
            MOV      CH,5
            LEA      DI,DECASC
LOP3:       MOV      AL,[SI]
            ADD      AL,30H
            MOV      [DI],AL
            INC      SI
            INC      DI
            DEC      CH
            JNE      LOP3
            RET
DECtoASC    ENDP
       
            MOV      AH,4CH
            INT      21H

CODE        ENDS
            END      MAIN

⌨️ 快捷键说明

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