c51实用子程序

上传人:wm****3 文档编号:43035596 上传时间:2018-06-04 格式:DOC 页数:23 大小:17.84KB
返回 下载 相关 举报
c51实用子程序_第1页
第1页 / 共23页
c51实用子程序_第2页
第2页 / 共23页
c51实用子程序_第3页
第3页 / 共23页
c51实用子程序_第4页
第4页 / 共23页
c51实用子程序_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《c51实用子程序》由会员分享,可在线阅读,更多相关《c51实用子程序(23页珍藏版)》请在金锄头文库上搜索。

1、C51C51 实用子程序实用子程序MCS-51 实用子程序 = MCS-51 定点运算子程序库及其使用说明 ()多字节码加法 ()多字节码减法 ()多字节码取补 ()多字节码左移十进制一位(乘 10) ()双字节二进制无符号数乘法 ()双字节二进制无符号数平方 ()双字节二进制无符号数除法 ()双字节二进制无符号数除以单字节二进制数 ()三字节二进制无符号数除以单字节二进制数 ()双字节二进制有符号数乘法(补码) ()双字节二进制有符号数除法(补码) ()双字节二进制无符号数开平方(快速) ()四字节二进制无符号数开平方(快速) ()单字节十六进制数转换成双字节 ASCII 码 ()ASCII

2、 码转换成十六进制数 ()单字节十六进制整数转换成单字节码整数 ()双字节十六进制整数转换成双字节码整数 ()单字节十六进制小数转换成单字节码小数 ()双字节十六进制小数转换成双字节码小数 ()单字节码整数转换成单字节十六进制整数 ()双字节码整数转换成双字节十六进制整数 ()单字节码小数转换成单字节十六进制小数 ()双字节码小数转换成双字节十六进制小数 ()求单字节十六进制无符号数据块的极值 ()求单字节十六进制有符号数据块的极值 ()顺序查找()单字节表格 ()顺序查找()双字节表格 ()对分查找()单字节无符号增序数据表格 ()对分查找()双字节无符号增序数据表格 ()求单字节十六进制无

3、符号数据块的平均值 ()求双字节十六进制无符号数据块的平均值 ()求单字节数据块的(异或)校验和 ()求双字节数据块的(异或)校验和 ()单字节无符号数据块排序(增序) = MCS-51 浮点运算子程序库及其使用说明 (1)浮点数格式化 (2)浮点数加法 (3)浮点数减法 (4)浮点数乘法 (5)浮点数除法 (6)浮点数清零 ()浮点数判零 (8)浮点数传送 (9)浮点数压栈 (10)浮点数出栈 (11)浮点数代数值比较(不影响待比较操作数) (12)浮点绝对值函数 (13)浮点符号函数 (14)浮点取整函数 (15)浮点倒数函数 (16)浮点数平方 (17)浮点数开平方(快速逼近算法) (1

4、8)浮点数多项式计算 (19)以为底的浮点对数函数 (20)以为底的浮点对数函数 (21)以为底的浮点指数函数 (22)以为底的浮点指数函数 (23)以为底的浮点指数函数 (24)双字节十六进制定点数转换成格式化浮点数 (25)格式化浮点数转换成双字节定点数 (26)浮点码转换成格式化浮点数 (27)格式化浮点数转换成浮点码 (28)浮点余弦函数 (29)浮点正弦函数 (30)浮点反正切函数 (31)浮点弧度数转换成浮点度数 (32)浮点度数转换成浮点弧度数 = 子程序的使用方法如下: 将子程序全部内容链接在应用程序之后,统一编译即可。 优点是简单方便,缺点是程序太长,大量无关子程序也包含在其

5、中。仅将子程序中的有关部分链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。 优点是程序紧凑,缺点是需要对子程序库进行仔细删节。 = 定点运算子程序库及其使用说明 多字节定点操作数:用 R0 或 R1 来表示存放在由 R0 或 R1 指示的连续单元中的数据。 地址小的单元存放数据的高字节。 例如: R0=123456H ,若 (R0)=30H ,则 (30H)=12H , (31H)=34H , (32H)=56H 。 运算精度:单次定点运算精度为结果最低位的当量值。 工作区:数据工作区固定在 PSW 、 A 、 B 、 R2 R7 , 用户只要

6、不在工作区中存放无关的或非消耗性的信息, 程序就具有较好的透明性。 = () 标号: 功能:多字节码加法 入口条件:字节数在 R7 中,被加数在 R0 中,加数在 R1 中。出口信息:和在 R0 中,最高位进位在 CY 中。 影响资源: PSW 、 A 、 R2 堆栈需求: 字节 BCDA: MOV A,R7 ;取字节数至 R2 中 MOV R2,A ADD A,R0 ;初始化数据指针 MOV R0,A MOV A,R2 ADD A,R1 MOV R1,A CLR C BCD1: DEC R0 ;调整数据指针 DEC R1 MOV A,R0 ADDC A,R1 ;按字节相加 DA A ;十进制

7、调整 MOV R0,A ;和存回 R0 中 DJNZ R2,BCD1 ;处理完所有字节 RET - () 标号: 功能:多字节码减法 入口条件:字节数在 R7 中,被减数在 R0 中,减数在 R1 中。出口信息:差在 R0 中,最高位借位在 CY 中。 影响资源: PSW 、 A 、 R2 、 R3 堆栈需求: 字节 BCDB: LCALL NEG1 ;减数 R1 十进制取补 LCALL BCDA ;按多字节码加法处理 CPL C ;将补码加法的进位标志转换成借位标志 LCALL NEG1 ;恢复减数 R1 的原始值 MOV C,F0 ;恢复借位标志 RET NEG1: MOV A,R0 ;

8、R1 十进制取补子程序入口 XCH A,R1 ;交换指针 XCH A,R0 LCALL NEG ;通过 R0 实现 R1 取补 MOV A,R0 XCH A,R1 ;换回指针 XCH A,R0 RET - () 标号: 功能:多字节码取补 入口条件:字节数在 R7 中,操作数在 R0 中。 出口信息:结果仍在 R0 中。 影响资源: PSW 、 A 、 R2 、 R3 堆栈需求: 字节 NEG: MOV A,R7 ;取(字节数减一)至 R2 中 DEC A MOV R2,A MOV R3,A NEG0: CLR C MOV A,#99H SUBB A,R0 ;按字节十进制取补 MOV R0,A

9、 ;存回 R0 中 INC R0 ;调整数据指针 DJNZ R2,NEG0 ;处理完( R2 )字节 MOV A,#9AH ;最低字节单独取补 SUBB A,R0 MOV R0,A MOV A,R3 ;恢复指针 MOV R0,A RET - () 标号: 功能:多字节码左移十进制一位(乘十) 入口条件:字节数在 R7 中,操作数在 R0 中。 出口信息:结果仍在 R0 中,移出的十进制最高位在 R3 中。 影响资源: PSW 、 A 、 R2 、 R3 堆栈需求: 字节 BRLN: MOV A,R7 ;取字节数至 R2 中 MOV R2,A ADD A,R0 ;初始化数据指针 MOV R0,A

10、 MOV R3,#0 ;工作单元初始化 BRL1: DEC R0 ;调整数据指针 MOV A,R0 ;取一字节 SWAP A ;交换十进制高低位 MOV R0,A ;存回 MOV A,R3 ;取低字节移出的十进制高位 XCHD A,R0 ;换出本字节的十进制高位 MOV R3,A ;保存本字节的十进制高位 DJNZ R2,BRL1 ;处理完所有字节 RET - () 标号: 功能:双字节二进制无符号数乘法 入口条件:被乘数在 R2 、 R3 中,乘数在 R6 、 R7 中。 出口信息:乘积在 R2 、 R3 、 R4 、 R5 中。 影响资源: PSW 、 A 、 B 、 R2 R7 堆栈需求

11、: 字节 MULD: MOV A,R3 ;计算 R3 乘 R7 MOV B,R7 MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R3 ;计算 R3 乘 R6 MOV B,R6 MUL AB ADD A,R4 ;累加部分积 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 ;计算 R2 乘 R7 MOV B,R7 MUL AB ADD A,R4 ;累加部分积 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 ;计算 R2 乘 R6 MOV B,R6 MUL AB ADD A,R3 ;累加部分积 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A RET - () 标号: 功能:双字节二进制无符号数平方 入口条件:待平方数在 R2 、 R3 中。 出口信息:结果在 R2 、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号