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

📄 hw10-2.asm

📁 实用工具
💻 ASM
字号:
    TITLE DECIMAL TO  BINARY 
DATA        SEGMENT
P1          DB       'Input DECIMAL(5): $'            ;提示信息
BIN16       DW       ?
DEC5        DB       5 DUP(0)                         ;转换后的十进制数
CONST       DW       10000,1000,100,10,1
COUNT       EQU      5
P2          DB       0AH,0DH,'The Result is: $'
BINASC      DB       0AH,0DH,16 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,5                              ;设置十进制ASCII码的输入个数
            XOR      BX,BX                             ;将BX寄存器清零 
            LEA      DI,DEC5                           ;取转换后的十进制首址
            LEA      DX,P1                             ;显示提示信息
            MOV      AH,09H
            INT      21H
LOP1:       MOV      AH,01H                            ;DOS系统功能调用,从键盘输入数字
            INT      21H                               
            CMP	     AL,'0'                            ;若输入的数字小于‘0’,则重新输入
            JB       LOP1
            CMP      AL,'9'                            ;若输入的数字大于‘9’,则重输
            JA       LOP1
            SUB      AL,30H                            ;转换成十进制数数字 
            MOV      [DI],AL                           ;保存转换后的十进制数
            INC      DI
            DEC      CH                                ;输入字符满5个了吗?若没有,请继续
            JNZ      LOP1
            CALL     DECtoBIN                          ;调用函数
            LEA      DI,BINASC
            CALL     BINtoASC                          ;调用函数
            LEA      DX,P2
            MOV      AH,09H
            INT      21H
            LEA      DX,BINASC
            MOV      AH,09H
            INT      21H
            MOV      AH,4CH
            INT      21H
            
DECtoBIN    PROC
            XOR      AX,AX
            LEA      DI,DEC5
            LEA      SI,CONST
            MOV      CH,COUNT
LOP2:       MOV      CL,[DI]
            CMP      CL,0
            JE       NEXT1
LOP3:       ADD      AX,[SI]
            DEC      CL
            JNE      LOP3
NEXT1:      INC      DI
            INC      SI
            INC      SI
            DEC      CH
            JNE      LOP2
            MOV      BIN16,AX
            RET            
DECtoBIN    ENDP

BINtoASC    PROC
            MOV      CX,16
LOP4:       ROL      AX,1
            MOV      BL,AL
            AND      BL,01H
            OR       BL,30H
            MOV      [DI],BL
            INC      DI
            LOOP     LOP4
            RET
BINtoASC    ENDP
       
            MOV      AH,4CH
            INT      21H

CODE        ENDS
            END      MAIN

⌨️ 快捷键说明

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