2012微机原理及接口技术课件-CH8.ppt

2012微机原理及接口技术课件-CH8

让学生判断:状态寄存器的运算标志位只是用来控制程序的走向 488 * 银行账户 * * 存储器访问指令 ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载/存储指令实现。 ARM的存储空间及I/O空间统一编址,因此对外围I/O及程序数据的访问均需通过加载/存储指令进行。 一、单数据操作指令LDR/STR 用于对访问内存变量、内存缓冲区数据、查表、控制外围部件等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转。 二、数据块操作指令LDM/STM(考试重点内容之一) 主要用于现场保护、数据复制、常数传递等。 三、数据交换指令SWP 单数据存取指令 指 令 格 式 说 明 操 作 LDR {cond} Rd,addressing 加载字数据 Rd←[addressing] 注意addressing的寻址方式及索引方式 LDR{cond}T Rd,addressing 以用户模式加载字数据 LDR{cond}BT Rd, addressing 以用户模式加载无符号字节 LDR{cond}B Rd,addressing 加载无符号字节数据 LDR{cond}H Rd, addressing 加载无符号半字数据 LDR{cond}SB Rd, addressing 加载有符号字节数据 LDR{cond}SH Rd, addressing 加载有符号半字数据 LDR{cond}D Rd, addressing 加载双字数据 STR{cond} Rd, addressing 存储字数据 [addressing]←Rd 注意addressing的寻址方式及索引方式 STR{cond}T Rd,addressing 以用户模式存储字数据 STR{cond}B Rd,addressing 存储字节数据 STR{cond}BT Rd,addressing 以用户模式存储字节数据 STR{cond}H Rd,addressing 存储半字数据 STR{cond}D Rd,addressing 存储双字数据 符号数加载时用符号扩展到32位,否则用零扩展到32位; LDR指令几种形式 立即数:LDR R1,[R0,#0x12] ;R1?[R0+0x12] 寄存器:LDR R1,[R0,-R2] ; R1?[R0-R2] 寄存器移位:LDR R1,[R0,R2,LSL #2] ;R1?[R0+R22] 地址索引的4种格式 零偏移: LDR Rd,[Rn] 程序相对偏移: LDR Rd,labe1 前索引偏移: LDR Rd,[Rn,#0x04]! 后索引偏移: LDR Rd,[Rn],#-0x09 LDR R2,[R5] STR R1,[R0,#0x04] LDRB R3,[R2],#-1 STRB R0,[R3, R8,ASR #2] LDRSB R1,[R0,R3] LDRH R6,[R2],#2 存取指令应用示例 ;将R5指向的字数据存入R2 ;将R1的内容存储到[R0+0x04]字单元 ;将R2指向的无符号字节存入R3,R2?R2-1 ;R0最低字节-[R3+R82] ;将R0+R3指向的带符号字节存入R1,高24位符号扩展 ;将R2指向的无符号半字存入R6,高16位0扩展;R2=R2+2 数据块存取指令 指 令 格 式 说 明 操 作 LDM{cond} {mode} Rn{!},reglist{^} 多寄存器加载 reglist←[Rn...] STM{cond} {mode} Rn{!},reglist{^} 多寄存器存储 [Rn...]←reglist reglist表示寄存器列表(由小到大),如{R1,R2,R6-R9}; ! 表示在操作结束后,将最后的地址写回Rn中; ^表示使用用户模式下的寄存器,而不是当前模式的寄存器。 地址增长模式 数据块传送操作说明 地址增长模式 堆栈操作说明 IA 传送后地址加4 FD 满递减堆栈 IB 传送前地址加4 ED 空递减堆栈 DA 传送后地址减4 FA 满递增堆栈 DB 传送前地址减4 EA 空递增堆栈 数据块存取指令应用示例 R1:指令执行前的基址寄存器 R1’:指令执行后的基址寄存器 R1 ? R1’ ? 指令STMIA R1!,{R5-R7} 4008H 4004H 4000H 4014H 4010H 400CH R1 ? R1’ ? 指令STMDA R1!,{R5-R7} 4008H 4004H 4000H 4014H 4010H 400CH R1 ? R1

文档评论(0)

1亿VIP精品文档

相关文档