15 ARM彙編自學筆記指令系統之移位指令(操作)

2021-08-03 11:58:58 字數 1371 閱讀 6115

移位指令(操作)

arm微處理器內嵌的桶型移位器(barrel shi f t er),支援資料的各種移位操作,移位操作在arm指令集中不作為單獨的指令使用,它只能作為指令格式中是乙個字段,在組合語言中表示為指令中的選項。例如,資料處理指令的第二個運算元為暫存器時,就可以加入移位操作選項對它進行各種移位操作。移位操作包括如下 6種型別,asl 和 lsl 是等價的,可以自由互換:

— lsl 邏輯左移

— asl 算術左移

— lsr 邏輯右移

— asr 算術右移

— ror 迴圈右移

— rrx 帶擴充套件的迴圈右移

1、lsl(或 asl)操作

lsl(或 asl)操作的格式為:通用暫存器,lsl(或 asl)運算元

lsl(或 asl)可完成對通用暫存器中的內容進行邏輯(或算術)的左移操作,按運算元所指定的數量向左移位,低位用零來填充。其中,運算元可以是通用暫存器,也可以是立即數(0~31)。操作示例:

mov r0, r1, lsl#2 ;將 r1 中的內容左移兩位後傳送到 r0 中。

2、lsr操作

lsr操作的格式為:通用暫存器,lsr 運算元

lsr可完成對通用暫存器中的內容進行右移的操作,按運算元所指定的數量向右移位,左端用零來填充。其中,運算元可以是通用暫存器,也可以是立即數(0~31)。操作示例:

mov r0, r1, lsr#2 ;將 r1 中的內容右移兩位後傳送到 r0 中,左端用零來填充。

3、asr操作

asr操作的格式為:通用暫存器,asr 運算元

asr可完成對通用暫存器中的內容進行右移的操作,按運算元所指定的數量向右移位,左端用第31 位的值來填充。其中,運算元可以是通用暫存器,也可以是立即數(0~31)。操作示例:

mov r0, r1, asr#2 ;將 r1 中的內容右移兩位後傳送到 r0 中,左端用第 31 位的值來填充。

4、ror操作

ror操作的格式為:通用暫存器,ror 運算元

ror可完成對通用暫存器中的內容進行迴圈右移的操作,按運算元所指定的數量向右迴圈移位,左端用右端移出的位來填充。其中,運算元可以是通用暫存器,也可以是立即數(0~31)。顯然,當進行 32 位的迴圈右移操作時,通用暫存器中的值不改變。操作示例:

mov r0, r1, ror#2 ;將 r1 中的內容迴圈右移兩位後傳送到 r0 中。

5、rrx操作

rrx操作的格式為:通用暫存器,rrx 運算元

rrx可完成對通用暫存器中的內容進行帶擴充套件的迴圈右移的操作,按運算元所指定的數量向右迴圈移位,左端用進製標誌位 c 來填充。其中,運算元可以是通用暫存器,也可以是立即數(0~31)。操作示例:

mov r0, r1, rrx#2 ;將 r1 中的內容進行帶擴充套件的迴圈右移兩位後傳送到 r0 中。

06 ARM彙編自學筆記指令系統之分類與格式

三指令系統 arm 微處理器的指令的分類與格式 arm微處理器的指令集是載入 儲存型的,也即指令集僅能處理暫存器中的資料,而且處理結果都要放回暫存器中,而對系統儲存器的訪問則需要通過專門的載入 儲存指令來完成。arm微處理器的指令集可以分為跳轉指令 資料處理指令 程式狀態暫存器 psr 處理指令 載...

07 ARM彙編自學筆記指令系統之定址方式

arm 指令的定址方式 1.立即定址 立即定址也叫立即數定址,這是一種特殊的定址方式,運算元本身就在指令中給出,只要取出指令也就取到了運算元。這個運算元被稱為立即數,對應的定址方式也就叫做立即定址。例如以下 指令 add r0,r0,1 r0 r0 1 add r0,r0,0x3f r0 r0 0x...

17 ARM彙編自學筆記指令系統之異常產生指令

異常產生指令 arm 微處理器所支援的異常指令有如下兩條 swi 軟體中斷指令 bkpt 斷點中斷指令 1 swi 指令 swi 指令的格式為 swi 24位的立即數 swi 指令用於產生軟體中斷,以便使用者程式能呼叫作業系統的系統例程。作業系統在 swi 的異常處理程式中提供相應的系統服務,指令中...