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

📄 convert.txt

📁 进制转换
💻 TXT
字号:
STACK_SEG     SEGMENT   STACK
    STACK_BUF DW        120 DUP(?)
    TOP       EQU       $-STACK_BUF
STACK_SEG     ENDS
DATA_SEG      SEGMENT   PARA
              TS DB      0AH,0DH,  'PROGRAM TO CONVERT BINARY (DECIMAL,OCTAL,HEXADECIMAL)NUMBER ON KEYBOARD TO HEXADECIMAL (BINARY,OCTAL,DECIMAL)NUMBER ON SCREEN:$'

DATA_SEG      ENDS
CODE_SEG      SEGMENT PARA
;------------------------------------------------------
MAIN          PROC    FAR              
              ASSUME  CS:CODE_SEG,DS:DATA_SEG
              ASSUME  SS:STACK_SEG
START:
              MOV     AX,STACK_SEG
              MOV     SS,AX             
              MOV     SP,TOP
              MOV     AX,DATA_SEG
              MOV     DS,AX
              
              MOV       AH,09
              MOV       AL,'*'
              MOV       BH,0
              MOV       BL,9EH
              MOV       CX,80
              INT       10H
              MOV       AH,1
              INT       21H
              
              CALL    DISP
              
BEGIN:        CALL    CRLF
              MOV     AH,8
              INT     21H
             
              CMP     AL,'B'
              JZ      BIN
              CMP     AL,'D'
              JZ      DECI
              CMP     AL,'O'
              JZ      OCTA
              CMP     AL,'H'
              JZ      HEXA
              JMP       BEGIN
              
BIN:          
  		  CALL    BINIARY
              JMP     EQUAL
DECI:         
              CALL    DECIBIN
              JMP     EQUAL
OCTA:         
              CALL    OCTABIN 
              JMP     EQUAL
HEXA:         CALL    HEXABIN
              JMP     EQUAL              
EQUAL:                           
              MOV     AH,2
	        MOV     DL,'='
              INT     21H         
              MOV     AH,1
              INT     21H
              CMP     AL,'B'
              JZ      RBINI
              CMP     AL,'D'
              JZ      RDECI
              CMP     AL,'O'
              JZ      ROCTA
              CMP     AL,'H'
              JZ      RHEXA          
RBINI:        
              CALL    BINIBIN
              JMP     THEEND
RDECI:        CALL    BINIDEC
              JMP     THEEND
ROCTA:        CALL    BINIOCT
              JMP     THEEND
RHEXA:        CALL    BINIHEX
              JMP     THEEND                            
              
THEEND:       MOV     AH,1
              INT     21H
              CMP     AL,0DH
              JNZ      BEGIN
                            
DONE:         MOV     AX, 4C00H
              INT     21H
MAIN          ENDP              
CRLF 		  PROC    NEAR             
              MOV     DL,0DH
              MOV     AH,2
              INT     21H
              MOV     DL,0AH
              MOV     AH,2
              INT     21H
              RET
              CRLF 		  ENDP              
DISP          PROC    NEAR              
              MOV     AH,9
              LEA     DX,TS
              INT     21H
              RET
              DISP 		  ENDP
BINIARY 	  PROC    NEAR
              MOV       DL,'B'
              MOV       AH,2
              INT       21H     
              MOV      BX,0
              
     NEWCHAR: 
              MOV      AH,1
              INT      21H
              CMP      AL,' '
              JZ       EXIT
              SUB      AL,30H
              JL       EXIT
              CMP      AL,1D
              JG       NEWCHAR
              CBW
              
              SHL       BX,1D
              ADD       BX,AX
              JMP       NEWCHAR
EXIT:         
              RET
BINIARY 	  ENDP
OCTABIN       PROC      NEAR
              MOV       DL,'O'
              MOV       AH,2
              INT       21H
              MOV       BX,0
NEWNUM:       MOV       AH,1
              INT       21H
              CMP       AL,' '
              JZ        RETU
              SUB       AL,30H             
              CMP       AL,7D
              JG        RETU
              CBW
              XCHG      AX,BX
              MOV       CX,8D
              MUL       CX
              XCHG      AX,BX
              ADD       BX,AX
              JMP       NEWNUM
RETU:         
              RET
OCTABIN       ENDP
                                                      
DECIBIN PROC      NEAR	
              MOV       DL,'D'
              MOV       AH,2
              INT       21H
             MOV       BX,0
NEWDEC:      
             MOV       AH,1
             INT       21H
             CMP       AL,' '
             JZ        BACK
             SUB       AL,30H
             JL        BACK
             CMP       AL,9D
             JG        NEWDEC 
           
             CBW
             XCHG      AX,BX
             MOV       CX,10D
             MUL       CX
             XCHG      AX,BX
             ADD       BX,AX
             JMP       NEWDEC
BACK:        RET
DECIBIN 	      ENDP 
HEXABIN       PROC      NEAR
              MOV       DL,'H'
              MOV       AH,2
              INT       21H
              MOV       BX,0
IHEXA:         MOV       AH,1
              INT       21H
              CMP       AL,' '
              JZ        ENDH
              SUB       AL,30H
              
              CMP       AL,0AH
              JL        CONU
              SUB       AL,7H
CONU:                  
              
              CBW
              XCHG      AX,BX
              MOV       CX,16D
              MUL       CX
              XCHG      AX,BX
              ADD       BX,AX
              JMP       IHEXA
ENDH:              RET
HEXABIN       ENDP                                                                                    
BINIHEX 	  PROC      NEAR 
              MOV       CH,4
ROTATE:       
              MOV       CL,4
              ROL       BX,CL
              MOV       AL,BL
              AND       AL,0FH
              ADD       AL,30H
              CMP       AL,3AH
              JL        PRINTIT
              ADD       AL,7H
PRINTIT:      
              MOV       DL,AL
              MOV       AH,2
              INT       21H
              DEC       CH
              JNZ       ROTATE
              RET
BINIHEX	  ENDP
BINIDEC	 PROC      NEAR
             MOV       CX,10000D
             CALL      DECDIV
             MOV       CX,1000D
             CALL      DECDIV
             MOV       CX,100D
             CALL      DECDIV
             MOV       CX,10D
             CALL      DECDIV
             MOV       CX,1D
              
             CALL      DECDIV 
             RET
BINIDEC 		ENDP
             
DECDIV 	 PROC      NEAR
             MOV       AX,BX
             MOV       DX,0D
             DIV       CX
             MOV       BX,DX
             MOV       DL,AL
             ADD       DL,30H
             MOV       AH,2
             INT       21H
             RET
DECDIV 	      ENDP 
              
BINIOCT       PROC      NEAR
              MOV       CH,5
              ROL       BX,1
              MOV       AL,BL
              AND       AL,1H
              ADD       AL,30H
              JMP       PUTOUT
OCT:       
              MOV       CL,3
              ROL       BX,CL
              MOV       AL,BL
              AND       AL,7H
              ADD       AL,30H
              
		  DEC       CH
PUTOUT:       MOV       DL,AL
              MOV       AH,2
              INT       21H
              JNZ       OCT
              RET
BINIOCT       ENDP
BINIBIN       PROC      NEAR
              MOV       CH,16
BINI:          MOV       CL,1
              ROL       BX,CL
              MOV       AL,BL
              AND       AL,1H
              ADD       AL,30H
              
              MOV       AH,2
              MOV       DL,AL
              INT       21H
              DEC       CH
              JNZ       BINI 
              RET
BINIBIN       ENDP             
                    
;------------------------------------------------------
CODE_SEG      ENDS
              END       START

实验结果:
********************************************************************************
PROGRAM TO CONVERT BINARY (DECIMAL,OCTAL,HEXADECIMAL)NUMBER ON KEYBOARD TO HEXAD
ECIMAL (BINARY,OCTAL,DECIMAL)NUMBER ON SCREEN:
B100 =B0000000000000100
B100 =O000004
B100 =D00004
B100 =H0004
O100 =B0000000001000000
O100 =O000100
O100 =D000640
O100 =H0040
D100 =B0000000001100100
D100 =O000144
D100 =D00100
D100 =H0064
H100 =B0000000100000000
H100 =O000400
H100 =D00256
H100 =H0100
HAB =D00171

⌨️ 快捷键说明

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