51汇编指令和绝对定位Word格式.docx
《51汇编指令和绝对定位Word格式.docx》由会员分享,可在线阅读,更多相关《51汇编指令和绝对定位Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
MOVRn,direct直接寻址单元送寄存器22
MOVdirect,@Ri内部RAM单元送直接寻址单元22
MOV@Ri,direct直接寻址单元送内部RAM单元22
MOVdirect2,direct1直接寻址单元送直接寻址单元32
MOVDPTR,#data1616位立即数送数据指针32
MOVXA,@Ri外部RAM单元送累加器(8位地址)12
MOVX@Ri,A累加器送外部RAM单元(8位地址)12
MOVXA,@DPTR外部RAM单元送累加器(16位地址)12
MOVX@DPTR,A累加器送外部RAM单元(16位地址)12
MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12
MOVCA,@A+PC查表数据送累加器(PC为基址)12
XCHA,Rn累加器与寄存器交换11
XCHA,@Ri累加器与内部RAM单元交换11
XCHDA,direct累加器与直接寻址单元交换21
XCHDA,@Ri累加器与内部RAM单元低4位交换11
SWAPA累加器高4位与低4位交换11
POPdirect栈顶弹出指令直接寻址单元22
PUSHdirect直接寻址单元压入栈顶22
二、算术运算类指令
ADDA,Rn累加器加寄存器11
ADDA,@Ri累加器加内部RAM单元11
ADDA,direct累加器加直接寻址单元21
ADDA,#data累加器加立即数21
ADDCA,Rn累加器加寄存器和进位标志11
ADDCA,@Ri累加器加内部RAM单元和进位标志11
ADDCA,#data累加器加立即数和进位标志21
ADDCA,direct累加器加直接寻址单元和进位标志21
INCA累加器加111
INCRn寄存器加111
INCdirect直接寻址单元加121
INC@Ri内部RAM单元加111
INCDPTR数据指针加112
DAA十进制调整11
SUBBA,Rn累加器减寄存器和进位标志11
SUBBA,@Ri累加器减内部RAM单元和进位标志11
SUBBA,#data累加器减立即数和进位标志21
SUBBA,direct累加器减直接寻址单元和进位标志21
DECA累加器减111
DECRn寄存器减111
DEC@Ri内部RAM单元减111
DECdirect直接寻址单元减121
MULAB累加器乘寄存器B14
DIVAB累加器除以寄存器B14
三、逻辑运算类指令
ANLA,Rn累加器与寄存器11
ANLA,@Ri累加器与内部RAM单元11
ANLA,#data累加器与立即数21
ANLA,direct累加器与直接寻址单元21
ANLdirect,A直接寻址单元与累加器21
ANLdirect,#data直接寻址单元与立即数31
ORLA,Rn累加器或寄存器11
ORLA,@Ri累加器或内部RAM单元11
ORLA,#data累加器或立即数21
ORLA,direct累加器或直接寻址单元21
ORLdirect,A直接寻址单元或累加器21
ORLdirect,#data直接寻址单元或立即数31
XRLA,Rn累加器异或寄存器11
XRLA,@Ri累加器异或内部RAM单元11
XRLA,#data累加器异或立即数21
XRLA,direct累加器异或直接寻址单元21
XRLdirect,A直接寻址单元异或累加器21
XRLdirect,#data直接寻址单元异或立即数32
RLA累加器左循环移位11
RLCA累加器连进位标志左循环移位11
RRA累加器右循环移位11
RRCA累加器连进位标志右循环移位11
CPLA累加器取反11
CLRA累加器清零11
四、控制转移类指令类
ACCALLaddr112KB范围内绝对调用22
AJMPaddr112KB范围内绝对转移22
LCALLaddr162KB范围内长调用32
LJMPaddr162KB范围内长转移32
SJMPrel相对短转移22
JMP@A+DPTR相对长转移12
RET子程序返回12
RET1中断返回12
JZrel累加器为零转移22
JNZrel累加器非零转移22
CJNEA,#data,rel累加器与立即数不等转移32
CJNEA,direct,rel累加器与直接寻址单元不等转移32
CJNERn,#data,rel寄存器与立即数不等转移32
CJNE@Ri,#data,relRAM单元与立即数不等转移32
DJNZRn,rel寄存器减1不为零转移22
DJNZdirect,rel直接寻址单元减1不为零转移32
NOP空操作11
五、布尔操作类指令
MOVC,bit直接寻址位送C21
MOVbit,CC送直接寻址位21
CLRCC清零11
CLRbit直接寻址位清零21
CPLCC取反11
CPLbit直接寻址位取反21
SETBCC置位11
SETBbit直接寻址位置位21
ANLC,bitC逻辑与直接寻址位22
ANLC,/bitC逻辑与直接寻址位的反22
ORLC,bitC逻辑或直接寻址位22
ORLC,/bitC逻辑或直接寻址位的反22
JCrelC为1转移22
JNCrelC为零转移22
JBbit,rel直接寻址位为1转移32
JNBbit,rel直接寻址为0转移
变量定位或函数定位:
1、函数定位:
假如要把C源文件tools.c中的函数
intBIN2HEX(intxx)
{
...
}
放在CODEMEMORY的0x1000处,先编译该工程,然后打开该工程的
M51文件,在
***CODEMEMORY***
行下找出要定位的函数的名称,应该形如:
CODExxxxHxxxxHUNIT?
PR?
_BCD2HEX?
TOOLS
然后在:
Project->
OptionsforTarget...->
BL51Locate:
Code
中填写如下内容:
?
TOOLS(0x1000)
再次Build,在M51中会发现该函数已放在CODEMEMORY的0x1000处
了
2、赋初值的变量定位:
要将某变量定位在一绝对位置且要赋初值,此时用_at_不能完成,则如
下操作:
在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值
(假设是code变
量):
charcodemyVer={COPYRIGHT2001-11};
然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则
在
下可找到:
CO?
INITVARS
中填入:
INITVARS(0x200)
再次编译即可。
相应地,如为xdata变量,则InitVars.c中写:
charxdatamyVer={COPYRIGHT2001-11};
然后将该文件加入工程,编译,打开M51文件,在
***XDATAMEMORY***
XDATAxxxxHxxxxHUNIT?
XD?
Xdata
相应地,若定义的是data/idata等变量,则相应处理即可。
3、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序
排列。
扩展阅读:
51.AVR.PIC单片机编程器详解