1110 1rrr
其中rrr为Rn的二进制编码。 2. 二字节指令
二字节指令包含两个字节,其中第一个字节为操作码,第二个字节为操作数。
例如立即数传送指令“MOV A,#data”,其中#data表示一个8位二进制操作数,占一个字节,称为立即数。指令码为:
0111 0100 立即数
3. 三字节指令
三字节指令包含三个字节,其中操作码占一个字节,操作数占两个字节,操作数既可为数据,也可是地址。
例如逻辑与操作指令“ANL direct,#data”,其功能是直接寻址单元内容与立即数进行与操作,指令格式为:
0101 0011
直接地址
立即数
二、 指令系统的分类
从占用的存储空间上,MCS-51的指令可分为: ① 一字节指令,共49条; ② 二字节指令,共45条; ③ 三字节指令,共17条。
从执行时间上,MCS-51的指令可分为: ① 单机器周期指令,共64条; ② 双机器周期指令,共45条;
③ 四机器周期指令,共2条,即乘、除指令。 从实现功能上,MCS-51的指令可分为下面5类: ① 数据传送类指令(29条); ② 算术运算类指令(24条);
③ 逻辑运算类指令及移位类指令(24条); ④ 控制转移类指令(17条); ⑤ 位操作类指令(17条)。
第十讲
一、授课内容: MCS―51单片机寻址方式 二、授课类型:讲授 三、授课时数:2学时 四、教学目标:
掌握MCS―51系列单片机的寻址方式 六、教学重、难点:
重点/难点:MCS―51系列单片机的寻址方式 七、教学设想:
借助产品、作品演示,一方面可以使课堂生动,另一方面可以腾出大量时间加强对重难点知识的讲解,增强学生对知识的理解,同时提高他们对本学科的兴趣. 八、教学过程:(板书) 一、 指令描述符号意义的说明
在指令描述中,使用了如下符号,首先对这些符号意义做简单说明。
Rn——当前寄存器组的8个通用寄存器R0~R7,n=0~7。
Ri——可用作间接寻址的寄存器,只有R0、R1两个寄存器,所以 i=0,1。 direct——8位直接地址,用于寻址内部RAM的低128单元和专用寄存器。 #data——8位立即数。 #data16——16位立即数。
addr16——16位目的地址,只限于在LCALL和LJMP指令中使用。 addr11——11位目的地址,只限于在ACALL和AJMP指令中使用。 rel——补码表示的8位偏移量,用于相对转移指令中。 bit——内部RAM(包括专用寄存器)中的直接寻址位。 @——间接寻址寄存器的前缀标志。
/——加在位地址的前面,表示对该位状态取反。 (×)——某寄存器或某单元的内容。 ((×))——由×间接寻址的单元内容。
← ——箭头左边的内容被箭头右边的内容所取代。
由于大多数指令执行时都需要使用操作数,因此存在怎样取得操作数的问题。所谓寻址就是寻找操作数的地址,而寻址方式就是通过确定操作数的位置(地址),把操作数提取出来的方法。
MCS-51指令系统共有7种寻址方式,下面分别予以介绍: 1、立即寻址
指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。
例如:MOV MOV MOV
A,# 60H ;A←#60H
DPTR,# 3400H ;DPTR←#3400H 30H,# 40H ;30H单元←#40H
上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。 2 、直接寻址
指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。
累加器A 68H 30H 内部RAM …68H … 例如:MOV PSW,# 20H ; PSW←#20H
PSW为直接寻址寄存器的符号地址。 MOV
A,30H ;A←30H内部RAM单元中的内容
30H为直接给出的内部RAM的地址。 3 、寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B 、DPTR以及R0~R7 。
例如:CLR INC ADD 4 、寄存器间接寻址
以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。
能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。
A ;A←0
DPTR ;DPTR←DPTR+1 R5,# 20H ;R5←#20H+R5
R0 30H 累加器A 68H 内部RAM … 30H 68H … 例如:MOV @R0,A ;内部RAM(R0)←A其指令操作过程示意图如图3-1所示。
又如:MOVX A,@R1;A←外部RAM(P2R1)其指令操作过程示意图如图3-2所示。
再如:MOVX @DPTR,A;外部RAM(DPTR)←A 其指令操作过程示意图如图3-3所示。 5、 变址寻址
变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式。
DPTR 22F1H 累加器A 30H ROM … 2321H 7FH … 例如:MOVC A,@ A+DPTR;A←(A+DPTR) 又如,MOVC A,@ A+PC ;A←(A+PC) 这条指令与上条指令不同的是,基址寄存器是PC。 6 、相对寻址
以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。
相对寻址用于修改PC值,主要用于实现程序的分支转移。
PC→ 2000H PC+1 →2001H PC+2 →2002H 2042H
ROM …JZ 40H 2002H PC … …