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

📄 1_5_2b.c

📁 51事例原代码 事例多多 应该对初学者很有用
💻 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 + -