正在加载图片...
桶形移位器操作 桶形移位器操作(续) 助记符说明 LSL移位热作: 移位操作结果 Y值 8 LSL逻辑左移 xLSLy x<<y #0-310rRs LSR移振作: LSR逻辑右移 xLSRy (unsigned)x>>y #1-320rRs -Ⅲ ASR算术右移 x ASR y (signed)x>>Y #1-320rRs ASR移往播作: ROR 算术左移 x RORy ((unsigned)x>>yl(x<<32- #1-320rRs 0) ROR移往振作: RRX 扩展的循环 x RRX y (c flag<<31) none 右移 ((unsigned)x>>1) RRX移往恭作: xusic.edu.cn 19m lboousic.edu.cn 207m 5.23寄存器间接寻址 5.2.4基址变址寻址 ② 寄存器间接寻址:以寄存器中的值作为操 ·将基址寄存器的内容与指令中给出的地址偏移量 作数的地址,而操作数本身存放在存储器 相加,从而得到一个操作数的有效地址。 一“变址”,改变基址 中。 一变址寻址方式常用于访问某基地址附近的地址 LDR RO,[R1] :R0←-[R1] 单元。 STR RO,[RI] [R1]+R0 ·变址方式: 前变址、自动变址(“回写”!)、后变址(“回写”!)、 偏移变址 ADD RO,R1,[R2] :R0←R1+[R2] LDRR0,[R1,#4]:R0-[R1十4],前 :可用?,查 LDRR0,[R1,#4]!:R0-[R1+4]、R1-R1十4,自 LDRR0,[R1],#4:R0-[R1]、R1-R1十4,后 LDRR0,【R1,R2】:R0-[R1+R2],偏 xBustc.edu.cn 21m .edu.cn 22m Pre or Post Indexed Addressing? 52.5多寄存器寻址 ·Pre-indexed::STRx0,【r1,121 12 020 采用多寄存器寻址方式,一条指令可以完成多个寄存器值 的传送。这种寻址方式可以用一条指令完成传送最多16个 驰 通用寄存器的值。 Auio-update formsTRx0,【r1,12】 以下指令: LDMIA RO,(R1,R2,R3,R4) ·Post-indexed:sTRr0,【r1],12 :R1-[RO] :R2-[RO+4] Offset :R3-[R0+8] 12 020c 0 :R4-[R0+12] 该指令的后缀1A表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1R4。 2477llxx@ustc.edu.cn 19/77 桶形移位器操作 助记符 说明 移位操作 结果 Y值 LSL 逻辑左移 x LSL y x<<y #0-31 or Rs LSR 逻辑右移 x LSR y (unsigned)x>>y #1-32 or Rs ASR 算术右移 x ASR y (signed)x>>Y #1-32 or Rs ROR 算术左移 x ROR y ((unsigned)x>>y|(x<<32- y)) #1-32 or Rs RRX 扩展的循环 右移 x RRX y (c flag<<31)| ((unsigned)x>>1) none llxx@ustc.edu.cn 20/77 桶形移位器操作(续) LSL移位操作: 0 LSR移位操作: 0 ASR移位操作: ROR移位操作: RRX移位操作: C llxx@ustc.edu.cn 21/77 5.2.3 寄存器间接寻址 寄存器间接寻址:以寄存器中的值作为操 作数的地址,而操作数本身存放在存储器 中。 LDR R0,[R1] ;R0←[R1] STR R0,[R1] ;[R1]←R0 ADD R0,R1,[R2] ;R0←R1+[R2] ;可用??? ,查 llxx@ustc.edu.cn 22/77 5.2.4 基址变址寻址 • 将基址寄存器的内容与指令中给出的地址偏移量 相加,从而得到一个操作数的有效地址。 – “变址”,改变基址 – 变址寻址方式常用于访问某基地址附近的地址 单元。 • 变址方式: 前变址、自动变址(“回写”!)、后变址(“回写”!)、 偏移变址 LDR R0,[R1,#4] ;R0←[R1+4],前 LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4,自 LDR R0,[R1],#4 ;R0←[R1]、R1←R1+4,后 LDR R0,[R1,R2] ;R0←[R1+R2],偏 0x5 0x5 r1 0x200 Base Register 0x200 r0 0x5 Source Register for STR Offset 12 0x20c r1 0x200 Original Base Register 0x200 r0 0x5 Source Register for STR Offset 12 0x20c r1 0x20c Updated Base Register Auto-update form: STR r0,[r1,#12]! Pre or Post Indexed Addressing? • Pre-indexed: STR r0,[r1,#12] • Post-indexed: STR r0,[r1],#12 llxx@ustc.edu.cn 24/77 5.2.5 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值 的传送。这种寻址方式可以用一条指令完成传送最多16个 通用寄存器的值。 以下指令: LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] 该指令的后缀IA表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1~R4
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有