一些常用的51汇编子程序库.docx
- 文档编号:29221525
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:8
- 大小:15.48KB
一些常用的51汇编子程序库.docx
《一些常用的51汇编子程序库.docx》由会员分享,可在线阅读,更多相关《一些常用的51汇编子程序库.docx(8页珍藏版)》请在冰豆网上搜索。
一些常用的51汇编子程序库
;51汇编子程序库
;**************************************
;///////////////子程序库//////////
;**************************************
;(5标号:
MULD
;功能:
双字节二进制无符号数乘法
;入口条件:
被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:
乘积在R2、R3、R4、R5中。
;影响资源:
PSW、A、B、R2~R7
;堆栈需求:
2字节
MULD:
MOVA,R3;计算R3乘R7
MOVB,R7
MULAB
MOVR4,B;暂存部分积
MOVR5,A
MOVA,R3;计算R3乘R6
MOVB,R6
MULAB
ADDA,R4;累加部分积
MOVR4,A
CLRA
ADDCA,B
MOVR3,A
MOVA,R2;计算R2乘R7
MOVB,R7
MULAB
ADDA,R4;累加部分积
MOVR4,A
MOVA,R3
ADDCA,B
MOVR3,A
CLRA
RLCA
XCHA,R2;计算R2乘R6
MOVB,R6
MULAB
ADDA,R3;累加部分积
MOVR3,A
MOVA,R2
ADDCA,B
MOVR2,A
RET
;(7标号:
DIVD
;功能:
双字节二进制无符号数除法
;入口条件:
被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口信息:
OV=0时,双字节商在R4、R5中,OV=1时溢出。
;影响资源:
PSW、A、B、R1~R7
;堆栈需求:
2字节
DIVD:
CLRC;比较被除数和除数
MOVA,R3
SUBBA,R7
MOVA,R2
SUBBA,R6
JCDVD1
SETBOV;溢出
RET
DVD1:
MOVB,#10H;计算双字节商
DVD2:
CLRC;部分商和余数同时左移一位
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
XCHA,R2
RLCA
XCHA,R2
MOVF0,C;保存溢出位
CLRC
SUBBA,R7;计算(R2R3-R6R7
MOVR1,A
MOVA,R2
SUBBA,R6
ANLC,/F0;结果判断
JCDVD3
MOVR2,A;够减,存放新的余数
MOVA,R1
MOVR3,A
INCR5;商的低位置一
DVD3:
DJNZB,DVD2;计算完十六位商(R4R5
CLROV;设立成功标志
RET
;(9标号:
DV31
;功能:
三字节二进制无符号数除以单字节二进制数
;入口条件:
被除数在R3、R4、R5中,除数在R7中。
;出口信息:
OV=0时,双字节商在R4、R5中,OV=1时溢出。
;影响资源:
PSW、A、B、R2~R7
;堆栈需求:
2字节
DV31:
CLRC
MOVA,R3
SUBBA,R7
JCDV30
SETBOV;商溢出
RET
DV30:
MOVR2,#10H;求R3R4R5/R7-→R4R5
DM23:
CLRC
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
MOVF0,C
CLRC
SUBBA,R7
ANLC,/F0
JCDM24
MOVR3,A
INCR5
DM24:
DJNZR2,DM23
MOVA,R3;四舍五入
ADDA,R3
JCDM25
SUBBA,R7
JCDM26
DM25:
INCR5
MOVA,R5
INCR4
DM26:
CLROV
RET;商在R4R5中
;(16标号:
HBCD
;功能:
单字节十六进制整数转换成单字节BCD码整数
;入口条件:
待转换的单字节十六进制整数在累加器A中。
;出口信息:
转换后的BCD码整数(十位和个位仍在累加器A中,百位在R3中。
;影响资源:
PSW、A、B、R3
;堆栈需求:
2字节
HBCD:
MOVB,#100;分离出百位,存放在R3中
DIVAB
MOVR3,A
MOVA,#10;余数继续分离十位和个位
XCHA,B
DIVAB
SWAPA
ORLA,B;将十位和个位拼装成BCD码
RET
;(17标号:
HB2
;功能:
双字节十六进制整数转换成三字节BCD码整数
;入口条件:
待转换的双字节十六进制整数在R6、R7中。
;出口信息:
转换后的三字节BCD码整数在R3、R4、R5中。
;影响资源:
PSW、A、R2~R7
;堆栈需求:
2字节
HB2:
CLRA;BCD码初始化
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H;转换双字节十六进制整数
HB3:
MOVA,R7;从高端移出待转换数的一位到CY中
RLCA
MOVR7,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R5;BCD码带进位自身相加,相当于乘2
ADDCA,R5
DAA;十进制调整
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
MOVA,R3
ADDCA,R3
MOVR3,A;双字节十六进制数的万位数不超过6,不用调整DJNZR2,HB3;处理完16bit
RET
;(20标号:
BCDH
;功能:
单字节BCD码整数转换成单字节十六进制整数
;入口条件:
待转换的单字节BCD码整数在累加器A中。
;出口信息:
转换后的单字节十六进制整数仍在累加器A中。
;影响资源:
PSW、A、B、R4
;堆栈需求:
2字节
BCDH:
MOVB,#10H;分离十位和个位
DIVAB
MOVR4,B;暂存个位
MOVB,#10;将十位转换成十六进制
MULAB
ADDA,R4;按十六进制加上个位
RET
;(21标号:
BH2
;功能:
双字节BCD码整数转换成双字节十六进制整数
;入口条件:
待转换的双字节BCD码整数在R2、R3中。
;出口信息:
转换后的双字节十六进制整数仍在R2、R3中。
;影响资源:
PSW、A、B、R2、R3、R4
;堆栈需求:
4字节
BH2:
MOVA,R3;将低字节转换成十六进制
LCALLBCDH
MOVR3,A
MOVA,R2;将高字节转换成十六进制
LCALLBCDH
MOVB,#100;扩大一百倍
MULAB
ADDA,R3;和低字节按十六进制相加
MOVR3,A
CLRAADDCA,BMOVR2,ARET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一些 常用 51 汇编 程序库