80X86學習筆記 資料傳送指令

2021-06-05 06:07:14 字數 2423 閱讀 4735

一.傳送指令

格式:mov dst, src

源運算元可以使累加器,暫存器,儲存單元,立即數。

目的運算元不能為立即數。

注意問題:

源和目的運算元不能同時是段暫存器;**段暫存器cs不能作為目的暫存器;ip既不能作為源,也不能作為目的。

源運算元與目的運算元型別要一致16對16位, 8位對8位。

兩個運算元不能都為儲存器,必須有一暫存器。

資料傳送指令能實現下列傳輸功能:

1.cpu內部暫存器間資料傳送

mov ah, al

mov dl, dh

mov bp, sp

mov as, cs

2.立即數送通用暫存器或儲存單元(立即數不能直接送到段暫存器)

mov al, 2

mov si, –5

mov varb, –1

mov varw, 1234h

mov [si], 1234h

mov al, 『d』

3.暫存器與儲存器間資料傳送

mov a, varw

mov bh, [di]

mov dl, es:[si+3]

mov varb, dl

mov ds:[bp], dl

mov varw, ds

mov es, varw

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

mov ax, offset table

offset為屬性操作符,把table偏移位址送至ax。

二.交換指令

通用暫存器與通用暫存器或儲存單元資料的交換,但不包括段暫存器,也不能同時是儲存單元,還不能有立即數。

格式:xchg oprd1, oprd2

三.位址傳送指令

(1)lea

傳送有效位址指令

格式:lea reg, oprd

oprd必須是乙個儲存器運算元

reg必須是乙個16位通用暫存器

lea ax, buffer

lea ds, [bs+s]

lea sl, [bx+si+2]

(2)lds

段值和段內偏移構成乙個32位位址指標,該指令傳送這個32位指標

格式:lds reg, oprd

reg<-[src]

ds<-[src+2]

段值送到ds

偏移送到reg

(3)指令les(load point into es)

les也是傳送32位位址指標

les reg, oprd

reg<-[src]

es<-[src+2]

四.堆疊操作指令

堆疊操作以字為單位。

(1)進棧push

格式:push src

執行操作:sp<-sp – 2

先把堆疊指標暫存器sp的值減2,然後把源運算元src送入由sp所指的棧頂,源運算元src可以是通用暫存器喝段暫存器,也可是字儲存單元。

(2)出棧pop

格式:pop dst

dst可以是通用暫存器喝段暫存器(cs例外),也可是字儲存單元。

例子1:

臨時儲存暫存器內容

push ax

push bx

pop bx

pop ax

例子2:

push si          pop si

push ds         pop ds

push varw     pop varw

push[si]        pop [si]

資料交換的三種方式:

用mov,利用暫存器過度方法

mov bx, ax

mov ax, si

mov si, bx

用交換指令xchg

xchg ax, si

用堆疊指令

push si

push ax

pop ax

pop si

五.標誌操作指令

(1)標誌傳送指令

lahf(load ah with flags)

該指令把標誌暫存器的低8位(包括sf,zf,af,pf,cf)傳送到暫存器ah的指定位。

sahf

與lahf相反

pushf

該指令把標誌暫存器內容壓入堆疊

popf

(2) 標誌位操作指令

clc清進製標誌

stc置進製標誌,進製標誌位1.

cmc進製標誌取反指令

cld清方向標誌指令,使方向標誌df為0.

std置方向標誌

cli清中斷允許標誌指令,該指令使中斷允許標誌if為0,cpu不再響應來自外部裝置的可遮蔽中斷,但對不可遮蔽中斷和內部中斷都沒有影響。

sti置中斷允許標誌允許指令,該指令使if為1,cpu可以響應可遮蔽中斷。

80X86學習筆記 轉移指令

無條件段內直接轉移指令格式 jmp 標號 使控制無條件的轉移到標號位址。例 next mov ax,cx jmp next jmp over over mov ax,1 在執行無條件段內轉移指令時,實際操作是把指令中的位址差加到指令指標ip上,使ip內容為目標位址,從而達到轉移目的。段內無條件直接轉...

80X86學習筆記 算術運算指令

加法指令add 格式 add oprd1,oprd2 操作 oprd1 oprd1 oprd2 加法指令影響標誌位,of位更具運算元符號變化情況來設定 若兩個運算元符號相同而結果與之相反時溢位,of 1,否則of 0。cf可以用來表示無符號數的溢位,最高位產生進製或借位,產生溢位,cf 1。2.帶進...

80X86學習筆記 算術運算指令

加法指令add 格式 add oprd1,oprd2 操作 oprd1 oprd1 oprd2 加法指令影響標誌位,of位更具運算元符號變化情況來設定 若兩個運算元符號相同而結果與之相反時溢位,of 1,否則of 0。cf可以用來表示無符號數的溢位,最高位產生進製或借位,產生溢位,cf 1。2.帶進...