MoV ORi, #data (Ri)+#data 例如:设(3OH)=6FH,R=4OH,执行MOV@R1,30H后,30H单元中数据取出送入R1 间接寻址的4OH单元,(4OH)=6FH 5.以DPTR为目的操作数 Mov DPTR, #datal6: dPtR + #datal6 例如执行 MOV DPTR,#2000H后, DPTR)=200OH。 6.访问外部数据RAM MoVX A, ODPTR: A (DPTR) MOVX DPTR, A (DPTR) A movX A, GRi: A (PeRi MoVX GRi, A (P2Ri)←A 7.读程序存储器 Movc A, @A+DPTR A+(A+DPTR) MoVc A, @A+PC A +(A+PC) 例如已知A=30H,DPTR=3000H, 程序存储器单元(3030H)=50H,执行 MOVC A,@A+DPTR后,A=5OH 8.数据交换 字节交换 XCH A, Rn: A<=> Rn XcH a, direct: A<=>(direct) XcH A, @Ri A<=>(Ri) 半字节交换 XCHD A, GRi Ao-3<=>(Ri) SWAP A Ao-3<=>A+-7 9.堆栈操作 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据 的进栈出栈由指针$P统一管理。堆栈的操作有如下两条专用指令: direct;SP←(SP+1),(SP)←( direct) poP direct;( direct)←(SP),SP←SP-1 ·PUSH是进栈(或称为压入操作)指令。指令执行过程如图所示 【例3.1】将片内RAM30H单元与40H单元中的内容互换。 方法1(直接地址传送法) mov 31H, 30H mov 30H, 40H Mov 40H, 31H SJMP S 方法2(间接地址传送法)MOV @Ri,#data ;(Ri) ← #data 例如:设(30H)=6FH,R1=40H,执行MOV @R1,30H后,30H单元中数据取出送入R1 间接寻址的40H单元,(40H)=6FH。 5.以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR ← #data16 例如执行 MOV DPTR,#2000H 后, (DPTR)= 2000H。 6.访问外部数据RAM MOVX A,@DPTR ;A ← (DPTR) MOVX @DPTR,A ;(DPTR) ← A MOVX A,@Ri ;A ← (P2Ri) MOVX @Ri,A ;(P2Ri)← A 7.读程序存储器 MOVC A,@A+DPTR ;A ← (A+DPTR) MOVC A,@A+PC ;A ← (A+PC) 例如已知A=30H,DPTR=3000H, 程序存储器单元(3030H)=50H,执行MOVC A,@ A+DPTR后,A=50H。 8.数据交换 字节交换 XCH A,Rn ;A<=> Rn XCH A ,direct ;A<=>(direct) XCH A,@Ri ;A<=>(Ri) 半字节交换 XCHD A,@Ri ;A0~3<=>(Ri)0~3 SWAP A ;A0~3<=>A4~7 9.堆栈操作 • 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据 的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令: PUSH direct;SP←(SP+1),(SP)←(direct) POP direct ;(direct)←(SP),SP ← SP-1 • PUSH是进栈(或称为压入操作)指令。指令执行过程如图所示。 【例3.1】 将片内RAM 30H单元与40H单元中的内容互换。 方法1(直接地址传送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H SJMP $ 方法2(间接地址传送法): MOV R0,#40H MOV R1,#30H