单片微型计算机与接口技术第二章

51单片机的指令系统

前言

复习专用

一、寻址方式

1.1立即寻址
指令中直接给出操作数的寻址方式称为立即寻址。
例如:
MOV A,#80H ;把80H这个数字给寄存器A
MOV DPTR ,#2000H ;将2000H给寄存器DPTR
1.2直接寻址
指令中直接给出操作数所在的地址(dir)的寻址方式称为直接寻址。
例如:
MOV A,25H ;将内部RAM地址为25H里的数据给寄存器A。
MOV P0,#45H ;将45H这个数给P0,P0为直接寻址的SFR(特殊功能寄存器),其地址为80H。
MOV 30H,20H ;将地址20H里面的内容放到30H里面。
1.3寄存器寻址
以通用寄存器的内容作为操作数的寻址方式称为寄存器寻址。
通用寄存器包括:A,B,DPTR,R0~R7。其中B仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。A即可以寄存器寻址,又可以直接寻址(此时写作ACC)。
例如:
MOV A,R0 ;将寄存器R0的值给寄存器A。A,R0均为寄存器寻址。
MUL AB ;将寄存器AB的内容相乘(两个8位)其结果(16位)的高位给B低位给A。
MOV B,R0 ;寄存器R0的值给B,R0为寄存器寻址,B为直接寻址。
PUSH ACC ;A的内容压入栈堆,A为直接寻址
ADD A,ACC ;A+A->A,A和ACC同为累加器,A为寄存器寻址,ACC为直接寻址。因为加法指令只有ADD A,dir 形式。
1.4寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式称为寄存器间接寻址,能够用于寄存器间址的寄存器有 R0,R1,DPTR,用前面加@表示,如@R0,@R1,@DPTR。
在指令中,当用@R0或@R1寻址时,对内部RAM寻址用MOV,对外部RAM寻址时用MOVX。
注意:使用间接寻址指令前,需先给作间接寻址的寄存器赋值
例如:
MOV @R0,A ;A的值给内部RAM的R0
MOVX A,@R1;外部RAM(地址P1R1)的内容给A
MOVX @DPTR, A;A的值给以DPTR内容为地址的外部RAM。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.5变址寻址
由寄存器DPTR或PC中的内容加上A累加器内容之和,形成的操作数地址的寻址方式称为变址寻址。变址寻址只能对程序存储器中的数据作寻址操作(只读不写)指令操作符采用MOVC。
例如:
MOVC A,@A+DPTR; A的内容加DPTR的内容给A
MOVC A,@A+PC ;A的内容加PC的内容给A
在这里插入图片描述

在这里插入图片描述

1.6相对寻址
以当前程序计数器PC的内容为基值,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式称为相对寻址。
相对寻址的作用在于实现程序的分支转移。如:SJMP 08H;当前PC+08H给PC,即PC指针转移到地址为PC+08H处执行程序。
1.7位寻址
对位地址中的内容作位操作的寻址方式称为位寻址。
由于单片机只有内部RAM和特殊功能寄存器的部分单元有位地址,所以,位寻址只能对有位地址的这两个空间进行寻址操作
例如:
SETB 20H ;SETB指令功能为置1,所以该语句为向地址20H写1。
MOV 32H,C ;C为进位位(CY),将进位位的值给32H。
ORL C,5AH ;CY和5AH进行或运算其值给CY。

二、数据传送与交换指令

2.1传送类指令
1.内部RAM和SFR间的传送指令MOV
(1)以A为目的操作数
MOV A,(Rn,dir,@Ri,#data)
其中Ri中的i为1或0,n为0~7,MOV A,@Ri是将地址Ri里面的内容给A。
MOV A,Rn是将Rn的值给A。
例如:Ri的值为10H,Rn的值为20H,10H=01H,则执行MOV A,@Ri(Rn)后A=01H。而执行MOV A,Ri(Rn)后A=10H(20),@Ri为寄存器间接寻址,Rn为直接寻址
(2)以Rn为目的操作数
MOV Rn,(A,dir,#data),其中n为0~7,例(40H)=30H则执行指令MOV Rn,40H后Rn=30H,而执行MOV Rn,#40H,其结果为Rn=40H。
(3)以DPTR为目的操作数
MOV DPTR,#data(16位)。例执行MOV DPTR,#ABCDH后DPTR=ABCDH。
(4)以直接地址为操作数
MOV dir(A,Rn,dir@Ri,#data)。i为0或1,n为0~7,例R0=50H,执行MOV @R0,30H后结果为(50H)=30H。等价于MOV 50H,30H
(5)以间接地址为目的操作数
MOV @Ri,(A,dir,#data)。i为0或1,例R0=40H,(30H)=10H,执行MOV @R0,30H后其结果为(40H)=10H。
2.外部存储器和A累加器之间的传送。
外部存储器和程序存储器只能和A之间进行传送,而不能与内部RAM和SFR之间进行传送。
(1)访问外部数据存储器指令
MOVX @Ri,A ;A→(P2Ri)
MOVX @DPTR,A ;A→(DPTR)
MOVX A,@Ri ;(P2Ri)→A
MOVX A,@DPTR ; (DPTR)→A
例:将立即数20H送入外部RAM 0FFFH 单元。
MOV A,#23H MOV A,#23H
MOV P2,#0FH MOV DPTR,#0FFFH
MOV Rl,#0FFH 或 MOVx@DPTR,A
MOVX @R1,A
(2)访问程序存储器指令
MOVC A,@A+PC ;(A+PC)→A
MOVC A,@A+DPTR;(A+DPTR)→A
这两条指令常用于查表。
3堆栈操作
(1)入栈操作
PUSH dir ;SP+1→SP,(dir)→(SP)
POP dir;(SP)→(dir),SP-1→SP
4交换指令
(1)字节交换指令
XCH A,(Rn,dir,@Ri)
例如:A=0FFH,R1=30H,(30H)=10H,则执行指令XCH A,@R1后结果为A=10H,(30H)=0FFH。
(2)半字节交换
XCHD A,@Ri,例如:A=34H,(50H)=96H;
MOV R0,#50H
XCHD A,@R0
其结果为A=36H,(50H)=94H。其功能就是内部RAM的低四位和A 的低四位交换。
(3)A的高、低半字节交换
SWAP A ;例如A=0FH,执行SWAP A后,A=0F0H(字母开头要加0否则编译器报错)。
作业一
1.指令中直接给出操作数,立即数前加“#”号的寻址方式____寻址。
2.指令中直接给出操作数的地址的寻址方式为 ____ 寻址。
3.指令中以通用寄存器A,DPTR,Rn的内容为操作数的寻址方式为 ____ 寻址。
4.指令中以寄存器的内容为地址,该地址的内容为操作数的寻址方式为 ____ 寻址
5.指令中由寄存器DPTR或PC中的内容加上A的内容的和,形成操作数的地址的寻址方式为 ____ 寻址
6.指令中以当前PC的内容为基值,加上偏移量形成新的PC值的寻址方式为 ____ 寻址
7.指令中对位地址中的操作数进行位操作的寻址方式为 ____ 寻址
8.指令MOV A, #10H 源操作数寻址方式 ____寻址 ,目的操作数寻址方式 ____寻址 。
9.指令MOV P0, A 源操作数寻址方式____寻址 ,目的操作数寻址方式____寻址 。
10.指令MOV 20H, #20H源操作数寻址方式 ____寻址 ,目的操作数寻址方式____寻址 。
11.指令MOV @R1, #10H源操作数寻址方式____寻址 ,目的操作数寻址方式 ____寻址 。
12.指令MOV A, @R0 源操作数寻址方式 ____寻址 ,目的操作数寻址方式 ____寻址 。
13.指令PUSH ACC 源操作数寻址方式 ____寻址 。
14.指令ADD @R1, A 源操作数寻址方式 ___寻址 ,目的操作数寻址方式 _____寻址 。
15.指令MOV 32H, C 源操作数寻址方式 _____寻址 ,目的操作数寻址方式 _____寻址 。
16.指令MOVC A,@A+DPTR 源操作数寻址方式 ,目的操作数寻址方式 __
17.指令SETB P1.0目的操作数寻址方式 为:
18.访问内部RAM的寻址方式有:

19访问外部RAM的寻址方式有:

20.访问内部ROM寻址方式有:
作业答案
http://t.csdn.cn/iXQAt

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值