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

📄 dectobin.asm

📁 8051 进行加解密的源代码
💻 ASM
字号:
;***************************************************************************;;*      CONVERTS 5 DIGIT DECIMAL NUMBER INTO 3 BYTES BINARY NUMBER         *;;***************************************************************************;BIN_1           EQU     42H     ; LSBBIN_2           EQU     41H     ; MIDDLE SBBIN_3           EQU     40H     ; MSBDEC_1           EQU     50H     ; TEN THOUSANDS OF 5 DIGIT DECIMAL NUMBERDEC_2           EQU     51H     ; THOUSANDS OF 5 DIGIT DECIMAL NUMBERDEC_3           EQU     52H     ; HUNDREDS OF 5 DIGIT DECIMAL NUMBERDEC_4           EQU     53H     ; TENS OF 5 DIGIT DECIMAL NUMBERDEC_5           EQU     54H     ; UNITS OF 5 DIGIT DECIMAL NUMBERFACTOR          EQU     60H     ; AUXILLIARY VARIABLE;***************************************************************************;;****                           MAIN CODE                               ****:;***************************************************************************;;***************************************************************************;;***                            EXAMPLE                                 ****;;***************************************************************************;;** TO CONVERT 5 DIGIT DECIMAL NUMBER <12345> INTO 3 BYTES BINARY NUMBER ***;;****************************************************************************        MOV     R2,#00	; NEW LINE                           ;    \        MOV     BIN_1,#00  ;    |        MOV     BIN_2,#00  ;    |  3 BYTES BINARY OUTPUT        MOV     BIN_3,#00  ;    |                           ;    /        MOV     DEC_1,#05D         ; UNITS        MOV     DEC_2,#04D         ; TENS        MOV     DEC_3,#03D         ; HUNDREDS        MOV     DEC_4,#02D         ; THOUSANDS (1st Decimal place)        MOV     DEC_5,#01D         ; TEN THOUSANDS (2nd Decimal place)        MOV     A,DEC_1         ; TAKE THE UNITS DIRECTLY AS IT IS TO THE LSB        MOV     BIN_1,A        MOV     A,DEC_2         ; TAKE THE TENS BY MULTIPLYING WITH #10D AND        MOV     B,#10           ; AND ADDING TO THE LSB        MUL     AB        ADD     A,BIN_1        MOV     BIN_1,A        MOV     R0,#52H         ; THE ADDRESS OF 3rd DIGIT         MOV     FACTOR,#00D     ; INITIALIZE AS ZERO        MOV     A,@R0           ; TAKE THE 3rd DIGIT INTO R1 FOR PROCESSING        MOV     R1,A        CJNE    R1,#00,LOOP     ; SKIP IF THE DIGIT IS A ZERO        SJMP    ITS_ZEROLOOP        MOV     A,#100D         ; ADD CONSTANT 100D TO LSB AS MANY TIMES        CLR     C        ADD     A,BIN_1        MOV     BIN_1,A        JNC     NO_EXCEED        INC     BIN_2           ; INCREASE THE NEXT HIGHER BYTES WHEN THE LSB        MOV     A,BIN_2         ; OVERFLOWS        CJNE    A,#00H,NO_EXCEED        INC     BIN_3NO_EXCEED        DJNZ    R1,LOOP;-----------        CJNE    R2,#00,CONTINUE        SJMP    ITS_ZEROCONTINUE        DEC     R2        SJMP    LOOP;-----------ITS_ZERO        INC     R0              ; GET NEXT DIGIT WHEN THE LOOP EXHAUSTS        CJNE    R0,#55H,PROCEED ; GET OUT WHEN ALL THE 3 DIGITS HAVE BEEN                                ; WORKED UPON. (1st and 2nd digits are used                                ;               before the loop)        SJMP    OUT_LOOPPROCEED        INC     FACTOR          ; CALCULATE AS HOW MANY TIMES THE CONSTANT        MOV     A,@R0           ; 100D HAS TO BE ADDED TO LSB DEPENDING ON        CJNE    A,#00,NOT_ZERO  ; THE VALUE OF THE DIGIT ACQUIRED BY @R0        SJMP    ITS_ZERONOT_ZERO        PUSH    FACTORMULTIPLY        MOV     B,#10D        CLR     OV        MUL     AB        JNB     OV,SINGLE        PUSH    ACC        MOV     A,B        ADD     A,R2        MOV     R2,A        POP     ACCSINGLE        DJNZ    FACTOR,MULTIPLY        MOV     R1,A        POP     FACTOR        SJMP    LOOPOUT_LOOP        MOV     R1,BIN_2        MOV     R2,BIN_1        MOV     R0,BIN_3        END*****************************************************************************IDEA:*****************************************************************************  LSB+ (DEC_1)+ (DEC_2 x 10D)+ (DEC_3 x 1 x 100D)+ (DEC_4 x 10 x 100D)+ (DEC_5 x 100 x 100D)

⌨️ 快捷键说明

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