资源描述:
《51单片机伪指令和指令详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ASM-51汇编伪指令一、伪指令分类1.符号定义SEGMENT,EQU,SET,DATA,IDATA,XDATA,BIT,CODE2.存储器初始化/保留DS,DB,DW,DBIT3.程序链接PUBILC,EXTRN,NAME4.汇编程序状态控制ORG,END5.选择段的伪指令RSEG,CSEG,DSEG,XSEG,ISEG,BSEG,USING二、伪指令具体说明1.符号定义伪指令1)SEGMENT伪指令格式:段名SEGMENT段类型说明:SEGMENT伪指令说明一个段。段就是一块程序代码或数据存储器。允许使用的段类型为:●CODE代码空间●DATA可以直接寻址的内部数据空间●XD
2、ATA外部数据空间●IDATA可以间接寻址的整个内部数据空间●BIT位空间例子:(段符号用于表达式时,代表被连接段的基地址)STACKSEGMENTIDATARSEGSTACKDS10H;保留16字节做堆栈MOVSP,#STACK-1;堆栈指针初始化12)EQU伪指令格式:符号名EQU表达式符号名EQU特殊汇编符号说明:EQU表示把一个数值或特殊汇编符号赋予规定的名字。一个表达式赋予一个符号,必须是不带向前访问的表达式。例子:N27EQU27;ACCUMEQUA;定义ACCUM代替特殊汇编符号A(累加器)HEREEQU$;HERE为当前位置计数器的值3)SET伪指令格式:符号名S
3、ET表达式符号名SET特殊汇编符号说明:SET类似EQU,区别在于可以用另一个SET伪指令在以后对定义过的符号重新定义。例子:COUNTSET0COUNTSETCOUNT+14)BIT伪指令格式:符号名BIT位地址说明:BIT伪指令把一个地址赋予规定的符号名。该符号类型取段类型BIT.例子:RSEGDATA_SEG;CONTROL:DS1ALATMBITCONTROL.0;OPEN_BOARDBITALATM+1;下一位RESET_BOARDBIT60H;下一个绝对的位5)DATA伪指令格式:符号名DATA表达式说明:DATA伪指令把片内的数据地址赋予所规定的符号名。符号段类型为
4、DATA.例子:CONINDATASBUF;定义CONIN到串行口缓冲器的地址2TABLE_BASEDATA70H;把TABLE_BASE定义到位置70H6)XDATA伪指令格式:符号名XDATA表达式说明:XDATA伪指令把片外的数据地址赋予所规定的符号名。段类型为XDATA.例子:RSEGXSEG1ORG100HDATEDS5;定义DATE在偏离XSEG1的100H处TIMEXDATADATE+5;定义TIME为DATE后面的5个字节.7)IDATA伪指令格式:符号名IDATA表达式说明:IDATA伪指令将间接的内部数据地址赋予所规定的符号名。类型为IDATA.例子:BUFF
5、ERIDATA60HBUFFER_LENEQU20HBUFFER_ENDIDATABUFFER+BUFFER_LEN-18)CODE伪指令格式:符号名CODE表达式说明:CODE伪指令把一个代码地址赋予所规定的符号名。符号段类型为CODE。2.存储器初始化及保留1)DS伪指令格式:标号DS表达式说明:DS伪指令以字节为单位保留空间。可以用于除BIT类型段以外的任何段。2)DBIT伪指令格式:标号DBIT表达式说明:DBIT伪指令以位为单位保留空间。它仅用于BIT类型段。在BIT段中,位置计数器的基本单位是位而不是字节。3)DB伪指令3格式:标号DB表达式说明:DB伪指令用字节值对
6、代码存储器初始化。段类型为CODE型,其表达式列表是一个由逗号(,)分开的一个或多个字节值或串。例子:AGE:DB‘MARY’,0,27ORIMES:DB1,2,3,54)DW伪指令格式:标号DW表达式说明:DW伪指令是用字(16位)值对代码存储器初始化。段类型为CODE型。该表达式可以是一个由逗号(,)分开的一个或多个字值,字值可为绝对的或可重新定位的表达式。若在列表中用了位置计数器$,它计算出正被初始化字的代码地址。列表中的每一项以它出现在该列表中的顺序放入存储器,其高字节在前,低字节在后。例子:ARRIVALDW710,‘AM’JUMP_TABLEDWGO_PROC,BRE
7、AK_PROC,DISPLAY_PROC;由产生地址的清单成一个跳转表。3.程序的链接1)PUBLIC伪指令格式:PUBLIC符号名列表说明:PUBLIC伪指令允许当前被汇编模块的符号为外部公用。符号名对于一个时,用逗号(,)分开。寄存器或段符号名(通过SEGMENT伪指令声明了的)不可以规定为PUBLIC。例子:PUBLICputctrl,put_data,liner2)EXTRN伪指令格式:ERTRN[段类型(符号名列表)],。。。说明:EXTRN伪指令列出当前模块中要访问的