没有理解51单片机的存储器

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:49:16
刚初学51单片机。ORG 0000H中以及LED EQU 30H中的这个0000H和30H都是指4KB的片内程序存储器中的地址吧?还有MOV R5,#40H MOV A,@R5 那这个@R5中40H是指片内程序存储器中的地址还是片内数据存储器中的地址?

MOV R5,#40H MOV A,@R5 那这个@R5中40H是指片内程序存储器中的地址还是片内数据存储器中的地址?

答:MOV R5,#40H 这个是立即寻址。#40H是立即数,在程序存储器里。R5是数据存储器里的一个特殊功能寄存器。
MOV A,@R5 是寄存器间接寻址。R5里存放的是40H,这个是把40H里的数放到A里。40H是数据存储区的地址。阁下应该知道程序存储器是放程序代码的(汇编代码变成机器码放在程序存储器里),里面的东西不能改的,虽然有程序存储器有立即寻址,但这个立即数也是不能改的,当代码看的。而数据存储器里的数是随程序运行变化的。

ORG 0000H: 伪指令,表明程序从这里开始,是指4KB的片内程序存储器中的地址,并不生成真正的代码。。

LED EQU 30H:伪指令 并不生成真正的代码。

MOV R0,#40H 是片内数据存储器传送;MOVX A,@R0 是片外数据存储器传送。

ORG 0000H:是指4KB的片内程序存储器中的地址。

LED EQU 30H:只是说LED等于30H这个数字,是否是地址,还难说。

MOV R5,#40H MOV A,@R5:不是R5,带@只能是R0和R1。那么:
MOV R0,#40H MOV A,@R0:是片内数据存储器传送。
而:
MOV R0,#40H MOVX A,@R0:则是片外数据存储器传送。

ORG 0000H是指程序存储器的地址,意思是告诉编译器下面的代码定位在程序存储器的0000H开始的地方
LED EQU 30H是指数据存储器,即内部RAM,意思是变量LED就是指RAM中的30H单元
@R5中40H是片内数据存储器中的地址,因为在访问片内程序存储器是使用MOVC,另外MOVX是指访问外部数据存储器