大家好,欢迎来到IT知识分享网。
51单片机的汇编语言操作指令总结
1.指令格式
【标号:】操作码 目的操作数 ,源操作数;注释
如:LOOP:MOV A, 33H;将33H输入到累加器A中
指令常用符号:
(1) Ri和Rn: R表示当前工作寄存器区中的工作寄存器, i表示0或1, 即R0和R1。 n表示0~7, 即R0~R7, 当前工作寄存器的选定是由PSW的RS1和RS0位决定的。
(2) #data: #表示立即数, data为8位常数。 #data是指包含在指令中的8位立即数。
(3) #data16: 包含在指令中的16位立即数。
(4) rel: 相对地址, 以补码形式表示的地址偏移量, 范围为-128~+127, 主要用于无条件相对短转移指令SJMP和所有的条件转移指令中。
(5) addr16: 16位目的地址。 目的地址可在全部程序存储器的64 KB空间范围内, 主要用于无条件长转移指令LJMP和子程序长调用指令LCALL中。
(6) addr11: 11位目的地址。 目的地址应与下条指令处于相同的2 KB程序存储器地址空间范围内, 主要用于绝对转移指令AJMP和子程序绝对调用指令ACALL指令中。
(7) direct: 表示直接寻址的地址, 即8位内部数据存储器RAM的单元地址(0~127), 或特殊功能寄存器SFR的地址。 对于SFR可直接用其名称来代替其直接地址。
(8) bit: 内部数据存储器RAM和特殊功能寄存器SFR中的可直接寻址位地址。
(9) @: 间接寻址寄存器或基地址寄存器的前缀, 如@Ri, @DPTR, 表示寄存器间接寻址。
(10) (X): 表示X中的内容。
(11) ((X)): 表示由X寻址的单元中的内容, 即(X)作地址, 该地址的内容用((X))表示。
2.ORG xxxxH命令
是指向程序不同功能固定入口。
如:0000H—-系统复位入口 0013H—外中断1入口
0003H—外部中断0入口 001BH—T1溢出中断入口
000BH—T0溢出中断入口 0023H串口中断入口
3.数据传送类指令
(1)内部数据传送指令–内部RAM单元间的数据传送
以累加器A为目的的传送指令:
MOV A,Rn;指令中Rn表示工作寄存器R0~R7
MOV A,direct;direct是数据的直接地址
MOV A,@Ri;间接地址(A)<–>((Ri))
MOV A,#data;data就是数据直接赋给A
以直接地址为目的的传送指令:
MOV direct,A;(direct)<–(A)
MOV direct ,Rn;(direct)<–(Rn)
MOV direct1,direct2;(direct1)<—(direct2)
MOV direct,@Ri;(direct)<—-((Ri))
MOV direct,#data;(direct)<–data
以通用寄存器Rn为目的的传送指令:
MOV Rn,A;(Rn)<—A
MOV Rn,direct;(Rn)<—(direct)
MOV Rn,#data;(Rn)<–data
以寄存器间接地址为目的的传送指令:
MOV @Ri,A;((Ri))<–(A)
MOV @Ri,direct;((Ri))<–(direct)
MOV @Ri,#data;((Ri))<–data
(2)16数据传送指令
(3)数据交换指令
(4)半字节交换指令
(5)片外数据存储器传送指令
51单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送, 必须采用寄存器间接寻址的方法, 通过累加器A来完成。
如:MOVX A,@Ri;(A)<–((Ri))用于片外RAM读取数据
MOVX @Ri,A;((Ri))<–(A)用于片外RAM写入数据
(6)ROM数据访问指令
(7)栈操作指令
4.算术运算类指令
(1)加法指令
(2)带进位加法指令
(3)带借位减法
(4)十进制调整指令
(5) 加1, 减1指令
(6)乘、 除法指令
(7)逻辑运算
(8)移位类指令
5.控制转移类指令
(1)无条件转移指令—执行该指令时无条件跳转
LJMP长转移指令:
三字节指令提供16位目标地址
如:在程序存储器中0000H单元存放一条指令:
LJMP 3000H;程序就会转到3000H位置
AJMP绝对转移指令:
双字节指令。程序转移的目的地址是由AJMP指令所在位置的地址PC值加上该指令字节数 2, 构成当前PC值。 取当前PC值的高 5 位与指令中提供的 11 位直接地址形成转移的目的地址。(AJMP指令由11位直接地址和00001构成,排列是高三位和低8位为直接地址,剩下的为00001.)
如:若初始PC值为1030H,其中存放了一条指令:AJMP 0456H ,则当前PC值为1032H,则高5位为00010,指令中提供的11位地址为,则跳转到0001 0100 0101 0110
SJMP短转移指令:
先使程序计数器PC加1两次(即:取出指令码),然后把加2后的地址和rel相加作为目标转移地址。
特例:SJMP $就是SJMP 0FEH,因为0FEH为-2补码,所以转移后地址为PC+2-2还是为0FEH,无限循环。
JMP散转指令:
如JMP @A+DPTR;就是将累加器A中的8位数与DPTR中的16位数相加后装入当前的PC中,然后转移到PC所指的位置。
(2)条件跳转指令
6.子程序调用及返回指令
7.位操作指令
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/104690.html



