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

📄 新建 文本文档.txt

📁 51单片机方面的程序 用汇编写的 很经典的一些程序
💻 TXT
字号:
;二进制小数(2位)转换为十进制小数(分离BCD码)
;入口: R3,R4,R7
;占用资源: ACC,B
;堆栈需求: 3字节
;出口: R0

PBTD : 
	MOV A,R7
	PUSH A
PBD1 : 
	MOV A,R4
	MOV B,#0AH
	MUL AB
	MOV R4,A
	MOV A,B
	XCH A,R3
	MOV B,#0AH
	MUL AB
	ADD A,R3
	MOV R3,A
	CLR A
	ADDC A,B
	MOV @R0,A
	INC R0
	DJNZ R7,PBD1
	POP A
	MOV R7,A
	MOV A,R0
	CLR C
	SUBB A,R7
	MOV R0,A
    RET





;二进制小数(M位)转换为十进制小数(分离BCD码)
;入口: R1,M,N
;占用资源: ACC,B,R2,R3,R7,NCNT
;堆栈需求: 2字节
;出口: R0

PBTDMN : 
	MOV A,R0
	MOV R2,A
	MOV A,R1
	MOV R3,A
	MOV A,N
	MOV NCNT,A
PBDMN1 : 
	MOV R7,M
	CLR A
	CLR F0
PBDMN2 : 
	XCH A,@R1
	MOV B,#0AH
	MUL AB
	MOV C,F0
	ADDC A,@R1
	MOV F0,C
	MOV @R1,A
	INC R1
	MOV A,B
	DJNZ R7,PBDMN2
	ADDC A,#00H
	MOV @R0,A
	INC R0
	MOV A,R3
	MOV R1,A
	DJNZ NCNT,PBDMN1
	MOV A,R2
	MOV R0,A
   RET




二进制整数(2位)转换为十进制整数(分离BCD码)
;入口: R3,R4
;占用资源: ACC,R2,NDIV31
;堆栈需求: 5字节
;出口: R0,NCNT

IBTD21 : 
	MOV NCNT,#00H
	MOV R2,#00H
IBD211 : 	
	MOV R7,#0AH
LCALL  	NDIV31
	MOV A,R7
	MOV @R0,A
	INC R0
	INC NCNT
	MOV A,R3
	ORL A,R4
	JNZ IBD211
	MOV A,R0
	CLR C
	SUBB A,NCNT
	MOV R0,A
    RET



三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7
;入口: R2,R3,R4,R7
;占用资源: ACC,B,F0
;堆栈需求: 3字节
;出口: (R2),R3,R4,R7,OV

NDIV31 : 
	MOV A,R2
	MOV B,R7
	DIV AB
	PUSH A
	MOV R2,B
	MOV B,#10H
NDV311 : 
	CLR C
	MOV A,R4
	RLC A
	MOV R4,A
	MOV A,R3
	RLC A
	MOV R3,A
	MOV A,R2
	RLC A
	MOV R2,A
	MOV F0,C
	CLR C
	SUBB A,R7
	JB F0,NDV312
	JC NDV313
NDV312 : 
	MOV R2,A
	INC R4
NDV313 : 
	DJNZ B,NDV311
	POP A
	CLR OV
	JZ NDV314
	SETB OV
NDV314 : 
	XCH A,R2
	MOV R7,A
   RET




;二进制整数(2位)转换为十进制整数(组合BCD码)
;入口: R3,R4
;占用资源: ACC,B,R7
;堆栈需求: 3字节
;出口: R0

IBTD22 : 
	MOV A,R0
	PUSH A
	MOV R7,#03H
	CLR A
IBD221 : 
	MOV @R0,A
	INC R0
	DJNZ R7,IBD221
	POP A
	MOV R0,A
	MOV R7,#10H
IBD222 :
	 PUSH A
	CLR C
	MOV A,R4
	RLC A
	MOV R4,A
	MOV A,R3
	RLC A
	MOV R3,A
	MOV B,#03H
IBD223 :
	 MOV A,@R0
	ADDC A,@R0
	DA A
	MOV @R0,A
	INC R0
	DJNZ B,IBD223
	POP A
	MOV R0,A
	DJNZ R7,IBD222
   sRET






;二进制整数(3位)转换为十进制整数(分离BCD码)
;入口: R2,R3,R4
;占用资源: ACC,R2,NDIV31
;堆栈需求: 5字节
;出口: R0,NCNT

IBTD31 :
	 CLR A
	MOV NCNT,A
IBD311 : 
	MOV R7,#0AH
	LCALL NDIV31
	MOV A,R7
	MOV @R0,A
	INC R0
	INC NCNT
	MOV A,R2
	ORL A,R3
	ORL A,R4
	JNZ IBD311
	MOV A,R0
	CLR C
	SUBB A,NCNT
	MOV R0,A
     RET











二进制整数(3位)转换为十进制整数(组合BCD码)
;入口: R2,R3,R4
;占用资源: ACC,B,R7
;堆栈需求: 3字节
;出口: R0

IBTD32 : 
	MOV A,R0
	PUSH A
	MOV R7,#04H
	CLR A
IBD321 : 
	MOV @R0,A
	INC R0
	DJNZ R7,IBD321
	POP A
	MOV R0,A
	MOV R7,#18H
IBD322 : 
	PUSH A
	CLR C
	MOV A,R4
	RLC A
	MOV R4,A
	MOV A,R3
	RLC A
	MOV R3,A
	MOV A,R2
	RLC A
	MOV R2,A
	MOV B,#04H
IBD323 : 	
	MOV A,@R0
	ADDC A,@R0
	DA A
	MOV @R0,A
	INC R0
	DJNZ B,IBD323
	POP A
	MOV R0,A
	DJNZ R7,IBD322
     RET










;二进制整数(M位)转换为十进制整数(组合BCD码)
入口: R1,M,N
;占用资源: ACC,B,R2,R3,R7
;堆栈需求: 2字节
;出口: R0

IBTDMN : 
	MOV A,R0
	MOV R2,A
	MOV A,R1
	MOV R3,A
	MOV B,N
	CLR A
IBDMN1 : 
	MOV @R0,A
	INC R0
	DJNZ B,IBDMN1
	MOV A,M
	SWAP A
	RR A
	CLR C
	MOV R7,A
IBDMN2 : 
	MOV A,R2
	MOV R0,A
	MOV A,R3
	MOV R1,A
	MOV B,M
IBDMN3 : 
	MOV A,@R1
	RLC A
	MOV @R1,A
	INC R1
	DJNZ B,IBDMN3
	MOV B,N
IBDMN4 : 
	MOV A,@R0
	ADDC A,@R0
	DA A
	JNB ACC.4,IBDMN5
	SETB C
	CLR ACC.4
IBDMN5 : 
	MOV @R0,A
	INC R0
	DJNZ B,IBDMN4
	DJNZ R7,IBDMN2
	MOV A,R2
	MOV R0,A
   RET


;

⌨️ 快捷键说明

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