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

📄 tbcdmul.asm

📁 实现自己录入四位乘法运算并在单片机上显示
💻 ASM
字号:
 EXTRN   CODE (DISPLAY8, GETBCDKEY);装入显示模块,键盘输入模块
 buffer  data 30h	;8字节显示缓冲区

 TB        DATA   40H 
 F1	   bit    0d1h	;PSW.1
           ORG    0000H
           LJMP   STAR
           ORG    0100
STAR:      MOV    SP,#60H
           CLR    F1		;先清除显示,数据再接收键盘输入
           MOV    R0, #BUFFER ;键盘输入数据存放内存单元首地址存R0
           MOV    A, #04H     ;按键次数存放累加器A中
           LCALL GetBCDKey
           SETB F1
           MOV A,#04H
           LCALL GetBCDKey  

           LCALL  SHIZER
           LCALL  MULB
           LCALL  ERZSHI
XIANSHI:   MOV    R0,#buffer
           MOV    A,R7
           ANL    A,#0FH
           MOV    @R0,A
           INC    R0
           MOV    A,R7
           ANL    A,#0F0H
           SWAP   A
           MOV    @R0,A
           INC    R0
           MOV    A,R6
           ANL    A,#0FH
           MOV    @R0,A
           INC    R0
           MOV    A,R6
           ANL    A,#0F0H
           SWAP   A
           MOV    @R0,A
           INC    R0
           MOV    A,R5
           ANL    A,#0FH
           MOV    @R0,A
           INC    R0
           MOV    A,R5
           ANL    A,#0F0H
           SWAP   A
           MOV    @R0,A
           INC    R0
           MOV    A,R4
           ANL    A,#0FH
           MOV    @R0,A
           INC    R0
           MOV    A,R4
           ANL    A,#0F0H
           SWAP   A
           MOV    @R0,A

           mov R0,  #30h    ;字节显示缓存区首地址送R0   
           Acall Display8
           SJMP $
SHIZER:   
           MOV    R0,#buffer   
           MOV    R1,#TB
           MOV    R2,#04H
LOOP0:     MOV    A,@R0
           ANL    A,#0F0H
           SWAP   A
           MOV    @R1,A
           INC    R1
           MOV    A,@R0
           ANL    A,#0FH
           MOV    @R1,A
           INC    R1
           INC    R0
           DJNZ   R2,LOOP0   ;压缩BCD码转化为非压缩BCD码
           
FBCDCB:    MOV    R2,#2
           MOV    R0,#TB
BCDCB:     MOV    R3,#0
           MOV    R4,#0
           MOV    R5,#03H
           MOV    A,@R0           
           MOV    R4,A
LOOP1:     MOV    A,R4
           MOV    B,#10
           MUL    AB
           MOV    R4,A    ;暂存R4*10低8位
           MOV    A,B
           XCH    A,R3    ;暂存R3*10高8位
           MOV    B,#10
           MUL    AB      ;(R3)*10为一字节数
           ADD    A,R3    ;(R3)*10+(R4)*10
           MOV    R3,A    ;暂存
           INC    R0
           MOV    A,R4
           ADD    A,@R0
           MOV    R4,A
           MOV    A,R3
           ADDC   A,#0
           MOV    R3,A
           DJNZ   R5,LOOP1
           DEC    R2
           CJNE   R2,#1,BACK
           MOV    A,R3
           MOV    R6,A
           MOV    A,R4
           MOV    R7,A
           INC    R0
           LCALL   BCDCB
BACK:      RET         ;十进制转二进制,乘数在R3R4中,被乘数在R6R7中


MULB:      MOV    A,r7         ; 乘法程序
           MOV    B,r4
           MUL    AB
           MOV    30H,A
           MOV    R5,B
           MOV    A,r6
           MOV    B,r4
           MUL    AB
           ADD    A,R5
           MOV    R5,A
           MOV    A,B
           ADDC   A,#0
           MOV    R0,A          
           MOV    A,r7
           MOV    B,r3
           MUL    AB
           ADD    A,R5
           MOV    31H,A
           MOV    R1,#0         ;用R1记录CY
           MOV    A,R0
           ADDC   A,B
           MOV    R0,A
           JNC    LAST
           INC    R1
LAST:      MOV    A,r6
           MOV    B,r3
           MUL    AB
           ADD    A,R0
           MOV    32H,A
           MOV    A,B
           ADDC   A,R1
           MOV    R0,A
           MOV    A,32H
           MOV    R1,A
           MOV    A,31H
           MOV    R2,A
           MOV    A,30H
           MOV    R3,A        ;乘法结果16进制数在R0R1R2R3中
           RET
 
ERZSHI:   
           CLR    A           ;16进制转换10进制程序
           MOV    R6,A
           MOV    R5,A
           MOV    R4,A
           MOV    R7,A
           MOV    30H,#32
BINBCL:    CLR    C
           MOV    A,R3
           RLC    A
           MOV    R3,A
           MOV    A,R2
           RLC    A
           MOV    R2,A
           MOV    A,R1
           RLC    A
           MOV    R1,A
           MOV    A,R0
           RLC    A
           MOV    R0,A
           MOV    A,R7
           ADDC   A,R7
           DA     A
           MOV    R7,A
           MOV    A,R6
           ADDC   A,R6
           DA     A
           MOV    R6,A
           MOV    A,R5
           ADDC   A,R5
           DA     A
           MOV    R5,A
           MOV    A,R4
           ADDC   A,R4
           DA     A
           MOV    R4,A
           
           DJNZ   30H,BINBCL                
           RET
           
           
           END

⌨️ 快捷键说明

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