例如,SJMP 08H ;PC←PC+2+08H
指令操作示意图如图3-5所示。 7 、位寻址
位寻址只能对有位地址的单元作位寻址操作。
位寻址其实是一种直接寻址方式,不过其地址是位地址。
例如:SETB 10H ;将10H位置1若22H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H。
又如:MOV 32H,C ;32H←进位位C ORL C ,32H ;C←C∨32H
在MCS-51中,位地址的表示方式可采用下面几种形式: ① 直接使用位地址。例如PSW寄存器的位5的位地址为0D5H。
② 单元地址加位数的表示方法。例如0D0H.5,表示字节单元地址0D0H(即PSW寄存器)的位5。
③ 对可位寻址的专用寄存器可直接用寄存器名称加位数的方法。例如PSW.5表示PSW寄存器的位5。
④ 使用位名称。在可位寻址的专用寄存器中,一些位是有符号名称的,例如PSW寄存器的位5是F0标志位,则可使用F0表示该位。 MCS-51指令系统的7种寻址方式,可以概括为表3.1。
表10-1 MCS-51寻址方式
寻址方式
寄存器寻址
直接寻址
寄存器间接寻址
寻址空间
R0~R7、A、AB、C、DPTR
内部RAM低128单元和专用寄存器
内部RAM低128单元使用@R0、@R1、SP作为操作数
外部RAM使用@R0、@R1、@DPTR作为操作数
程序存储器ROM
程序存储器使用@A+DPTR、@A+PC作为操作数
程序存储器使用PC+偏移量rel作为操作数
内部RAM和专用寄存器的位地址空间
立即寻址
变址寻址
相对寻址
位寻址
由表10-1 中可以看出:
① 内部数据存储器使用频繁,寻址方式较多,有寄存器寻址、直接寻址、寄存器间接寻址、位寻址。直接寻址是访问专用寄存器的惟一方法。 ② 对外部数据存储器,只能使用寄存器间接寻址。 ③ 对程序存储器可使用变址寻址、相对寻址和立即寻址。
④ 在两个操作数的指令中,把左边操作数称为目的操作数,而右边操作数称为源操作数。前面所讲的各种寻址方式都是针对源操作数的。但实际上源操作数和目的操作数都有寻址问题,例如指令:
MOV
30H,R0
其源操作数是寄存器寻址方式,而目的操作数则是直接寻址方式,因此指令的功能是把按寄存器寻址取出的R0内容再以直接寻址方式存放于内部RAM的30H单元中。
数据传送类指令共有29条。这类指令的一般操作是把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。 源操作数可以采用寄存器寻址、寄存器间接寻址、直接寻址、立即寻址、变址寻址5种寻址方式。
目的操作数可以采用寄存器寻址、寄存器间接寻址、直接寻址3种寻址方式。
第十一讲
一、授课内容: MCS―51单片机指令系统 二、授课类型:讲授 三、授课时数:4学时 四、教学目标:
掌握并熟练运用MCS―51系列单片机的数据传送指令 五、教学重、难点:
熟练运用MCS―51系列单片机的数据传送指令 六、教学设想:
借助产品、作品演示,一方面可以使课堂生动,另一方面可以腾出大量时间加强对重难点知识的讲解,增强学生对知识的理解,同时提高他们对本学科的兴趣. 七、教学过程:(板书) (一)数据传送类指令
数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。
源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。 1.以A为目的操作数
MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 2.以Rn为目的操作数
;A← Rn ;A←(direct) ;A←(Ri) ;A← #data
MOV Rn,A MOV Rn,direct MOV Rn,#data 3.以直接地址为目的操作数
MOV @Ri,A MOV @Ri,direct MOV @Ri,#data 4.以间接地址为目的操作数
MOV @Ri,A MOV @Ri,direct MOV @Ri,#data
;Rn ← A ;Rn ←(direct) ;Rn ← #data
;(Ri) ← A ;(Ri) ←(direct) ;(Ri) ← #data
;(Ri) ← A ;(Ri) ←(direct) ;(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 MOVX @DPTR,A MOVX A,@Ri MOVX @Ri,A 7.读程序存储器
MOVC A,@A+DPTR MOVC A,@A+PC
;A ← (A+DPTR) ;A ← (A+PC) ;A ← (DPTR) ;(DPTR) ← A ;A ← (P2Ri) ;(P2Ri)← A
例如已知A=30H,DPTR=3000H,
程序存储器单元(3030H)=50H,执行MOVC A,@ A+DPTR后,A=50H。 8.数据交换 (1)字节交换
XCH A,Rn XCH A ,direct XCH A,@Ri (2)半字节交换
XCHD A,@Ri SWAP A 9.堆栈操作
;A<=> Rn ;A<=>(direct) ;A<=>(Ri)
;A0~3<=>(Ri)0~3 ;A0~3<=>A4~7
所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令:
PUSH direct;SP←(SP+1),(SP)←(direct) POP
direct ;(direct)←(SP),SP ← SP-1
PUSH是进栈(或称为压入操作)指令。
【例3.1】 将片内RAM 30H单元与40H单元中的内容互换。
方法1(直接地址传送法): MOV MOV MOV SJMP
方法2(间接地址传送法): MOV MOV MOV MOV MOV MOV SJMP
方法3(字节交换传送法): MOV
A,30H R0,#40H R1,#30H A,@R0 B,@R1 @R1,A @R0,B $ 31H,30H 30H,40H 40H,31H $
单片机原理及应用教学教案
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)