51单片机汇编部分资料

来源:互联网 发布:淘宝950轮播图片特效 编辑:程序博客网 时间:2024/05/21 16:57

51单片机汇编启动文件详解,包括了里面用到的种种汇编伪代码的详解

链接:

https://wenku.baidu.com/view/b788fce8a98271fe900ef906.html

或者:http://www.eeworld.com.cn/mcu/2015/0115/article_18006.html

若链接失效,可在百度文库里搜索:STARTUP51、STARTUP51.A51详解。



51单片机的idata,xdata,pdata,data的详解:

https://www.cnblogs.com/jikexianfeng/p/5870357.html



51汇编伪指令:

http://blog.csdn.net/qlexcel/article/details/78552738?locationNum=4&fps=1

该文章详解了常见的汇编伪指令,有:DS、BIT、USING、SEGMENT、RSEG、CSEG、XSEG、ISEG、BSEG、ORG、EQU、DATA 、DB 等

这里只介绍几个比较难懂的几个:

SEGMENT用于声明一个可重定位的段,形如(段名  SEGMENT   段所在的存储区)例如:

?C_C51STARTUP   SEGMENT   CODE  ;段名?C_C51STARTUP,该段被声明为代码段,被链接到CODE区?STACK          SEGMENT   IDATA;段名??STACK,该段被声明为数据段,被链接到内部RAM区,即IDATA区

上面这些只是声明,如果打算在这些段中放入代码或变量,必须使用重定位指令RSEG,例如:

RSEG    ?STACK;选择之前定义过的一个可重定位的段?STACK,下面的汇编语句将会被放置到该段,直到遇到下一个段定位指令,例如CSEG/RSEG/DSEG等。DS      1;预留存储区命令。声明先占用一个字节的空间,在编译时,这个预留的空间不会被其他变量所使用。在这里的意义是,给硬件栈分配1个byte(实际这样是有问题的,应该为硬件栈预留更多空间)EXTRN CODE (?C_START);引用外部变量或函数?C_STARTPUBLIC  ?C_STARTUP;声明全局变量或函数CSEG    AT      0;在代码段中绝对定位(一般用于建立中断向量表)?C_STARTUP:     LJMP    STARTUP1;地址0总是存放复位向量地址RSEG    ?C_C51STARTUP;选择之前定义过的一个可重定位的段?C_C51STARTUP,下面的汇编语句将会被放置到该段

SEGMENT(可重定位段)指令相对的,还有绝对定位段(不可重定位段)指令:CSEG、XSEG、ISEG、BSEG,绝对定位段指令不需要指定段名,只指定绝对位置即可,如上面的语句:

CSEG    AT      0;在代码段中绝对定位,用AT指定绝对地址






原创粉丝点击