彙編指令大全

2021-08-08 16:40:44 字數 5205 閱讀 1200

(dst:destination目的運算元/位址;src:source源運算元/位址;port:

埠;ac: accumulator累加器;reg:register暫存器;cnt:

counter計數器;opr:除了立即數之外的所有定址方式(暫存器);立即數:直接包含在**中,作為**的一部分,不需要儲存在暫存器中的運算元,相當於高階語言中的常量;r8/r16:

8位通用暫存器/16位通用暫存器;sr:segment register段暫存器,包括ds、ss、es、cs;mem:memory,表示儲存器運算元;addr:

address,表示記憶體單元位址;)

[資料傳送指令]

一、通用資料傳送指令

1、傳送指令 mov (move)

指令的彙編格式:mov dst,src

指令的基本功能:(dst)←(src) 將原運算元(位元組或字)傳送到目的位址。

指令支援的定址方式:目的運算元和源運算元不能同時用儲存器定址方式,這個限制適用於所有指令。

指令的執行對標誌位的影響:不影響標誌位。

指令的特殊要求:目的運算元dst和源運算元src不允許同時為段暫存器;

目的運算元dst不能是cs,也不能用立即數方式。

2、進棧指令 push (push onto the stack)

出棧指令 pop (pop from the stack)

指令的彙編格式:push src ;pop dst

指令的基本功能:push指令在程式中常用來暫存某些資料,而pop指令又可將這些資料恢復。

push src (sp)←(sp)-2 ;(sp)←(src)

pop dst (dst)←((sp));(sp)←(sp)

指令支援的定址方式:push 和 pop指令不能不能使用立即數定址方式。

指令對標誌位的影響:push 和 pop指令都不影響標誌位。

指令的特殊要求:push 和 pop指令只能是字操作,因此,訪問字資料後,sp的修改必須是+2 或者 -2;

pop指令的dst不允許是cs暫存器;

3、交換指令 xchg (exchange)

指令的彙編格式:xchg opr1,opr2

指令的基本功能:(opr1)←>(opr2)

指令支援的定址方式:乙個運算元必須在暫存器中,另乙個運算元可以在暫存器或儲存器中。

指令對標誌位的影戲:不影響標誌位。

指令的特殊要求:不允許使用段暫存器。

二、累加器專用傳送指令

4、輸入指令 in (input)

輸出指令 out(output)

指令的彙編格式:in ac,port port<=0ffh

in ac,dx port>0ffh

out port,ac port<=0ffh

out dx,ac port>0ffh

指令的基本功能:對8086及其後繼機型的微處理機,所有i/o埠與cpu之間的通訊都由輸入輸出指令in和out來完成。in指令將資訊從i/o輸入到cpu,out指令將資訊從cpu輸出到i/o埠,因此,in和out指令都要指出i/o埠位址。

in ac,port port<=0ffh (al)←(port)傳送位元組或 (ax)←(port+1,port)傳送字

in ac,dx port>0ffh (al)←((dx))傳送位元組或 (ax)←((dx)+1,(dx))傳送字

out port,ac port<=0ffh (port)←(al)傳送位元組或 (port+1,port)←(ax)傳送字

out dx,ac port>0ffh (dx)←(al)傳送位元組或 ((dx)+1,(dx))←(ax)傳送字

指令對標誌位的影響:不影響標誌位。

指令的特殊要求:只限於在al或ax與i/o埠之間傳送資訊。

傳送16位資訊用ax,傳送8位資訊用al,這取決於外設埠的寬度。

5、換碼指令 xlat (translate)

指令的彙編格式:xlat opr 或 xlat

指令的基本功能:這條指令根據al暫存器提供的位移量,將bx指使的位元組**中的**換存在al中。

(al)←((ds)*16+(bx)+(al))

指令對標誌位的影響:不影響標誌位。

指令的特殊要求:所建位元組**的長度不能超過節,因為存放位移量的是8位暫存器al。

opr為**的首位址,因為opr所表示的偏移位址已存入bx暫存器,所以opr在換碼指令中可有可無,有則提高程式的可讀性。

三、位址傳送指令

6、有效位址傳送器 lea (load effective address)

指令的彙編格式:lea reg,src

指令的基本功能:lea指令把源運算元的有效位址送到指定的暫存器,這個有效位址是由src選定的一種儲存器定址方式確定的。

指令支援的定址方式:各種儲存器定址方式。

指令對標誌位的影響:不影響標誌位。

指令的特出要求:指令中reg不能是段暫存器;

7、指標送暫存器和ds lds (load ds with point)

指標送暫存器和es les (load es with point)

指令的彙編格式:lds reg,src

les reg,src

指令的基本功能:lds和les指令把確定記憶體單元位置的偏移位址送暫存器,段位址ds或es。這個偏移位址和段位址(也稱位址指標)是由src指定的兩個相繼字單元提供的。

lds reg,src (reg)←(src) (ds)←(src+2)

les reg,src (reg)←(src) (es)←(src+2)

指令支援的定址方式:src必須為儲存器定址方式

指令對標誌位的影響:不影響標誌位。

指令的特殊要求:指令中reg不能是段暫存器;

四、標誌暫存器傳送指令

8、標誌暫存器的低位元組送ah lahf (load ah with flags)

指令的彙編格式:lahf

指令的基本功能:(ah)←(flags)0-7

指令對標誌位的影響:不影響標誌位

9、ah送標誌暫存器低位元組 sahf(store ah into flags)

指令的彙編格式:sahf

指令的基本功能:(flags)0-7←(ah)

指令對標誌位的影響:由裝入值來確定標誌位的值。

10、標誌進棧 pushf (push the flags)

指令的彙編格式:pushf

指令的基本功能:(sp)←(sp)-2 ((sp)+1,(sp))←(flags)0-15

指令對標誌位的影響:不影響標誌位。

11、標誌出棧 popf (pop the flages)

指令的彙編格式:popf

指令的基本功能:(flags)0-15←((sp)+1,(sp)) (sp)←(sp)+2

指令對標誌位的影響:由裝入值來確定標誌位的值。

[算術指令]

一、加法指令

12、加法指令 add (addition)

指令的彙編格式:add dst,src

指令的基本功能:(dst)←(src)+(dst)

指令支援的定址方式:他們兩個運算元不能同時為儲存器定址。即為除源運算元為立即數的情況外,源運算元和目地運算元必須有乙個暫存器定址方式。

指令對標誌位的影響:sf=1 加法結果為負數(符號位為1)

sf=0 加法結果為正數(符號位為0)

zf=1 加法結果為零

zf=0 加法結果不為零

cf=1 最高有效位向高位有進製

cf=0 最高有效位向高位無進製

of=1 兩個同符號數相加(正數+正數或負數+負數),結果符號與其相反。

of=0 兩個不同符號數相加,或同符號數相加,結果符號與其相同。

13、帶進為加法指令 adc (add with carry)

指令的彙編格式:add dst,src

指令的基本功能:(dst)←(src)+(dst)+cf

指令支援的定址方式:他們兩個運算元不能同時為儲存器定址。即為除源運算元為立即數的情況外,源運算元和目地運算元必須有乙個暫存器定址方式。

指令對標誌位的影響:sf=1 加法結果為負數

sf=0 加法結果為正數

zf=1 加法結果為零

zf=0 加法結果不為零

cf=1 最高有效位向高位有進製

cf=0 最低有效位相高位無進製

of=1 兩個同符號數相加,結果符號與其相反,

of=0 兩個同符號數相加,或同符號相加,結果符號與其相同

14、加1指令 inc (increament)

指令的彙編格式:inc opr

指令的基本功能:(opr)←(opr)

指令支援的定址方式可以使用除立即數方式外的任何定址方式

指令對標誌位的影響:sf=1 加法結果為負數

sf=0 加法結果為正數

zf=1 加法結果為零

zf=0 加法結果不為零

of=1 兩個同符號數相加,結果符號與其相反,

of=0 兩個同符號數相加,或同符號相加,結果符號與其相同。

二、減法指令

15、減法指令 sub (subtract)

指令的彙編格式:sub dst,src

指令的基本功能:(dst)←(dst)-(src)

指令支援的定址方式:他們兩個運算元不能同時為儲存器定址。即為除源運算元為立即數的情況外,源運算元和目地運算元必須有乙個暫存器定址方式。

指令對標誌位的影響:sf=1 減法結果為負數(符號位為1)

sf=0 減法結果為正數(符號位為0)

zf=1 減法結果為零

zf=0 減法結果不為零

cf=1 二進位制減法運算中最高有效位向高位有借位(被減數小於減數,不夠減的情況)

cf=0 二進位制減法運算中最高有效為向高位無借位(被減數》=減數,夠減的情況)

of=1 兩數符號相反(正數-負數,或負數-正數),而結果符號與減數相同。

of=0 同符號數相減時,或不同符號數相減,其結果符號與減數不同。

16、帶借位減法指令 sbb (subtract with borrow)

指令的彙編格式:sbb dst,src

指令的基本功能:(dst)←(dst)-(src)-cf

指令支援的定址方式:他們兩個運算元不能同時為儲存器定址。即為除源運算元為立即數的情況外,源運算元和目地運算元必須有乙個暫存器定址方式。

指令對標誌位的影響:sf=1 減法結果為負數(符號位為1)

sf=0 減法結果為正數(符號位為0)

zf=1 減法結果為零

zf=0 減法結果不為零

彙編指令手冊

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

組合語言指令大全發布完整版

les 傳送目標指標,把指標內容裝入es.例 les di,string 把段位址 偏移位址存到es di.lfs 傳送目標指標,把指標內容裝入fs.例 lfs di,string 把段位址 偏移位址存到fs di.lgs 傳送目標指標,把指標內容裝入gs.例 lgs di,string 把段位址 ...

8086彙編指令手冊

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...