IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 80C51单片机指令寻址方式 -> 正文阅读

[嵌入式]80C51单片机指令寻址方式


首先介绍单片机指令系统的操作码和操作数

操作码

1.用于规定指令进行什么操作
2.用英文缩写表示,如加法ADD、减法SUBB、传送MOV等
3.操作码与操作数之间用空格分隔,操作数与操作数之间用“,”隔开
4.在指令中不能缺少操作码
5.操作码是给定的,不能自创

操作数

1.?什么是操作数?

操作数同样是指令的一部分,其中包含要操作的数据在寄存器中的内存位置。

2.?操作数是由寄存器地址、内存地址或立即数来指定的。

**立即操作数:**指令要操作的数据以常量的形式出现在指令中,称为立即数,它只能作为源操作数 。
**寄存器操作数:**指令要操作的数据存放在CPU中的寄存器里,指令中给出寄存器名即可。
**内存操作数:**指令要操作的数据存放在内存某些单元中,指令中给出内存单元物理地址(实际上指令只给出了偏移地址,段地址采用隐含方式给出,也可以使用跨段方式指出当前段地址)

3.操作数的数量和位宽根据CPU和指令的不同而不同。根据可使用的操作数的数量,指令可以分为3操作数形式、2操作数形式和 1操作数形式.

符号含义
Rnn=07,表示当前寄存器组的8个通用寄存器R0R7中的一个
Rii=0、1,可用作间址寻址的寄存器,只能是R0,R1中的一个
Direct内部的8位地址,直接寻址方式,寻址范围为256个单元
#data指令中的8位立即数
#data16指令中的16位立即数
addr1616位目的地址,只限于LCALL和LJMP中使用
addr1111位目的地址,只限于ACALL和AJMP指令使用
rel相对转移指令中的偏移量,为8位带符号数,为SJMP和所有条件转移指令所使用
DPTR数据指针
bit片内数据存储器中的直接寻址位
A累加器
BB寄存器
C进位标志位
/位地址的前缀标志,表示对该位操作数取反

指令寻址方式

大多数指令执行时都需要使用操作数,所以存在如何取得操作数的问题,这个叫做指令的寻址方式。

寄存器寻址方式

此操作数在寄存器中,只要指定了寄存器就能得到操作数。

  1. 主要对象是通用寄存器R0-R7
  2. 部分专用寄存器,累加器A、AB寄存器以及数据指针DPTR
;后为注释
INC   R3    	;(R3)(R3)+1
MOV   A ,R0    ;把寄存器R0的内容传送到累加器A中

直接寻址方式

  1. 操作数直接以存储单元地址的形式给出。
  2. 主要对象是内部数据存储器。
  3. 这种寻址方式只限于内部RAM
位置具体
低128单元直接以单元地址形式给出
专用寄存器可以寄存器符号形式给出
MOV   A,70H     ;(A)(70H)

把内部RAM 70H单元中的数据传送给累加器A。

寄存器间接寻址

寄存器中是操作数的地址,而不是操作数本身。与寄存器寻址方式的不同。
为了区别寄存器寻址和寄存器间接寻址,间接寻址中,常在寄存器名称前加@

位置具体
内部RAM低128单元只能使用R0或R1作为间址寄存器@Ri i=0/1
外部RAM64KB@DPTR 或@Ri
MOV   A,@R0 ;(A)((R0))以RO寄存器3AH为地址,把该地址单元的内容送给累加器A
MOVX A,@DPTR ;把DPTR指定的外部RAM的内容送给累加器A
MOVX   A,@R0  ;由R0指定的低位字节的地址外部RAM单元的内容送给累加器A

立即寻址方式

指令的操作数直接在指令中给出,称为立即数“#”前缀
立即数可以多种进制表达
十六进制后缀H、二进制后缀B、十进制带后缀D或省略。
#data8
#data16

MOV   A,#20H      	;(A)20H
MOV DPTR,#3456H	;(DPH)34H ;(DPL)56H(需要注意两者位数是否相同)
MOV A,#0BH	
MOV A,#1011B 
MOV A,#11D 
MOV A,#11

变址寻址方式

以程序计数器PC或数据指示器DPTR中的内容为基地址,加上累加器A(变址寄存器)中的内容作为操作数的地址。
应注意A中的数为无符号数。
变址寻址方式只能对程序存储器ROM进行寻址, 是一字节指令。
注意变址寻址指令只有以下三条:

MOVC  A,@A+DPTR		 ;(A)((A)+(DPTR))把DPTR和A的内容相加得到一个程序存储器地址,再把该地址单元的内容送给累加器A
MOVC  A,@A+PC     ;(A)((A)+(PC))
JMP @A+DPTR

下面是关于第一条指令的解释会更清晰一点
在这里插入图片描述

位寻址方式

位寻址范围

  1. 内部RAM中的位寻址区(20H-2FH),位地址范围00H-7FH。寻址位的两种表示方法:位地址和单元地址加位数,如7FH单元第0位,用位地址表示为78H,单元地址加位数表示为7FH.0
  2. 专用寄存器中的可寻址位(特殊功能寄存器的单元地址能被8整除可位寻址80H 90H…)。
直接使用位地址:	CLR D3H
位名称表示: 	CLR RS0	
单元地址加位数: 	CLR D0H.3
专用寄存器名称加位数:CLR PSW.3

相对寻址方式

是为解决程序转移而设置的,只为转移指令所采用
目的地址=转移指令地址+转移指令字节数+rel
偏移量rel是一个带符号的8位二进制数,所能表示的数的范围为-128~+127
则以转移指令所在地址为基点向前最大可转移(127+转移指令字节数)个单元地址,向后最大可转移(128-转移指令字节数)个单元地址。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:33:13  更:2022-09-13 11:37:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:50:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码