资源介绍
一般来说,用汇编语言编写的程序兼容性、可移植性、可读性都很差。不同程序员编写的程序在函数参数传递上采取的策略各不相同,直接造成移植方面的困难。因此,复制本软件包到您的工程中去,未必马上就能调通,还需要做些必要的调整。
程序文件说明:
main.ASM
主程序文件,请按照注释在适当的地方添加您的代码。
Branch.INC
实用的分支判断程序,好好利用能够大大简化编程工作。
Calc.INC
实用的运算类程序。
Pointer.INC
通用指针处理程序。如果您不了解“通用指针”是什么,请打开该文件看开头的简要说明。如果想深入了解,请研究“C:\Keil\C51\HLP\C51.PDF”中的相关内容。
I2C.INC
简单实用的I/O模拟I2C总线的驱动程序,是在C51软件包的基础上翻译成汇编的。
附:本软件包采用的函数参数传递规则
【系统寄存器】
PC、PSW、SP、A、B、C、R0、R1、DPTR
【函数返回值】
============================================================
返回类型 保存在 说明
------------------------------------------------------------
bit(位) CY
byte(字节) ACC
word(字) R6,R7 R6-高8位,R7-低8位
ptr(通用指针) R1,DPTR R1-存储类型,DPTR-存储地址
============================================================
【函数参数】
============================================================
bit byte word ptr
------------------------------------------------------------
第1参数 20H.0 R7 R6,R7 08H,09H,0AH
第2参数 20H.1 R6 R4,R5 0BH,0CH,0DH
第3参数 20H.2 R5 0EH,0FH
第4参数 20H.3 R4 0CH,0DH
第5参数 20H.4 0FH
第6参数 20H.5 0EH
第7参数 20H.6 0DH
第8参数 20H.7 0CH
============================================================
系统寄存器不允许用于函数参数的传递
参数的传递顺序有严格要求,必须遵守
函数的参数通常都比较少,对偶尔出现参数过多的情况,请自行约定传递方式
【局部变量】
bit变量从21H.0~21H.7分配,分配前21H要入栈保护
byte、word变量从R2、R3、18H~1FH分配,分配前要入栈保护
参数传递剩余的寄存器可作为寄存器变量使用
系统寄存器总是临时性的,进入函数后,不必入栈保护
为了提高效率,系统寄存器也可作为变量使用,但中间不能调用任何函数
变量的分配比较灵活,分配顺序无严格要求
局部IRAM数组从堆栈空间进行动态分配
【全局变量、堆栈】
全局bit变量从22H.0开始分配
全局byte、word变量(含全局数组)从30H开始分配
堆栈起始位置紧跟全局变量之后
函数的局部静态变量按全局变量来处理(命名时可前缀函数名)
- 上一篇: SAP.BASIS基础.rar
- 下一篇: sap导出自定义程序代码.txt