目录

测试目标:

测试代码:

1. start.s

2. align.s

测试结果:

1 .ldr伪指令的测试结果:

2 .align伪操作测试结果:

结果分析:


测试目标

  1. 熟悉ARM处理器伪指令,本次实验主要来练习ldr指令align伪操作的使用
  2. 理解ARM处理器指令功能,并学会分析汇编语言代码

测试代码

1. start.s

area init,code,readwrite

 entry

start

ldr r0,=0x7000000

orr r0,r0,#0x13

mcr p15,0,r0,c15,c2,4



ldr r0,=0x7e004000

mov r1,#0

str r1,[r0]



ldr r1,=0x7e000020

mov r0,#0x1000

str r0,[r1]



ldr r1,=0x7e000024

mov r0,#0

str r0,[r1]

halt

b halt

 end

2. align.s

 area init,code,readwrite

 entry

start

mov r1,r0

mov r0,#12

ldr r4,src

ldr r3,=src



ldr r5,str

ldr r6,=str

ldr r7,str

src

dcd 7777

str

dcd 0x33f80000

dcb 0x88

dcb 0x77

align

reset

mov r8,#0

end

测试结果

1 .ldr伪指令的测试结果:

2 .align伪操作测试结果:

结果分析

1.LDR伪指令是将一个32位的常数或者一个地址读取寄存器中,可以看作是加载寄存器内容。由图1可知LDR伪指令替代成具有相同功能thumb指令加载常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入内存文字池,并使用一条程序相对偏移得LDR指令内存文字池读出常量

2..align作用范围只限于紧跟它的那条指令或者数据,而接下来的指令或者数据地址由上一条指令的地址和其长度决定。由图2可知align下紧跟的指令的PC值是十六进制的28,是以4的倍数对齐

原文地址:https://blog.csdn.net/weixin_52008375/article/details/134761803

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35958.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注