内存地址、机器码与汇编指令的三角恋关系

虽然机器码和内存地址领证在一起了,但是俩个人都和汇编指令有着说不清的关系,机器码的前任是汇编指令,而汇编指令又与内存地址暗地相通,这究竟是道德的沦丧还是人性的扭曲,今天就让我来领大家细细分解这三者的前世今生!!!

之前我们使用汇编语言编写了点亮LED程序,.S文件通过FTP传到Ubuntu中,通过交叉编译工具生成.bin文件传回本机,然后通过oflash烧写进裸机的Nand FLASH,从而点亮LED。
这里分析一下汇编代码在此过程中的意义,内存地址、机器码与汇编指令三者之间的联系。

一.原汇编代码

汇编代码如下:

.text
.global _start

_start:                   ;程序从这里开始
	ldr r1, =0X56000050   ;将地址存在r1
	ldr r0, =0X100        ;将值存在r0
	str r0, [r1]          ;将r0的值写入[]中的地址
	
	ldr r1, =0X56000054	  ;同上
	ldr r0, =0            
	str r0, [r1]          
	
halt:                     ;死循环
	b halt                ;一直跳转到halt

简单解释一下代码:

要点亮LED,就要将GPF4引脚输出低电平,通过在GPFCON和GPFDAT寄存器中的对应位写入值来实现,即对0X56000050地址中写入0X100,对0X56000054地址中写入0 。

用到的汇编代码指令如下:

ldr(load):读内存命令

str(store):写内存命令

b:跳转

mov(move):赋值

二.反汇编代码

编译器会将汇编指令转换成机器码,而机器码又存放在内存地址中!!!通过反汇编指令可以得到反汇编文件,里面有内存地址、机器码与汇编指令三者的

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值