51单片机(3)指令系统与编程基础(1)七大寻址方式

一.指令系统概述

8051单片机指令系统是一种简明,易掌握,效率极高的指令系统,共计111条

指令格式
在这里插入图片描述
按指令在程序存储器中所占的字节数可以分为以下三种:
在这里插入图片描述
按指令在程序存储器中所占的字节数可以分为以下三种:
1)单字节指令(49条);
2)双字节指令(45条);
3)三字节指令(17条);

按指令执行的时间来分:
1)1个机器周期的指令(12个时钟振荡周期)64条;
2)2个机器周期的指令(24个时钟振荡周期)45条;
3)只有乘,除两条指令的执行时间为4个机器周期(48个时钟振荡周期);

在系统时钟为12MHZ的晶振结构下,每个机器周期为1微妙

二.指令格式:

指令的表示方法称为指令格式,
一条指令通常是由操作码和操作数两部分构成,或者说只有操作码

操作码:用来规定进行什么操作;
操作数:指令操作的对象(可能是一个具体的操作对象,也可能是相应的地址)

**1)单字节指令:**只有一个字节,操作码和操作数在同一个字节之中,或者说只有操作码。
**2)双字节指令:**两个字节,其中一个字节为操作码,另一个为操作数。
**3)三字节指令:**操作码占一个字节,操作数占两个字节(分为第一操作数和第二操作数),操作数既可以是数据,也可以是地址;

三.指令系统的寻址方式

寻址方式就是在指令中说明操作数所在地址的方法;
寻址方式所要解决的主要问题就是如何在整个存储器和寄存器的寻址空间之中找到指定的操作数
在这里插入图片描述

1.寄存器寻址(MOV A,Rn)

指令中的操作数为某一寄存器的内容
因为是从指定的寄存器Rn之中取得源操作数,所以称为寄存器寻址
寄存器寻址只能寻址当前工作寄存器区的8个工作寄存器

在这里插入图片描述

2.直接寻址 MOV A,direct(MOV direct1,direct2)

指令中直接给出的就是操作数所在的单元地址,该单元地址之中的内容就是操作数
直接寻址在指令之中以存储单元的形式出现,因为直接寻址只能用8位二进制数表示的地址,寻址范围是有限的:
在这里插入图片描述
MOV A ,40H 把内部RAM40H单元的内容传送到A;
MOV 42H,62H 把片内RAM中62H单元的内容送到片内RAM中的42H单元中
注意:指令中第一操作数称为目的操作数,第二操作数位源操作数

在这里插入图片描述

注意:直接寻址方式是访问特殊功能寄存器的唯一寻址方式

3.寄存器间接寻址(MOV A,@Rn)

寄存器之中存放的是操作数的地址,先从寄存器找到操作数的地址,再按照这个地址找到操作数
可以访问:
1)片内数据存储器的低128个单元;(就是寄存器区)
2)片外数据存储器的64KB单元(使用DPTR作为指针)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.立即寻址(MOV A,#40H)

立即寻址方式就是操作数在指令之中直接给出
MOV A,#40H(就是把立即数40H送给A)
立即数是存储在程序存储器中的常数

立即寻址针对程序存储器中的立即数

5.基址寄存器加变址寄存器间接寻址方式(MOV A,@A+DPTR)

这种寻址方式是以DPTR或者PC作为基址寄存器,以累加器A作为变址寄存器,并且以两者相加形成的新的16位地址作为目的地址,
采用变址寻址的指令只有三条:
MOVC A, @A+DPTR
MOVC A, @A+PC
JMP @A+DPTR

注意:前两条指令适用于读程序存取器之中固定的数据,例如将固定的,按一定顺序排列的表格参数存放在程序存储器中,在程序运行之中由A中的动态内容来确定读取的表格参数
后一条指令更适合于实现不同程序入口的跳转
在这里插入图片描述

6.相对寻址方式

为解决程序的跳转而专门设计
是以该跳转指令所在的地址(PC值)加上他的字节数,再加上相对偏移量rel形成新的跳转目的地址,从而使程序转移到该目的地址
在这里插入图片描述
在这里插入图片描述

7.位寻址

在这里插入图片描述
在这里插入图片描述

8.总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

终章:指令的字节数和指令的机器周期

在这里插入图片描述
注意这些操作数:A,Rn,@Ri 这些方式对应的是一个字节,后面的红字部分对应的是两个字节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值