C51访问存贮器和I/O口绝对地址技巧解析

需积分: 19 7 下载量 44 浏览量 更新于2024-08-17 收藏 540KB PPT 举报
"C对存贮器和外接I/O口的绝对地址访问-89C51汇编语言程序的设计与调试" 89C51是一款广泛应用的微控制器,其编程涉及汇编语言和C51语言。在C51编程中,有时需要对存贮器和外接I/O口进行绝对地址访问。为了实现这一点,C51提供了一个名为`absacc.h`的头文件,该文件包含了几个关键的函数,使得程序员可以直接通过绝对地址操作不同区域的内存和I/O口。 1. 对存贮器的绝对地址访问: - `CBYTE`: 这个函数允许以字节形式访问code区的字符型数据。Code区通常包含程序的机器代码。 - `DBYTE`: 用于以字节形式访问data区的字符型数据。Data区是存放初始化的全局变量和静态局部变量的地方。 - `PBYTE`: 用于访问pdata或I/O区的字符型数据。Pdata区是内部RAM的一部分,常用于存储配置寄存器。 - `XBYTE`: 提供对xdata或I/O区的字符型数据访问。Xdata是外部数据存储区,用于扩展单片机的内存。 同样,`CWORD`, `DWORD`, `PWORD` 和 `XWORD` 函数分别对应以上四个函数,但它们以字(16位)为单位进行访问。 2. 汇编语言程序设计: - 机器语言是计算机直接理解和执行的二进制代码,尽管效率高,但编写和理解困难。 - 汇编语言是机器语言的助记符形式,比机器语言更易读,但仍然需要通过汇编器转换为机器代码才能执行。 - 高级语言如C,虽然更易学习和使用,但需要编译器将其转化为机器语言,可能导致较大的内存占用和较长的执行时间,不适合实时系统。 在89C51中,汇编语言和C51常常结合使用。汇编语言适合于需要精确控制硬件操作和优化性能的场合,而C51则提供了更高级别的抽象和便捷的编程方式。汇编语言源程序由指令性语句(CPU可执行)和指示性语句(伪指令,用于编译过程)组成。 在实际编程中,定义如`#define com XBYTE[0x07ff]`这样的宏,可以在程序中使用变量`com`来直接访问07FFH地址的外部RAM或I/O口,简化了绝对地址的引用,提高了代码的可读性和可维护性。这种混合编程方法结合了两种语言的优势,既实现了低级硬件控制,又保证了代码的可读性和可移植性。