邏輯指令集有:and/orr/eor/bic
1)與邏輯指令一般用於置零某位:and
logical and operation.
syntax
and rd, rn, op2
description
load rd with logical and of rn with op2. rd := rn and op2
condition flags
if s is specified, n, z flags are updated. c flag may be updated by calculation of op2.
example
and r9,r2,#0xff00 // load r9 with r2 and value in 0xff00
area my_kano,code,readonly
code32
entry
start
loop
mvn r0, #0 ;這裡通過取反得到的r0是0xffffffff
;and r0, r0, 0xfffffff0 將r0的低四位清零,顯然這裡不是立即數,不可以直接使用
mvn r1, #0xf
and r0,r0, r1
mvn r2, #0
bic r2, r2, #0xf ;這裡直接通過bic置零指令可以直接置零想要的某一位
mvn r3, #0
bic r3, r3, #0x20 ;把第五位當想置零 0x20表示的就是0010-0000
;而0xdf表示的二進位制就是1101-1111
2)邏輯或指令:orr(或邏輯一般用於某位的置 1 )
logical or operation.
syntax
orr rd, rn, op2
description
or operations on the values in rn and op2.
condition flags
ifsis specified, n, z flags are updated. c flag may be updated by calculation of op2.
example
orr r2, r0, r5 // rd = r0 or r5
area my_kano,code,readonly
code32
entry
start
loop
mov r0, #0x0
mov r1, r0
orr r0, r0, #0xf ;將r0的低四位置1
orr r1, r1, #0xc0 ;將r1的第六,七位置1,要求達到 1100-0000
mov r3, #0x0
mov r4, #0x3c
eor r3, r0, #0x0 ;異或(不同才取1)
eor r4, r3, #0x3c
;;實現兩個暫存器值的交換(a = a ^ b , b = b ^ a ,a = a ^ b)
3)比較指令:cmp / cmn /tst / teq
area my_kano,code,readonly
code32
entry
start
loop
cmp r1, #0x10 ;cpsr = r1 - 0x10
cmn r1, r2 ;反值比較 cspr = r1 + r2
tst r1, #0x3 ;位測試指令 cspr = r1 and #0x3
teq r1, r2 ;相等測試 cspr = r1 eor r2
mov r1, r2 ;資料傳輸指令 r1 = r2
mvn r1,r2 ;取反傳送指令 r1 = ~ r2
b loop
end
ARM指令集 資料處理指令
arm彙編指令集 arm彙編檔案的組成 指令 編譯完成後作為一條指令 機器碼 儲存在記憶體單元中,cpu執行時能夠完成處理的操作 偽指令 在編譯時替換成能被識別的arm指令 偽操作 知道編譯器進行編譯,編譯完成後不生成指令,也不占用記憶體空間。arm彙編指令型別 資料處理指令 跳轉指令 實現程式執行...
彙編指令之資料傳送指令續集 三
4 堆疊指令 在8086 8088系統中,堆疊實際是一段隨機訪問ram區域。稱為棧底的一端位址較大,稱為棧頂的一端位址較小。堆疊的段值在堆疊暫存器ss中 堆疊的指標暫存器sp始終指向棧頂 堆疊是以 後進先出 方式工作 堆疊的訪問必須以字為單位 16bit 2btye 堆疊的指令分為如下兩種 1 進棧...
彙編邏輯運算指令
1.否操作指令not not oprd 把oprd取反,再回送給oprd 對標誌位沒有影響 2.與操作指令and 與 and oprd1,oprd2 oprd1和oprd2執行與操作,結果送到oprd1 執行後,cf of 0,標誌pf,zf,sf反映運算結果,af未定義 某個運算元自身與,值不變,...