汇编有两类基本指令:符号指令和伪指令 。符号指令和机器指令一一对应,伪指令只为汇编程序将符号指令翻译成机器指令提供信息,没有与它们对应的机器指令。
符号指令的构成: 操作助记符 [目的操作数] [,源操作数]
下面说符号指令的寻址方式:
1)寄存器寻址:操作数据在寄存器,如
mov a,r0
add a,r1
2)立即寻址:操作数据就是符号指令给出的源操作数,即不需要寻址。;立即数的表示为#后跟数据,若该数据是以英文字母开头的十六进制数,则应该在英文字母前添加一个前导0,如
mov a,#5
mov dptr,#0A000H
3)直接寻址:操作数是内部数据存储器或特殊功能寄存器,操作数据在内部数据存储器或特殊功能寄存器中。内部数据存储器或特殊功能寄存器的地址由指令直接给出,也可以给出特殊功能寄存器的名称。如
mov 20H,#20H ;将立即数20H送给内部RAM的20H单元
mov PSW,#08H ;立即数8H送给PSW,选择1组通用寄存器
注意:mov a,#20H和mov acc,#20H不同。操作数A是寄存器寻址,ACC是直接寻址
4)间接寻址:操作数是间址符@后跟间址寄存器,操作的数据在数据存储器中,数据存储器的地址在操作数给出的寄存器中,即寄存器的内容为操作数据的地址。只有寄存器R1、R0、DPTR可以作数据存储器的间址寄存器。DPTR间址仅用于MOVX传送指令,对外部数据存储器或扩展I/O间接寻址。如
mov @r0,#86H ;将立即数86H送以r0的内容为地址的内部RAM中。若r0=56H,则将立即数86H送入内部RAM的56H单元中
movx @dptr,a ;将A的内容送以DPTR的内容为地址的外部数据存储器单元中。若A=78H,DPTR=A000H,则把78H送入外部RAM的A000H单元中
5)变址寻址:如
movc a,@a+dptr ;若A=85H,DPTR=2100H,程序存储器2185H单元的内容为85H,则执行后A=85H
movc a,@a+PC
JMP @a+dptr
6)位寻址:操作数是指令给出的位地址,也可以是内部数据存储器或SFR的位。如
mov c,20H ;把位地址20H的内容(0或1)送给程序状态字PSW中的进位标志位C
指令中位地址有4中表示形式:
1)直接位地址,如0D5H
2)点操作符,如PSW.5或0D5H.5
3)位名称,如F0
4)用户自定义名,如 F1 BIT PSW.1 ;将位地址D1即PSW.1自定义为用户标志位F1