1. 程式人生 > >彙編指令記錄

彙編指令記錄

STM指令

將一組暫存器中的資料存入到棧中,具有四種操作方式:

STMDB、STMDA、STMIB、STMIA 


STMIA 目標暫存器,{一組源暫存器}

            STMIA R13!,{R0-R1} ;將R0,R1暫存器中的資料存入R13指向的棧空間,完成後將R13的數值更新為當前指向的

                                                     棧地址。

                                                     相當於       *R13=R0  

                                                                      *(R13+4)=R1

                                                                       R13=R13+8

STMDB 目標暫存器,{一組源暫存器}

            STMDB  R13,{R0}     將R0存入R13 完成後R13不改變  *(R13-4)=R0


MRS指令 將XPSR暫存器的資料儲存到通用暫存器

            MRS  R0 ,XPSR ;  即 R0=XPSR

MSR指令 將通用暫存器的資料儲存到XPSR暫存器

           MSR XPSR,R0  ;  即 XPSR=R0


LDM  LDM是LDR指令的增強型 , 將多個連續的資料存入到一組暫存器

有四種操作方式

DB (Decrement Before)棧指標先減小再操作、DA(Decrement After)棧指標先操作再減小

IB(Increment Before)棧指標先增加再操作、IA(Increment After)棧指標先操作再增加

LDMIA R14,{R0-R3,R12} 從LR暫存器指向的棧地址中取出5個32位資料分別存進到R0-R4以及R12 ,即時

                                            R0=*R14

                                            R1=*(R14+4)

                                            R2=*(R14+8)

                                            R3=*(R14+12)

                                            R12=*(R14+16)

LDMIA R1!,{R4-R11}  從R1暫存器指向的地址連續取出8個32位資料存入到R4-R11暫存器中,完成操作之後將R1更新為當前

                                        的棧地址

                                            R4=*R1

                                            R5=*(R1+4)

                                            R6=*(R1+8)                                        

                                            R7=*(R1+12)

                                            R8=*(R1+16)

                                            R9=*(R1+20)

                                            R10=*(R1+24)

                                            R11=*(R1+28)

                                            R1=R1+32

ADD 指令  加法指令

ADD R14,#0x40 將LR暫存器的值與0x40相加,賦予LR R14+=0x40