3.1.1寄存器寻址MOVA,Rn 操作数在寄存器中,如R0~R7,A、B、cy(位)、DPTR 3.1.2直接寻址MoVA,40H 操作数直接以单元地址形式给出(也可以寄存器名称形式给出,但 AB DPTR除外) 如:MOVA,P0;MoVR0,TH0 3.1.3寄存器间接寻址MOVA,@R1 操作数是通过寄存器间接得到的。 3.1.4立即寻址 MOV A, #40H 操作数在指令中直接给出。 3.1.5基址寄存器加变址寄存器寻址 以DPTR或PC为基址寄存器,以A为变址寄存器, 以两者相加形成的16位地址为操作数的地址。 MOVC A, A+DPTR MOVC A, @A+PC
3.1.1 寄存器寻址 MOV A, Rn 操作数在寄存器中,如R0~R7,A、B、Cy(位)、DPTR 3.1.2 直接寻址 MOV A, 40H 操作数直接以单元地址形式给出(也可以寄存器名称形式给出,但A B DPTR 除外) 如: MOV A, P0 ; MOV R0, TH0 3.1.3 寄存器间接寻址 MOV A, @R1 操作数是通过寄存器间接得到的。 3.1.4 立即寻址 MOV A, #40H 操作数在指令中直接给出。 3.1.5 基址寄存器加变址寄存器寻址 以DPTR或PC为基址寄存器,以A为变址寄存器, 以两者相加形成的16位地址为操作数的地址。 MOVC A, @A+DPTR MOVC A, @A+PC
5。16位数据传输指令 MOV dPTR data16: DPTR<+ data16 DPTR-·数据指针,为SFR中DPH)、DPL MOV DPTR. #2010H 相当于: MOV DPH,#20H MOV DPL 10H
5. 16位数据传输指令 MOV DPTR, #data16; DPTR←#data16 DPTR----数据指针,为SFR中(DPH)、(DPL) MOV DPTR, #2010H 相当于:MOV DPH, #20H MOV DPL, #10H
6.堆栈操作指令 进栈指令 PUSH direct 如:(P)=60H,(A)=30H,(B)=70H时,执行 (SP+3) PUSH AcC ;(SP)+1=61H-SP (A)-61H(SP+2 PUSH E;(sP)+1=62H→SP,(B)→62H (SP+1 结果:(61H)=30H,(62H)=70H,(SP)=62H (SP) 退栈指令 POP direct 如:(SP)=62H,(62H)=70H,(61H)=30H时,执行 POP DPH (SP))DPH,(SP)-1=61H-SP POP DPHL(SP))DPL, (SP)-1=60H-SP 结果:(DPTR)=7030H,(SP)=60H 堆栈的存储原则:先进后出
6. 堆栈操作指令 退栈指令 POP direct 如: (SP)=62H, (62H)=70H ,(61H)=30H 时,执行 POP DPH ;((SP)) →DPH, (SP)-1=61H→SP POP DPHL ;((SP)) →DPL, (SP)-1=60H→SP 结果: (DPTR)=7030H, (SP)=60H 进栈指令 PUSH direct 如: (SP)=60H, (A)=30H ,(B)=70H 时,执行 PUSH Acc ;(SP)+1=61H→SP, (A) → 61H PUSH B ;(SP)+1=62H→SP, (B) → 62H 结果: (61H)=30H, (62H)=70H, (SP)=62H 堆栈的存储原则:先进后出 (SP) (SP+1) (SP+2) (SP+3)
7。累加器A与外部数据传输指令 MOXA,@DPTR;A←(DPTR) 地址范围64K MOVX A,@R1;A←(R) 地址范围0~255 MOVX @DPTR, A;(DPTR)<(A) MOV×@R,A (R)←(A)
7. 累加器A与外部数据传输指令 MOVX A, @DPTR ; A←((DPTR)) 地址范围64K MOVX A, @Ri ; A←((Ri)) 地址范围0~255 MOVX @DPTR, A ; (DPTR) ←(A) MOVX @Ri , A ; (Ri) ←(A)
8.查表指令 (1)MOVC A,@A+DPTR; A+((A)+(DPTR)) 例:(DPTR)=0300H,(A)=02H ROM中(0302H)=55H 执行 MOVC A,A+DPTR 结果:(A)=55H
8. 查表指令 (1)MOVC A, @A+DPTR; A ←((A)+(DPTR)) 例: (DPTR)=0300H, (A)=02H ROM中 (0302H)=55H 执行: MOVC A, @A+DPTR 结果:(A)=55H