8051尋址方式總結(jié)
1.立即尋址:在指令中直接給出操作數(shù)
MOV A, #80H 8位操作數(shù)
MOV A, #2000H 16位操作數(shù)
2.直接尋址:指令中直接給出操作數(shù)地址
(1)SFR,這一存儲(chǔ)空間只能使用直接尋址
MOV PSW, #50H
(2)內(nèi)部數(shù)據(jù)RAM,這一存儲(chǔ)空間可以使用直接尋址和寄存器間接尋址
MOV A, 30H
3.寄存器尋址:以通用寄存器的內(nèi)容作為操作數(shù)(通用寄存器包括A, B, DPTR, R0~R7)
INC DPTR
注意:A、B既是通用寄存器,也是SFR(直接尋址)
4.寄存器間接尋址:以寄存器中的內(nèi)容作為操作數(shù)的地址
能夠用于寄存器間接尋址的寄存器有:R0,R1,DPTR,SP
區(qū)分內(nèi)部數(shù)據(jù)RAM尋址和外部數(shù)據(jù)RAM尋址:外部數(shù)據(jù)RAM尋址指令上采用MOVX
對(duì)內(nèi)部數(shù)據(jù)RAM尋址:使用8位的R0或者R1即可
MOV @R0, A
對(duì)外部數(shù)據(jù)RAM尋址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址
MOVX A, @R1
MOVX @DPTR, A
5.變址尋址:以基址寄存器PC或者DPTR與變址寄存器A中的內(nèi)容之和作為操作數(shù)的地址
變址尋址只能對(duì)程序存儲(chǔ)器中的數(shù)據(jù)進(jìn)行尋址,由于程序存儲(chǔ)器是只讀的,因此變址尋址只有讀操作,指令上采用MOVC
MOVC A, @A+DPTR
MOVC A, @A+PC
6.相對(duì)尋址:用于修改PC的值,使得PC加上指令中給出的一字節(jié)的偏移量
由于轉(zhuǎn)移指令有兩字節(jié)和三字節(jié)這兩種形式,因此偏移量的范圍分別為-126~+129和-125~+130
SJMP 80H
7.位尋址:以位地址中的內(nèi)容為操作數(shù)
SETB 20H
MOV 32H, C
總結(jié)一下各種尋址方式的使用場(chǎng)合:
立即尋址:常數(shù)
直接尋址:SFR和內(nèi)部數(shù)據(jù)RAM
寄存器尋址:寄存器區(qū)
寄存器間接尋址:內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM
變址尋址:程序存儲(chǔ)器
相對(duì)尋址:PC
位尋址:位地址區(qū)
評(píng)論