找回密码
 立即注册
查看: 832|回复: 22

学习32G的地址分配记录贴

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-9 11:03:19 | 显示全部楼层 |阅读模式
本帖最后由 newlined 于 2024-9-11 10:11 编辑

对32G手册的第10章(存储器)一直没有学的透彻,在这里开一学习笔记贴,边学边记。我一直以为单片机,地址非常重要。如果有理解不对的地方,还请大家指出,谢谢。


1:32G 系列单片机提供 24 位寻址空间,最多能够访问 16M 的存储器(8M 数据存储器+8M 程序存储器),    地址从00:0000H到7F:FFFFH是数据存储区,占用8M;80:0000H到FF:FFFFH是程序存储区,占用8M。
2: 其中数据存储区又分为2部分,edata占用00:0000H-00:FFFF 共64K,xdata占用01:0000H-7F:FFFFH 共8M-64K

3:edata区域在C语言代码中使用“edata”关键字声明变量, xdata区域在C语言代码中使用“xdata”关键字声明变量。

     在汇编语言中:edata区域

                           edata区域可以分为00H-1FH:寄存器组(R0~R7),可以通过RS0,RS1选择
                           20H~7FH:      直接寻址(也可以间接访问)(都可以位寻址)
                           80H~FFH:    间接寻址,例如要访问80H 通过以下语句    MOV R0,#80H;MOV A,@R0 ;那么80H的内容就到了A
                                                直接寻址,例如要访问80H 通过以下语句    MOV R0,EDATA 80H
                           100H~0FFFH  间接访问, MOV   WR0, #WORD0 100H;  MOV   R11,@WR0
                                                                 MOV  DPTR ,#100H; MOV A @DPTR;
                                                                 MOV WR0,@WR4(目标操作数为字寄存器)
                           100H~0FFFH  直接访问, MOV R0,EDATA 100H;(目标操作数为字节寄存器);
                                                堆栈访问,就是把堆栈设定在100H~0FFFH时 比如 STACK  EQU   100H;  MOV SPX,#STACK;
                                                                                                                        PUSH  SPX ;  POP  SPX
                           xdata区域:
                           
                           以上办法中比较难的部分由liuzongguang老师和zxcv1973老师提供,非常感谢
希望大家集思广益,看看有多少种访问edata和xdata区域的方法。                          






回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-9 17:08:21 | 显示全部楼层
问题来了
edata区域可以分为00H-1FH:寄存器组(R0~R7),可以通过RS0,RS1选择
                           20H~7FH:直接寻址(都可以位寻址)
                            80H~FFH:间接寻址 例如要访问80H 通过一下语句:MOV R0,#80H
                                                                                                      MOV A,@R0 ;那么80H的内容就到了A
                            100H~0FFFH 应该也是间接访问,如果要访问100H,是不是要这样:MOV   WR0, #WORD0 100H
                                                                                                                              MOV   R11,@WR0;100H的内容就到了A

不知道我说的对不对,我没有把握,如不对,请指出,谢谢大家。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-9 17:09:15 | 显示全部楼层
或者还有其他办法,也请指出。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:460
  • 最近打卡:2025-05-09 08:55:07
已绑定手机

13

主题

1271

回帖

3031

积分

论坛元老

积分
3031
发表于 2024-9-9 18:08:22 | 显示全部楼层
8位8051用汇编有的玩,32位8051感觉真心没必要用汇编了:一是32位8051比8位的寄存器和指令复杂太多,二是32位的资源和性能提升很大而没必要汇编。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:176
  • 最近打卡:2025-02-19 17:24:49

15

主题

265

回帖

1387

积分

金牌会员

积分
1387
发表于 2024-9-9 20:18:02 | 显示全部楼层
newl*** 发表于 2024-9-9 17:08
问题来了
edata区域可以分为00H-1FH:寄存器组(R0~R7),可以通过RS0,RS1选择
                           ...

MOV  DPTR ,#100H;
MOV A @DPTR;

点评

谢谢您的回复  发表于 2024-9-10 07:56
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-10 07:59:43 | 显示全部楼层
21cns*** 发表于 2024-9-9 18:08
8位8051用汇编有的玩,32位8051感觉真心没必要用汇编了:一是32位8051比8位的寄存器和指令复杂太多,二是32 ...

是这样我这里有一个20几年的汇编程序,一直没有机会改成C.我也知道有C跟汇编混用的,但我没有用过。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:176
  • 最近打卡:2025-02-19 17:24:49

15

主题

265

回帖

1387

积分

金牌会员

积分
1387
发表于 2024-9-10 08:27:25 | 显示全部楼层
newl*** 发表于 2024-9-10 07:59
是这样我这里有一个20几年的汇编程序,一直没有机会改成C.我也知道有C跟汇编混用的,但我没有用过。 ...

20年前我也是写汇编,当时用南京伟福。改成c后不愿意再写汇编了。写汇编得准备一个本子,随时记得那个内存用过了。自己管理堆栈,每个调用都要数数堆栈看看是否越界。汇编有一个好处,就是实实在在的知道你的程序是怎样在片内跑的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-10 08:43:49 | 显示全部楼层
liuzon*** 发表于 2024-9-10 08:27
20年前我也是写汇编,当时用南京伟福。改成c后不愿意再写汇编了。写汇编得准备一个本子,随时记得那个内 ...

我现在维护的这个程序,老板也一直没有安排改为C,所以一直是修修补补
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-09 08:48:23

4

主题

512

回帖

2017

积分

金牌会员

积分
2017
发表于 2024-9-10 08:52:40 | 显示全部楼层
看,你们说的很开心,但是,没说明白,stc元老院,怎么说解释手册啊操作的例程也不多,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-05-09 06:12:04

35

主题

189

回帖

861

积分

高级会员

积分
861
发表于 2024-9-10 09:22:34 | 显示全部楼层
科学*** 发表于 2024-9-10 08:52
看,你们说的很开心,但是,没说明白,stc元老院,怎么说解释手册啊操作的例程也不多, ...

单片机毕竟是本来就是跑机器语言的,如果能彻底搞懂,也不错。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 09:11 , Processed in 0.139561 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表