📄 1_5_2b.c
字号:
;/*void sdn (unsigned char data *R7,unsigned char data *R5)
;申明代码段
?PR?_sdn?ASM1 SEGMENT CODE
;输出函数名
PUBLIC _sdn
;这个函数可被连接器放置在任何地方
RSEG ?PR?_sdn?ASM1
;*****************************************************************
; Function: sdn 二进制转化为十进制
;R7=目标数据存放地址(七字节)
;R5=源数据(三字节)存放地址
;使用A,B,R0,R1,R2,R3,R4,R5,R6,R7,PSW
; Description: DECIMAL TO BINARY
; Parameters:
; Returns: 无.
; Side Effects: 无.
;*****************************************************************
_sdn: MOV A,R7 ;二进制转换为十进制
MOV R1,A ;R1=目标数据存放地址高位(七字节),内放数据高位
MOV A,R5 ;R5=源数据(三字节)存放低位地址,内放数据高位
MOV R0,A
CLR A
MOV R7,A ;临时区四字节清零
MOV R6,A
MOV R5,A
MOV R4,A
MOV R3,#18H ;R3=3*8=24
SDN1: INC R0
INC R0 ;R0指向源数据高位地址,内放数据低位
CLR C
MOV R2,#03H
SDN2: MOV A,@R0 ;源数据左移,相当于源数据*2
RLC A
MOV @R0,A
DEC R0
DJNZ R2,SDN2
INC R0
JNC SDN3
INC R0
INC R0
INC @R0
DEC R0
DEC R0
SDN3: MOV A,R7 ;临时区算出BCD码
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 R3,SDN1
MOV A,R4 ;将临时区中的BCD码转化为十进制放@R0中,每字
;节一位十进制
ANL A,#0FH
MOV @R1,A
MOV A,R5
ACALL SDN4
MOV A,R6
ACALL SDN4
MOV A,R7
SDN4: DEC R1
MOV B,#10H
DIV AB
MOV @R1,A
MOV A,B
DEC R1
MOV @R1,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -