汇编知识MOV,MRS,MSR,PUSH和POP指令

处理器做得最多的事情就是在处理器内部来回的进行数据传递

  1. 将数据从一个寄存器传递到另一个寄存器中

  2. 将数据从一个寄存器传递到特殊寄存器,例如CPSR,SPSR寄存器

  3. 将立即数传递到寄存器。

数据传输常用的三个指令:MOV,MRS,MSR指令

常用的存储器访问指令有两种:LDR和STR这两个指令

LDR指令:

LDR主要用于存储加载数据到寄存器RX中,LDR也可以将一个立即数加载到寄存器RX中,LDR加载立即数的时候要使用"-"而不是"#",在嵌入式开发中,LDR最常用的就是读取CPU寄存器中的值:

例如:

LDR R0, =0X0209C000 @将寄存器地址0x0209c000加载到R0中也就是R0=0x0209c000

LDR R1, [R0] @读取地址中的数据到R1寄存器中

上述代码就是读取寄存器值保存到R1寄存器中

STR指令:

LDR指令是从寄存器中读取数据,STR就是将数据写入到寄存器中

LDR R0, =0X0209C000 @将寄存器地址0x0209c000加载到R0中也就是R0=0x0209c000

LDR R1, = 0X20000002 @R1保存要写入到寄存器的值

STR R1, [R0] @将R1中的值写入到R0中所保存的地址中

注:LDR和STR都是按照字进行读取和写入的,也就是操作的32位数据,如果要按照字节,半字进行操作的话可以在指令"LDR"后面加上B或H,例如按字节操作的指令LDRB,STRB,半字操作的指令LDRH,STRH。

PUSH和POP指令

PUSH :将寄存器列表存入栈中

POP: 从栈中恢复寄存器列表

将R0~R3,R12进行压栈以后的堆栈示意图,此时SP指向0x7fffffec。

POP{R0~R3,R12} @在恢复R0~R3,R12

出栈就是从栈顶,也就是SP当前执行的位置开始,地址依次减小来提取堆栈中的数据

到要恢复的寄存器列表中

PUSH和POP的另一种写法是STMFD SP! 和 LDMFD SP!

相关推荐
资料,小偿1 天前
4.1.1基于51单片机汇编语言出租车计价器可切换白天黑夜,可修改价格
汇编·51单片机·proteus
embrace991 天前
【C语言学习】数据在内存中存储
java·c语言·开发语言·汇编·c++·学习·算法
T.Ree.7 天前
汇编_mov指令
汇编
CC-NX8 天前
32位汇编:实验12动态链接库
汇编
资料,小偿8 天前
4.101基于8086国旗图案proteus8.9,8086彩灯图案流水灯图案,国期图案仿真,四个开关四种模式。近期本人原创
汇编·proteus
资料,小偿11 天前
4.29.3五种波形发生器8086波形发生器,锯齿波脉冲波正弦波三角波直流信号含调试视频➕18页5000字原创报告软件流程图proteus8.9近期原创的,
汇编·proteus
T.Ree.11 天前
汇编_读写内存
开发语言·汇编·c#
量子炒饭大师12 天前
【一天一个计算机知识】—— 【编程百度】翻译环境与运行环境
c语言·汇编·c++·gitee·机器翻译
资料,小偿13 天前
4.98基于8086倒车测距8086测距ACD0809proteus8.9仿真,汇编语言源程序
汇编·proteus
万象.14 天前
GNU汇编语法和Cortex-A7常用汇编指令
服务器·汇编·gnu