[单片机]汇编左移指令相当于乘以几 查看:3917  回复: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

image.png

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


当前第1页/总1页
ICP备案证书号: 苏ICP备14003016-2号