彙編常用指令記錄

2021-09-10 22:34:26 字數 2406 閱讀 8735

指令的一般格式:

{} ,
其中<>為不可省略,{}為可以省略。

注意:opcode、cond、s之間沒有空格,s和rd之間使用空格隔開。

lsl 左移指令

mov r1,r0,lsl#3          //將暫存器r0中的值左移3位後傳送到暫存器r1中
cmp 比較指令

cmp r1,r0                //將暫存器r1的值與暫存器r2的值相減,並根據結果來設定cpsr的標誌位

cmp r1,#100 //將暫存器r1的值與立即數100相減,並根據結果來設定cpsr的標誌位

tst 位測試指令

tst r1,#0x01		      //將暫存器r1中的值與立即數0x01按位與,並根據是結果來設定cpsr的標誌位

tst r1,#0xfe //將暫存器r1中的值與立即數0xfe按位與,並根據是結果來設定cpsr的標誌位

teq 相等測試指令

teq r1,r2	              //將暫存器r1中的值與暫存器r1中的值按位異或,並根據是結果來設定cpsr的標誌位
add 加法指令

add r0,r1,r2	          //即 r0 = r1 + r2

add r0,r1,#256 //即 r0 = r1 + 256

add r0,r2,r3,lsl#3 //即 r0 = r2 + (r3<<3)

注意:add、adc、adds、adcs的區別:

add是不帶進製的加法指令

adc是帶進製的加法指令

----------------------------------------------

adds和adcs後加s是代表更新cpsr狀態

adds r1,r2,r3			  //即 r1 = r2 + r3且更新cpsr狀態

adcs r5,r6,r7 //即 r5 = r6 + r7,帶進製且更新了cpsr狀態

sub 減法指令

sub r0,r1,r2	          //即 r0 = r1 - r2

sub r0,r1,#256 //即 r0 = r1 - 256

sub r0,r2,r3,lsl#3 //即 r0 = r2 - (r3<<3)

注意:sbc是帶借位的減法指令,其與sbcs、subs使用與加法指令類似。

and 與指令

and r0, r0,#3	          //將暫存器中r0中的值與立即數3按位與,並且將結果放入r0中
注意:and通常用來保留特定位,清零其它位

orr 或指令

orr r1,r1,#3              //將暫存器中r1中的值與立即數3按位或,並且將結果放入r1中
注意:orr通常用來置位特定位

bic 位清除指令

bic r0,r0,#0x0b           // 將暫存器r0中值的第0、1、3位清零(0x0b是0000_1011),其餘位保持不變。
mrs 程式狀態暫存器到通用暫存器的資料傳輸指令

mrs和msr的格式: mrs rd,//psr可以是cpsr或spsr
mrs r0,cpsr 	          //傳輸cpsr中的內容到r0當中

mrs r1,spsr //傳輸spsr中的內容到r1當中

msr 通用暫存器到程式狀態暫存器的資料傳輸指令

格式: msr rd,_,rm       //psr可以是cpsr或spsr,fields為域
程式狀態暫存器可分為4個域:

psr[31:24]為條件標誌位域,用f表示,f為小寫

psr[23:16]為狀態位域,用s表示,s為小寫

psr[15:8]為擴充套件位域,用x表示,x為小寫

psr[7:0]為控制位域,用c表示,c為小寫

msr cpsr,r0	               //傳送r0的內容到cpsr中

msr spsr,r1 //傳送r1的內容到spsr中

msr cpsr_c,r2 //傳送r2的內容到cpsr中,但僅僅修改cpsr中的控制位域

注意:mrs和msr一般用於需要改變程式狀態暫存器的內容 或者 是異常處理和程序切換時要保留程式狀態暫存器中的值時。

彙編記錄 99 彙編指令

mov 賦值 指令 mov a,b 把 b 的資料傳送到 a 中 有以下形式 1 mov 暫存器,任意 資料 記憶體單元 暫存器 段暫存器 字元 mov ax,9 1 bx ds a 2 mov 記憶體單元,暫存器 段暫存器 mov 2 bx ds 3 mov 段暫存器,暫存器 記憶體單元 mov ...

彙編 常用指令

一 資料傳送指令 mov 傳送資料 兩個運算元 xchg 交換指令 兩個運算元 movsx 擴充套件資料指令 兩個運算元 movzx 擴充套件資料指令 兩個運算元 xlat 查表指令 無運算元 push pop 入棧,出棧 乙個運算元 lea 位址傳送指令 兩個運算元 in out 輸入輸出指令 兩...

彙編常用指令

一 資料傳輸指令i.4.標誌傳送指令.lahf 標誌暫存器傳送,把標誌裝入ah.sahf 標誌暫存器傳送,把ah內容裝入標誌暫存器.pushf 標誌入棧.popf 標誌出棧.pushd 32位標誌入棧.popd 32位標誌出棧.二 算術運算指令 add 加法.adc 帶進製加法.inc 加 1.aa...