**不太會搞,,,將就著看吧。。。
說明:小括號裡是指令格式,後面是指令的功能,opd是目的運算元,ops是源運算元
1、加法指令
2、減法指令add加法(add opd,ops): opd<—opd+ops
adc帶進製加法(adc opd,ops): opd<—opd+ops+cf
inc加1(inc opd):opd的內容加1,opd可以是reg或mem,不影響cf的值
(reg:暫存器 mem:記憶體單元 imm:立即數)
3、乘法指令sub減法指令(sub opd,ops):opd<—opd-ops
sbb帶借位減法指令(sbb opd,ops):opd<—opd-ops-cf
dec減1指令(dec opd):opd<—opd-1
neg求補指令【neg opd(opd可以是reg或mem)】:對運算元opd進行求補運算,即對運算元opd連同符號位求反加1,並將結果送回opd
對0求補時,cf=0,其他情況下cf=1
cmp比較指令(cmp opd,ops):cmp指令與sub指令類似,將兩個運算元相減,結果不送回opd。改變標誌位
4、除法指令mul 無符號數的(mul opd):運算元可以是reg或mem,不能是立即數
opd為8位時,ax<—(al)*opd al是隱含運算元
opd為16位時,(dx)(ax)<—(ax)*opd 同理,ax是隱含運算元
imul 有符號數的:與無符號數的類似
div 無符號除法(div opd)和無符號數的乘法指令類似
idiv 有符號數除法
無符號數操作指令and邏輯與(都為1時取1)
or邏輯或(其1為1則取1)
not邏輯非(本來值的反值)
xor邏輯異或(排斥相同,乙個為0乙個為1時結果為1)
test測試指令(進行邏輯與操作,結果不送回目的運算元,僅建立結果狀態標誌,可用來測試某位是否為0)
一般移位:指令 轉移條件
ja/jnbe cf=0andzf=0 a>b
jae/jnb cf=0 a>=b
jb/jane cf=1 a帶符號數轉移指令
指令 轉移條件
jg/jnle zf=0andsf=of a>b
jge/jnl sf=of a>=b
jl/jnge sf不等於of a其實意思就是
比如ja,當a>b時轉移,否則繼續執行下一條指令,
sal/sar:算數左移/右移
shl/shr:邏輯左移/右移
算數左移和邏輯左移一樣,運算元左移,最低位補0,最高位進cf迴圈移位:算數右移:運算元右移,最高位不變,最低位進cf
邏輯右移:運算元右移,最高位補0,最低位進cf
debug中用shr和shl
取串:把源串當中si指向的字或位元組送ax或alrol opd,ops:不帶進製迴圈左移
ror opd,ops:不帶進製迴圈右移
rcl opd,ops:帶進製迴圈左移
rcr opd,ops:帶進製迴圈右移
存串lodsb 取源串乙個位元組
lodsw 取源串乙個字
串傳送stosb 送位元組到目的串
stosw 送字到目的串
串比較movsb 位元組傳送
movsw 字傳送
串搜尋cmpsb 位元組比較
cmpsw 字比較
重複字首 repscasb 搜尋位元組
scasw 搜尋字
彙編中的指令
跳轉指令用於實現程式流程的跳轉,在 arm 程式中有兩種方法可以實現程式流程的跳 1 使用專門的跳轉指令。2 直接向程式計數器 pc 寫入跳轉位址值。通過向程式計數器 pc 寫入跳轉位址值,可以實現在 4gb 的位址空間中的任意跳轉,在跳轉之前結合使用 mov lr pc 等類似指令,可以儲存下一條...
彙編中的重複指令
duprep是字串操作指令movs,cmps等的字首,在cx不等於0的情況下,對字串執行重複操作。rep的重複次數也存在cx中,但是其實cx本身不具有讓cx 1的功能,一般是rep後面跟著的指令執行之後自動讓cx 1 還可以擴充套件出 repe 相等時重複 repne 不相等時重複 repz 為零時...
GNU ARM中的彙編指令 word
gnu arm中的彙編 指令.word 彙編中的標號通常情況下是用來標明程式段的起始位址的,如 start b reset ldr pc,undefined instruction ldr pc,software interrupt ldr pc,prefetch abort ldr pc,data...