汇编指令总共有7种寻址方式,111条指令!
【标号:】 助记符 【操作数】 【;注释】
MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP
MOV A, Rn ;Rn→A
MOV A, direct ;(direct)→A
MOV A, @Ri ;(Ri)→A
MOV A, #data ;data→A
MOV Rn, A ;A →Rn
MOV Rn, direct ;(direct)→Rn
MOV Rn, #data ;data→Rn
MOV direct, A ;A→(direct)
MOV direct, Rn ;Rn→(direct)
MOV direct1,direct2
MOV direct, @Ri ;(Ri) →(direct)
MOV direct, #data ;data→(direct)
MOV @Ri, A ;A →(Ri)
MOV @Ri, direct ;(direct) →(Ri)
MOV @Ri, #data ;data →(Ri)
MOV DPTR, #data16
8051是一种8位机,这是唯一的一条16位立即数传递指令。
功能: 将一个16位的立即数送入 DPTR 中去。其中高8位送入 DPH,低8位送入 DPL。
MOVX A, @Ri
MOVX @Ri, A
MOVX A, @DPTR
MOVX @DPTR, A
在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。
在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。
MOVC A, @A+DPTR
MOVC A, @A+PC
本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格。说明: 查找到的结果被放在A中,因此,本条指令执行前后,A中的值是不相同的。
PUSH direct ;SP ← SP+1,(SP) ← (direct)
POP direct ;(direct) ← (SP), SP←SP-1
第一条为压入指令,就是将direct中的内容送入堆栈中;
第二条为弹出指令,就是将堆栈中的内容送回到direct中。
XCH A, Rn ;A←→Rn
XCH A, direct ;A←→(direct)
XCH A, @Ri ;A←→(Ri)
XCHD A, @Ri ;A.3~A.0←→(Ri).3~(Ri).0
SWAP A ;A.3~A.0←→A.7~A.4
ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV
ADD A,#data ;A+data→A
ADD A,direct ;A+(direct )→A
ADD A,Rn ;A+Rn→A
ADD A,@Ri ;A+(Ri)→A
带进位位的加法指令常用于多字节的加法指令中
ADDC A,Rn ;A+Rn+CY→A
ADDC A,direct ;A+(direct )+CY→A
ADDC A,@Ri ;A+(Ri)+CY→A
ADDC A,#data ;A+data+CY→A
INC A ;A+1→A,影响P标志
INC Rn ;Rn+1→Rn
INC direct ;(direct)+1→(direct)
INC @Ri ;((Ri))+1→((Ri))
INC DPTR ;DPTR+1→DPTR
在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。
DA A
例:A = 0001 0101 BCD(代表十进制数15)
ADD A,#8 ;执行完之后,A = 1DH DA A ;调整后,A = 23H
SUBB A,Rn ;A-Rn-CY→A
SUBB A,direct ;A-(direct )-CY→A
SUBB A,@Ri ;A-(Ri)-CY→A
SUBB A,#data ;A-data-CY→A