匯編語言指令大全 匯編指令集


如果你想寫系統軟件,兩本入門書籍 — 譚浩強的《C 語言程序設計》和王爽的《匯編語言》是必看的 。譚老的 C 語言已相當成熟,王老師的匯編倒有個小缺陷—指令沒有英文全稱,或許他認為現在學編程的朋友都不記單詞,如同新生代作家看不懂英文原著一般 。不過我覺得記住指令的英文全稱,就不容易搞混,印象會更深刻,所以我把王爽書中出現的英文縮寫的全稱羅列出來,以便入門的朋友更好地記住它們 。
8086CPU 提供以下幾大類指令 。
一、數據傳送指令
比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是數據傳送指令,這些指令實現寄存器和內存、寄存器和寄存器之間的單個數據傳送 。
二、算術運算指令
比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc(increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv(integer divide)、aaa(ASCII add with adjust)等都是算術運算指令,這些指令實現寄存器和內存中的數據運算 。它們的執行結果影響標志寄存器的 sf、zf、of、cf、pf、af 位 。
三、邏輯指令
比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是邏輯指令 。除了 not 指令外,它們的執行結果都影響標志寄存器的相關標志位 。
本帖隱藏的內容 【匯編語言指令大全 匯編指令集】四、轉移指令
可以修改 IP,或同時修改 CS 和 IP 的指令統稱為轉移指令 。轉移指令分為以下幾類 。
(1) 無條件轉移指令,比如,jmp(jump);
(2) 條件轉移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等;
(3) 循環指令,比如,loop;
(4) 過程,比如,call、ret(return)、retf(return far);
(5) 中斷,比如,int(interrupt)、iret(interrupt return) 。
五、處理機控制指令
這些指令對標志寄存器或其他處理機狀態進行設置,比如,cld(clear direction)、std(set direction)、cli(clear interrupt)、sti(set interrupt)、nop(no operation)、clc(clear carry)、cmc(carry make change)、stc(set carry)、hlt(halt)、wait、esc(escape)、lock 等都是處理機控制指令 。
六、串處理指令
這些指令對內存中的批量數據進行處理,比如,movsb(move string byte)、movsw(move string word)、cmps(compare string)、scas(scan string)、lods(load string)、stos(store string)等 。若要使用這些指令方便地進行批量數據處理,則需要和 rep(repeat)、repe(repeat if equal)、repne(repeat if not equal)等前綴指令配合使用 。

猜你喜歡