DATA/IDATA/XDATA 区别

转载自:http://jingyan.baidu.com/article/c843ea0b80c56e77931e4a2a.html

  1. DATA: 固定指前面0x00-0x7F的128个RAM,可以用ACC直接读写的,速度最快,生成的代码也最小。
  2. 2

    IDATA: 固定指前面0x00-0xFF的256个RAM,其中前128和DATA的128完全相同,只是因为访问的方式不同。IDATA是用类似C中的指针方式 访问的。汇编中的语句为:MOX ACC,@Rx。

  3. 3

    XDATA:外部扩展RAM,一般指外部0x0000-0xFFFF空间,用DPTR访问。

  4. 4

    PDATA:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用MOVX ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG, 建议少用。但也有他的优点,具体用法属于中级问题。

时间: 2024-08-05 02:50:43

DATA/IDATA/XDATA 区别的相关文章

关于keil单片机编程中的data,idata,xdata,pdata,code数据类型

从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述).与ANSI-C稍有不同,它只分SAMLL.COMPACT.LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果. 在51系

C51中的关键字data,idata,xdata,pdata,bdata

写在最前面的话:官方网站的解答是最可信的.英语不错的必看.http://www.keil.com/support/man/docs/c51/c51_le_memtypes.htm 下面转载几篇中文的,仅供参考. data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同.idata是用类似C中的指针方式 访问的.汇编中的语句为

keil中 code、data、idata的区别

存储器类型 本C51编译器支持8051及其派生类型的结构能够访问8051的所有存储器空间具有下表列出的存储器类型的变量都可以被分配到某个特定的存储器空间.存储器类型 描述code 程序空间64 Kbytes :通过MOVC @A+DPTR 访问data 直接访问的内部数据存储器:访问速度最快128 bytesidata 间接访问的内部数据存储器 :可以访问所有的内部存储器空间 256 bytesbdata  可位寻址的内部数据存储器:可以字节方式也可以位方式访问16bytesxdata  外部数

51单片机的idata,xdata,pdata,data的详解

data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小.  bit :是指0x20-0x2f的可位寻址区 idata:固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同.  idata是用类似C中的指针方式访问的.  汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idATa做指针式的访问效果很好) xdATa: 外部扩展RAM,一般指外部0x0000-0xffff空间,用

bss段和data段的区别

一般情况下,一个程序本质上都是由 bss段.data段.text段三个组成的——本概念是当前的计算机程序设计中是很重要的一个基本概念.而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题. 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零(bss段属于静态内存分配,即程序

Hibernate、Mybatis与Spring Data JPA的区别

1.概念: Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.属于全自动的ORM框架,着力点在于POJO和数据库表之间的映射,完成映射即可自动生成和执行sql. Mybatis:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .

C51中遇到一个有关data与xdata的问题,已解决

环境: 我在某个C文件定义了一个结构体变量,然后该变量仅仅是在本文件内被一个函数使用,然后又在中断中调用了该函数,目的是改变一个IO口的输出状态,结果运行时怎么也达不到要的效果. struct BE { unsigned int CountFR; //定时器计数值.通过改变计数值改变音频频率 unsigned char PWR_time; //开启时间,单位为10mS unsigned char FREQ_time; //音频供给时间,单位为10mS unsigned char index; /

string类的data() 和c_str()区别

1. 首先想到的就是代码测试下(百度之后的) 1 #include <string> 2 #include <iostream> 3 #include <string.h> 4 #include <stdio.h> 5 6 using namespace std; 7 8 int main() 9 { 10 string s = "123 456"; 11 size_t l1 = s.length(); 12 size_t l2 = s.

bss、data和rodata区别与联系

有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助.因为有好几次这样经历,我才决定花一章篇幅来介绍它. 正如大家所知道的,全局变量是放在全局内存中的,但反过来却未必成立.用static修饰的局部变量就是放在放全局内存的,它的作用域是局部的,但生命期是全局的.在有的嵌入式平台中,堆实际上就是一个全局变量,它占用相当大的一块内存