汇编九、直接地址与寄存器、ROM和RAM

文章详细介绍了51单片机中的寄存器A和ACC的特性,包括它们的地址和在位操作、压栈操作中的作用。同时阐述了R0-R7寄存器与直接地址00H-07H的关系以及它们的使用效率差异。此外,文章还讨论了ROM和RAM的区别,51单片机的ROM寻址范围以及中断向量的位置。在RAM部分,强调了内部RAM的结构,包括低128字节RAM的通用区域、工作寄存器组、位寻址区和堆栈区,以及如何扩展RAM。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、直接地址与寄存器

1.1、A和ACC

(1)A是没有地址的,可以当作寄存器使用。

(2)ACC是有地址的,地址为E0H(查数据手册)。

(3)如果使用压栈操作,要用ACC。因为ACC可当做直接地址。

(4)如果使用位操作,要用ACC。因为ACC可位寻址。

(5)使用ACC和A赋值操作时效果是一样的,但机器码不同;

使用E0H和ACC机器码是一样的。

C:0x0000    7410       MOV      A,#0x10

C:0x0002    75E010   MOV      ACC(0xE0),#0x10

C:0x0005    75E010   MOV      ACC(0xE0),#0x10

1.2、R0-R7与00H-07H

(1)R0寄存器对应地址为0x00。

(2)在汇编中,使用0x00和R0效果相同,但使用R0效率更高。

(3)使用0x00和R0生成的机器码不同,一个是直接地址,一个是寄存器。如下。

C:0x0000    7820     MOV      R0,#0x20

C:0x0002    750020   MOV      0x00,#0x20

(4)使用0x00是从地址总线上去寻地址0x00这个空间,使用R0是直接操作这个寄存器。这两种方式操作的空间是一样的。

2、ROM和RAM

        ROM称为程序存储器,RAM称为数据存储器。

2.1、ROM

(1)51单片机地址线为16跟,即寻址范围为2的16次方字节,65536字节 = 65536/1024=64K字节。

(2)寻址范围为0x00000-0xFFFF。

(3)51单片机内部ROM和外扩ROM独立寻址,所以51单片机最大ROM为128KByte。

(4)通过EA引脚的高低电平来确认总线是访问片内程序存储器还是片外程序存储器。

(5)目前的单片机内部ROM基本能满足需求。

(6)中断向量地址:00H -- 23H,不同芯片查询中断向量表;用户程序存在往后地址。

2.2、RAM

2.2.1、数据存储器SRAM

(1)51单片机中的RAM为SRAM。

(2)RAM可用于存放程序执行的中间结果和过程数据。多数单片机RAM在物理和逻辑上都分为两个地址空间:内部RAM和内部扩展RAM,部分MCU还有片外(MCU外)扩展RAM。

2.2.2、内部RAM

(1)STC89C54RD+片内RAM共256字节,可分为3个部分:低128字节RAM(与传统8051兼容)、高128字节RAM(Intel在8052中扩展了高128字节RAM)、特殊功能寄存器区。

(2)内部RAM结构如下图所示,地址范围是00H-FFH。

(3)低128字节(地址00H-7FH)的数据存储器既可以直接寻址也可间接寻址。

(4)高128字节RAM与特殊功能寄存器区貌似共用相同的地址范围,都使用80H-FFH,地址空间貌似重叠,但物理上是独立的,使用时通过不同的寻址方式加以区分。

(5)高128字节RAM只能间接寻址,特殊功能寄存器区只能直接寻址。

2.2.3、低128字节的RAM

(1)低128字节RAM也称为通用RAM区。

(2)通用RAM区又可分为工作寄存器组区,可位寻址区,用户RAM区和堆栈区。

(3)工作寄存器组区地址从00H-1FH,共32字节单元,分为4组(每一组称为一个寄存器组),每组包含8个8位的工作寄存器,编号均为R0-R7,但属于不同的物理空间。

(4)通过使用工作寄存器组,可以提高运算速度。R0-R7是常用的寄存器,提供4组是因为1组往往不够用。程序状态字PSW寄存器中的RS1和RS0组合决定当前使用的工作寄存器组。

2.2.4、扩展RAM

(1)单片机内部最大256字节RAM是由单片机内核决定的。

(2)扩展的RAM可集成在片内,即物理上是单片机内部的,逻辑上是外部的。使用MOVX指令访问。

(3)逻辑上外部的RAM,物理上可能是内部,也可能是外部。STC通过AUXR寄存器中的 EXTRAMbit来进行选择是访问内部或外部,两者只能选其一。因为本质上都是通过总线挂接扩展的。

(4)逻辑上外部RAM,物理上也是外部的RAM。在目前几乎遇不到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码织梦师小猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值