PLC解密网-PLC培训学习-工控自动化人才技术交流

超级管理员

453

帖子

1378

回复

3116

积分

楼主
发表于 2020-10-08 13:59:37 | 查看: 3918 | 回复: 2

ARM汇编特点2:8种寻址方式

寄存器寻址  mov r1, r2 

立即寻址  mov r0, #0xFF00 

寄存器移位寻址  mov r0, r1, lsl #3 

寄存器间接寻址  ldr r1, [r2] 

基址变址寻址  ldr r1, [r2, #4] 

多寄存器寻址  ldmia r1!, {r2-r7, r12} 

堆栈寻址  stmfd sp!, {r2-r7, lr} 

 相对寻址       beq flag


下面这个汇编左移指令相当于乘以几

寄存器移位寻址  mov r0, r1, lsl #3

如果r1为0xa等于十进制的10 二进制为 1010 

左移3位 就为1010000 等于十进制的80 相当于10乘以8=80

左移4位 就为10100000 等于十进制的160 相当于10乘以16=160


超级管理员

453

帖子

1378

回复

3116

积分
沙发
发表于 2020-10-08 14:01:42

image.png

超级管理员

453

帖子

1378

回复

3116

积分
板凳
发表于 2020-10-08 16:05:06

ARM语言中LDMIA R1!,{R0,R4-R12};是什么意思,并且说传输完毕更新R1的值,

LDMIA 中的bai I 是 increase 的缩写,A 是 after 的缩小,duLD加载(load)的意思

R1后面的感叹号“!zhi”表示会自动调节 R1里面dao存的指针

所以整句话意思是任务栈R1的存储地址由低到高,将R1存储地址里面的内容手动加载到 CPU 寄存器 R0,R4-R12里

还有一种是STMDB R1!, {R0,R4-R12} 这就和上面反过来了,ST是存储(store)的意思,D是decrease的意思,B是before的意思,整句话就是R1的存储地址由高到低递减,将R0,R4-R12里的内容存储到R1任务栈里面。

IA:Increase After

传输“之后”“递增”的bai意思

R1有初始值,指向一个du存储地址

依次将zhiR0,R4到R12的值传入相应的地址,每dao次传输之后递增R1指向的存储地址,因为是32位,每次递增的地址应该是4bytes


您需要登录后才可以回帖 登录 | 立即注册

技术支持 KZYPLC V2.1 © 2020-2027

欢迎光临昆山中宇工控PLC论坛!您是第 10336375 位访问者, 日访问量: 3027 总访问量: 22669899,当前 2024-11-24 02:53:33 在线人数:35

ICP备案证书号: 苏ICP备14003016-2号