ARM微处理器指令的寻址方式ARM指令的寻址方式ARM指令系统支持如下几种常见的寻址方式:立即寻址寄存器寻址寄存器间接寻址基址变址寻址堆栈寻址多寄存器寻址相对寻址11
11 ARM指令的寻址方式 ARM指令系统支持如下几种常见的寻址方式: ❑ 立即寻址 ❑ 寄存器寻址 ❑ 寄存器间接寻址 ❑ 基址变址寻址 ❑ 堆栈寻址 ❑ 多寄存器寻址 ❑ 相对寻址 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式立即寻址口立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:ADDRO,RO, #1/*R0R0+1*/ADDRO,RO,#0x3f/*R0R0+0x3f*/口在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”。12
12 立即寻址 ❑立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操 作数本身就在指令中给出,只要取出指令也就取到了操作数。 这个操作数被称为立即数,对应的寻址方式也就叫做立即寻 址。例如以下指令: ADD R0,R0,#1 /*R0←R0+1*/ ADD R0,R0,#0x3f /*R0←R0+0x3f*/ ❑在以上两条指令中,第二个源操作数即为立即数,要求以 “#”为前缀,对于以十六进制表示的立即数,还要求在 “#”后加上“0x” 。 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式寄存器寻址口寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:ADD/*R0R1+R2*/RO, R1, R2口该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器RO中。13
13 寄存器寻址 ❑寄存器寻址就是利用寄存器中的数值作为操作数,这种寻 址方式是各类微处理器经常采用的一种方式,也是一种执行 效率较高的寻址方式。以下指令: ADD R0,R1,R2 /*R0←R1+R2*/ ❑该指令的执行效果是将寄存器R1和R2的内容相加,其结果 存放在寄存器R0中。 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式寄存器间接寻址口寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:ADD RO, R1,[R2]/*R0R1+[R2]*/LDRRO,[R1]/*R0[R1]*/STRRO,[R1]/*[R1]-R0*/>在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器RO中;>第二条指令将以R1的值为地址的存储器中的数据传送到RO中。>第三条指令将RO的值传送到以R1的值为地址的存储器中。14
14 寄存器间接寻址 ❑寄存器间接寻址就是以寄存器中的值作为操作数的地址, 而操作数本身存放在存储器中。例如以下指令: ADD R0,R1,[R2] /*R0←R1+[R2]*/ LDR R0,[R1] /*R0←[R1]*/ STR R0,[R1] /*[R1]←R0*/ ➢在第一条指令中,以寄存器R2的值作为操作数的地址,在 存储器中取得一个操作数后与R1相加,结果存入寄存器R0中; ➢第二条指令将以R1的值为地址的存储器中的数据传送到R0 中。 ➢第三条指令将R0的值传送到以R1的值为地址的存储器中。 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式基址变址寻址口基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:;R0←[R1+4]LDRRO,[R1,#4];R0←[R1+4]、R1←R1+4LDRRO,[R1,#4]!;R0←[R1]、R1+R1+4LDRRO,[R1],#4; RO[R1+R2]LDR RO,[R1,R2]口在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器RO中。口在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器RO中,然后,R1的内容自增4个字节。口在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器RO中,然后,R1的内容自增4个字节。口在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器RO中。15
15 基址变址寻址 ❑ 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容 与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。 变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方 式的指令常见有以下几种形式,如下所示: 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] ❑ 在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址, 从而取得操作数存入寄存器R0中。 ❑ 在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址, 从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。 ❑ 在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取 得操作数存入寄存器R0中,然后,R1的内容自增4个字节。 ❑ 在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作 数的有效地址,从而取得操作数存入寄存器R0中。 ARM微处理器指令的寻址方式