RSEG是段选择指令,要想明白它的意思就要了解段的意思。
段是程序代码或数据对象的存储单位。程序代码放到代码段,数据对象放到数据段。段分两种,一是绝对段,一是再定位段。绝对段在汇编语言中指定,在用L51联接的时候,地址不会改变。用于如访问一个固定存储器的i/o,或提供中断向量的入口地址。而再定位段的地址是浮动的。它的地址有L51对程序模块连接时决定。 C51对源程序编译所产生的段都是再定位段,它都有段名和存储类型。 绝对段没有段名。
例如,你写用C写了一个函数 void test_fun(void) { …} , 存在test.c中,用编译器编译以
后. SRC FILE中看到: ?PR?test_fun?TEST SEGMENT CODE //(函数放到代码段
中) 写这个函数体的时候: RSEG ?PR?test_fun?TEST //选择已定位的代码段为当前段
test_fun:
……//代码
所以函数的表达模式是这样: ?PR?函数名?文件名
而函数名又分: 1:无参函数 ?PR?函数名?文件名
2:有参函数 ?PR?_函数名?文件名
3:再入函数 ?PR?_?函数名?文件名
又例如 你定义了全局变量 unsigned char data temp1,temp2; unsigned char xdata
temp3; 在test.c文件中,编译器会为每个文件分0到多个全局数据段,相同类型的全局变量被存
到同一段中。所以上面会编译成如下:
RSEG ? DT? TEST
. temp1: DS 1
. temp2: DS 1
;
RSEG ?XD? TEST
. temp3: DS 1
//下面是各个类型的数据全局段的表示
?CO? 文件名 //常数段
?XD? FILE_NAME //XDATA 数据段
?DT? FILE_NAME //DATA 数据段
我要赚赏金打赏帖 |
|
|---|---|
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
| 在K230DBOX上实现音乐播放器功能被打赏¥15元 | |
| NXP MCU系列开发板MCULink固件升级方法【VSCode】被打赏¥28元 | |
| 三分钟快速搭建NXP MCU开发环境(VSCode)被打赏¥22元 | |
| 为遥控小车巧添功能被打赏¥26元 | |
| 【S32K3XX】FlexCAN 模块配置使用被打赏¥30元 | |
| 【S32K3XX】FlexCAN RAM 资源分配整理被打赏¥25元 | |
我要赚赏金
