汇编--LDR】的更多相关文章

转载:https://my.oschina.net/zengsai/blog/23733 ARM LDR 伪指令的格式: LDR Rn, =expr 如果name是立即数的话LDR R0,=0X123;//将0X123存入R0如果name时个标识符LDR R0,=NAME;//将NAME的地址存入R0 LDR R0, =0x3FF5000 ; 伪指令: 把 0x3FF5000 直接赋值给 R0,相当于 R0=0x3FF5000. LDR R0, 0x3FF5000 ; 存储访问指令: 把以 0x…
jz2440开发板 在介绍bootloader里边的内容的时候,需要知道的是: bootloader的引入的目的就是启动linux内核,一个简单的bootloader编写需要以下的步骤: ①初始化硬件:关看门狗.设置时钟.设置SDRAM.初始化NAND FLASH ②把内核从NAND FLASH独到SDRAM ③保存要传给内核的参数到指定的位置 ④跳转执行内核 有的时候,会遇到bootloader很大的情况,那么就会有一步在①和②之间加一个重新定位在SDRAM中地址. 新建start.S文件,…
adr :相对寻址,与当前位置有关 ldr  :绝对寻址,与当前位置无关 在初始化SDRAM时就会用到adr,代码如下: /* 初始化SDRAM */ ldr r0,=BWSCON //r0=SDRAM寄存器基地址 adr r1,SDRAM_CONFIG //使用adr相对跳转, r1=SDRAM_CONFIG地址 add r2,r0,#(13*4) 0: ldr r3,[r1],#4 str r3,[r0],#4 cmp r0,r2 bne 0b SDRAM_CONFIG: .long 0x2…
简介 这两个都是伪指令:ADR 是小范围的地址读取伪指令,LDR 是大范围的读取地址伪指令.可实际使用的区别是: ADR 是将基于 PC 相对偏移的地址值或基于寄存器相对地址值读取的伪指令,而 LDR 用于加载 32 位立即数或一个地址到指定的寄存器中. 以下面的汇编代码为例: .global _start _start: ldr r0, loop adr r0, loop ldr r0, =loop loop: nop 用以下命令完成汇编.链接操作,并输出反汇编文件 [root@localho…
转自:http://blog.csdn.net/ce123_zhouwei/article/details/7182756 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中.而mov不能实现这个功 能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯…
ldr,str,ldm,stm的命名规律: 这几个指令命名看起来不易记住,现在找找规律. 指令 样本 效果 归纳名称解释 ldr Rd,addressing ldr r1,[r0] addressing to Rd [mem to reg] load to register str Rd,addressing str r1,[r0] Rd ro addressing [reg to mem] store register ldm Rn,reglist ldmfd sp!,{r0-r7,pc} *…
MOV 1.可以寄存器与寄存器之间传递数据 2.可以常数传递到寄存器中(常数不能超过32位) LDR 1.可以地址与寄存器之间的数据传递 2.也可以常数传递到寄存器中 实例: 1.r1与r2之间传递就只能用MOV:   MOV r1,r2 2.常数传递到寄存器可以使用MOV和ldr: MOV r0,#0  ldr r0,=0 3.寄存器与地址0X00000000之间传递数据只能用ldr: ldr r0,=0X30000000   ldr r0,0X00000000…
位置无关码,即该段代码无论放在内存的哪个地址,都能正确运行.究其原因,是因为代码里没有使用绝对地址,都是相对地址.  位置相关码,即它的地址与代码处于的位置相关,是绝对地址 BL :带链接分支跳转指令,也是位置无关码(相对位置),用于调用函数用的. B:分支跳转指令,指目标不能太远,一般用于同一个文件下的目标地址跳转. LDR:通常都是作加载指令的,但是它也可以作伪指令,通常有两种不同的表示:  1)LDR pc, =MyHandleIRQ 表示将MyHandleIRQ地址放入pc寄存器中,相当…
(1)LDR:L表示LOAD,LOAD的含义应该理解为:Load from memory into register.下面这条语句就说明的很清楚: LDR   R1,     [R2] R1<——[R2] 就是把R2所指向的存储单元的内容的值(一个memory地址内的值),读取到R1中(一个register) (2)STR:S表示STORE,STORE的含义应该理解为:Store from a register into memory.下面这条语句表示的很清楚: STR    R1,     […
STR :把寄存器中的字保存到存储器(寄存器到存储器) 示例: STR R0,[R1],#8             :将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1.STR R0,[R1,#8]             :将R0中的字数据写入以R1+8为地址的存储器中.”str     r1, [r0]                           :将r1寄存器的值,传送到地址值为r0的(存储器)内存中 LDR :把存储器中的字装入寄存器(存储器到寄存器) 示例…