8051寻址方式总结
1.立即寻址:在指令中直接给出操作数
MOV A, #80H 8位操作数
MOV A, #2000H 16位操作数
2.直接寻址:指令中直接给出操作数地址
(1)SFR,这一存储空间只能使用直接寻址
MOV PSW, #50H
(2)内部数据RAM,这一存储空间可以使用直接寻址和寄存器间接寻址
MOV A, 30H
3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7)
INC DPTR
注意:A、B既是通用寄存器,也是SFR(直接寻址)
4.寄存器间接寻址:以寄存器中的内容作为操作数的地址
能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP
区分内部数据RAM寻址和外部数据RAM寻址:外部数据RAM寻址指令上采用MOVX
对内部数据RAM寻址:使用8位的R0或者R1即可
MOV @R0, A
对外部数据RAM寻址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址
MOVX A, @R1
MOVX @DPTR, A
5.变址寻址:以基址寄存器PC或者DPTR与变址寄存器A中的内容之和作为操作数的地址
变址寻址只能对程序存储器中的数据进行寻址,由于程序存储器是只读的,因此变址寻址只有读操作,指令上采用MOVC
MOVC A, @A+DPTR
MOVC A, @A+PC
6.相对寻址:用于修改PC的值,使得PC加上指令中给出的一字节的偏移量
由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为-126~+129和-125~+130
SJMP 80H
7.位寻址:以位地址中的内容为操作数
SETB 20H
MOV 32H, C
总结一下各种寻址方式的使用场合:
立即寻址:常数
直接寻址:SFR和内部数据RAM
寄存器寻址:寄存器区
寄存器间接寻址:内部数据RAM和外部数据RAM
变址寻址:程序存储器
相对寻址:PC
位寻址:位地址区
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-04-27 c#通过app.manifest使程序以管理员身份运行
2016-04-27 C# App.Config详解
2016-04-27 C# 配置文件 Appconfig
2016-04-27 利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
2016-04-27 C# Socket流数据大小端读写封装
2016-04-27 BinaryWriter和BinaryReader用法
2016-04-27 C#预处理器指令