单片机汇编子程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; 1, 以下的程序是一些关于数据转换与计算的子程序.但由于本人现在很忙,仅测试了
; 其中的很少一部分.本人不保证所有的程序都是正确的,并且由于使用不同的编译器,
; 即使是本人已测试过的程序,您也可能要修改一些指令.
; 2. 一旦将其整理测试完毕,将会免费发送.
; 3. 若有任何问题,与TongZhongZhi@联系
;******************************************************************** 函数名说明
BIN3toBCD4 三字节二进制整数--->>BCD码四字节转换
SIBITD 单字节二进制整数-->>BCD码转换子程序
ADDM1 三字节加法子程序并显示和值
SUBM 多字节减法子程序
SUBM4 四字节乘四字节乘法子程序
CHU3 五字节除五字节除法子程序
CHU4 双字节除单字节除法子程序
CHU5 双字节除单字节商为双字节除法子程序
CHU6 三字节除单字节商为三字节除法了程序
CHU7 三字节除双字节商为三字节除法子程序
CHU8 四字节除双字节商为二字节除法子程序
CHU9 三字节或二字节的倒数结果为三字节除法子程序
CHU10 带符号双字节除单字节除法子程序
SQRT 双字节平方根子程序
BCDAD1 单字节BCD码加法子程序
BCDAD2 四字节BCD码加法子程序
BCDSUB3 单字节BCD码减法子程序
DSUB2 四字节BCD码减法子程序
BCDSUB4 单字节BCD码乘法子程序
DCHFA 十进制数8位乘8位(四字节BCD码乘四字节BCD码)乘法子程序DCHU1 单字节BCD码除法子程序
DCHU2 四字节BCD码除法子程序
DSQR1 单字节BCD码平方根子程序
DSQR2 双字节BCD码平方根子程序
DSQR3 三字节BCD码平方根子程序
ASBIN1 ASCII码--->>二进制数转换子程序
EXASC1 十六进制--->>ASCII码转换子程序
BCDAS1 BCD码--->>ASCII码转换子程序
BINBCD 双字节二进制-->>三字节BCD码转换子程序
DTOB4 四位BCD码--->>十六位二进制数转换子程序
BINASC 二进制数--->>ASCII码字符串转换子程序
BCH 二进制数--->>十六进制数转换子程序
ASCBCD ASCII码-->>BCD码转换子程序
ASCHEX ASCII码-->>十六进制数转换子程序
BCDBIN BCD码--->>二进制数转换子程序
EXASC3 十六进制数-->>ASCII码转换子程序
;******************************************************************** ;Name: BIN3toBCD4
;Func: 三字节二进制整数--->>BCD码四字节转换(Comped BCD)
;Input: 二进制数人低字节到高字节存放在内部RAM50H,51H,52H单元中
;Output: BCD码人低位到高位分别存放在内部RAM53H,54H,55H,56H单元中;USE: R7-R0, 56H-50H
;******************************************************************** ;PASSED
BIN3toBCD4:
LENG1 EQU 24
LENG2 EQU 4
LENG3 EQU 3
NUMB1 EQU 50H
NUMB2 EQU 53H
;;;For test
MOV 50H, H
MOV 51H, FFH
MOV 52H, FFH
;;;;;;;;;;
ACALL MUBTD
RET
;;LOOP: SJMP LOOP
MUBTD: MOV R0, #NUMB2
MOV R7, #LENG2
CLR A
LOOP1: MOV @R0, A
INC R0
DJNZ R7, LOOP1
MOV R7, #LENG1
LOOP4: MOV R1, #NUMB1
MOV R6, #LENG3
CLR C
LOOP2: MOV A, @R1
RLC A
MOV @R1, A
INC R1
DJNZ R6, LOOP2
MOV R5, #LENG2
MOV R0, #NUMB2
LOOP3: MOV A, @R0
ADDC A, @R0
DA A
MOV @R0, A
INC R0
DJNZ R5, LOOP3
DJNZ R7, LOOP4
MOV R0, 53H
MOV R1, 54H
MOV R2, 55H
MOV R3, 56H
RET ; end of BIN3toBCD4
;******************************************************************** ;____________________________________________________________________ _______
__
; Name: SIBITD
;Func: 单字节二进制整数-->>BCD码转换子程序
;Input: 二进制数放在内部RAM20H单元
;OutPut: 转换后的BCD码高位放在内部RAM22H
;____________________________________________________________________ _______
__
LENG1 EQU 8 ;二进制数位数
LENG2 EQU 2 ;BCD码字节数
NUMB1 EQU 20H ;二进制数地址
NUMB2 EQU 21H ;BCD码首址
ORG 2000H
AJMP MAIN
MAIN: MOV R0, #NMB1
MOV R1, #NUMB2
MOV R7, #LENG1
ACALL SIBTD
SJMP $
SIBTD: CLR A
MOV 21H, A
MOV 22H, A
LOOP3: CLR C
MOV A, @R0
RLC A
MOV @R0, A
MOV R1, #NUMB2
MOV R6, #LENG3
LOOP2: MOV A, #R1
ADDC A, #@R1
DA A
MOV @R1, A