51单片机汇编中的寄存器R0、R1、R2如果用c语言写的话怎么表示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机汇编中的寄存器R0、R1、R2如果用c语言写的话怎么表示相关的知识,希望对你有一定的参考价值。

参考技术A 如果必须访问这几个寄存器的话可以使用c语言里嵌入汇编,或者访问各寄存器对应的映射地址。本回答被提问者采纳 参考技术B C语言操作这些寄存器不安全!如果实在要操作就用指针
char *pR0 = (char *)(0x00);
char *pR1 = (char *)(0x01);
char *pR2 = (char *)(0x02);
参考技术C char *pRx = (char *)(0x0x);用转换
亦可在中断中,用using X
参考技术D 可以到ads或rvds上输入c语言代码,反汇编观看arm汇编指令是如何表示的。 第5个回答  2010-02-04 能位寻址的用名,不能的定义名再用

汇编设计实验1

实验1 查看CPU的内存,用机器指令和汇编指令编程

用到的debug功能有:

R命令查看,改变CPU寄存器的内容

D命令查看内存中的内容

E命令改写内存中的内容

U命令将内存中的机器指令翻译成汇编指令

T命令执行一条机器指令

A命令以汇编指令的格式在内存中写入一条机器指令

1.首先下载Dosbox和debug.exe,并配置文件。

技术分享图片

技术分享图片

技术分享图片

2.进入dosbox环境,查看配置是否正确

技术分享图片

3.运行命令

R命令查看CPU寄存器的内容

技术分享图片

R命令改变CPU寄存器的内容

技术分享图片

D命令查看内存中的内容

技术分享图片

E命令改写内存中的内容

技术分享图片

U命令将内存中的机器指令翻译成汇编指令

技术分享图片

A命令以汇编指令的格式在内存中写入一条机器指令

技术分享图片

4.实验任务1:使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

(1)使用A命令输入,直接输入汇编命令

技术分享图片

(2)使用rcs与rip命令将CS:IP指向对应位置

技术分享图片

(3)使用t命令查看,并观察CPU中相关寄存器中内容的变化

技术分享图片

从中发现,CPU中寄存器已把我刚才输入的汇编指令在寄存器中实现,用t命令可以查看我刚才所输入的汇编指令和其在CPU寄存器中的位置。

5.实验任务2:将下面3条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方。

(1)输入指令

技术分享图片

(2)修改cs:ip的值使其从2000:0的地址开始

技术分享图片

(3)使用t命令查看,并观察CPU中相关寄存器中内容的变化,并查看2的8次方计算是否正确

技术分享图片

6.实验内容3:查看内存中的内容

(1)查看内存FFF00H~FFFFFH中的内容

技术分享图片

从中发现我的ROM 的生产日期为92年1月1号

(2)尝试将其修改为18年10月27号

技术分享图片

发现生产日期并没有发生改变。原因是,我修改的是只读存储器,所以修改并没有用。

7.实验总结和体会

第一次的汇编实验我主要学到的是如何用debug查看CPU寄存器中的内容,并使用A,T,U,D,E,R命令操作CPU寄存器,还可以使用多种方式查看和修改寄存器中的数值。我也知道了我并不能修改内存地址为c000h的内存单元,因为那个是只读。

以上是关于51单片机汇编中的寄存器R0、R1、R2如果用c语言写的话怎么表示的主要内容,如果未能解决你的问题,请参考以下文章

51单片机中R0,R1,R2.....都表示的是啥

汇编和中断

004.ARM指令之LDR

汇编语言和C语言混合编程时,它们之间是如何传递参数的?请用具体例子说明

用ARM汇编语言编写程序实现:求寄存器R0和R1中两个整数的最大公约数并将结果存储在R0中

ARM汇编指令