8086 8088的指令系統 三 資料傳送指令

2021-06-03 15:34:03 字數 2586 閱讀 4420

大多數指令既可以處理字資料,也可以處理位元組資料。

算術運算和邏輯運算不侷限於暫存器,儲存器運算元也可以直接參加算術邏輯運算。

指令系統分為如下六個功能組:

(1)資料傳送

(2)算術運算

(3)邏輯運算

(4)串操作

(5)程式控制

(6)處理器控制

指令的一般格式分為四個部分

[標號:] 指令助記符 [運算元1][,運算元2][;注釋]

指令是否帶有運算元完全取決於指令

標號的使用取決於程式的需要,但是不被匯程式設計序識別,與指令系統無關。

標號有點類似於c語言中的goto語句中的標號,做為乙個偏移。

指令助記符代表操作碼,從二進位制的操作碼到助記符的乙個翻譯過程。

功能組一:資料傳送指令

1、傳送指令格式:

mov dst(目的運算元),src(源運算元)

源運算元:累加器(ax),暫存器,儲存單元和立即數

目的運算元:不能是立即數

操作後不改變源運算元。

(1)cpu內部之間的傳送(兩個都是暫存器)

mov ah,al

mov dl,dh

mov bp,sp

mov ax,cs

源運算元和目的運算元兩個不能都是段暫存器

**段(cs)不能作為目的運算元

指令指標(ip)既不能作為源運算元也不能作為目的運算元

(2)立即數送通用暫存器和儲存單元

mov al,3

mov si,-3

mov varb,-1;varb是變數名,代表乙個儲存單元

mov varw,3456h;varw是乙個字變數

mov [si],6543h

主要:立即數不能直接傳送給段暫存器

立即數不能是目的運算元

(3)暫存器與儲存器之間的資料傳送

mov ax,varw ;varw是乙個字變數,為直接定址

mov bh,[di];為暫存器間接定址

mov di,es:[si+3];為暫存器相對定址,段超越字首

mov varb,dl;為暫存器直接定址

mov ds:[bp],di;暫存器基址變址定址

mov varw,ds;暫存器直接定址

mov es,varw;直接定址

注意:源運算元和目的運算元型別一樣(byte和word等),除了串操作外

不能同時是儲存器運算元,兩個運算元必須有乙個暫存器除立即定址以外。

如果需要在兩個儲存單元中進行資料傳送,可以利用乙個暫存器過渡

mov ax,varw1

mov varw2,ax

實現了varw1->varw2的資料傳送。

運算元不能同時為段暫存器,那麼同上也可以進行過渡。

mov bx,offset table

把table的偏移位址送到bx暫存器中,其中offset為屬性操作符。

傳送指令不影響flag暫存器

2、交換指令

利用交換指令可以方便的實現通用暫存器之間或者是與儲存器之間的資料交換

指令格式:

xchag oprd1,oprd2

此指令把運算元oprd1與oprd2的內容進行交換必須保證資料型別的一致。

通過上面的分析,操作指令中必須有乙個暫存器,並且儲存器之間,段暫存器之間不能直接通過mov進行操作。

例如:xchag al,ah

xchag si,bx

oprd可是通用暫存器和儲存單元,但是不能包括段暫存器《一定要通過通用暫存器來交換》

還不能有立即數,可以採用各種暫存器和儲存器的定址方式。

指令示例:

xchag bx,[bp+si]; 基址加變址定址方式,基址暫存器和儲存器的資料呼喚[ss]

此指令不影響flag

3、位址傳送指令

(1)指令lea( load effective address)

lea reg,oprd

該指令把運算元oprd的有效位址傳送到運算元reg中。

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

運算元reg必須是乙個16位的通用暫存器(ax bx cx dx bp sp di si)

操作的結果是把偏移位址送給reg,記住不是實體地址,是偏移位址

指令示例:

lea ax, buffer   [ax]=buffer

lea ds,[bs+si]      [ds] = bs+si

lea si,[bp+di+4]  [si] = bp+di+4

(2)lds( load pointer into ds)

段值和段內偏移構成32位的位址指標。

lds reg, oprd

執行操作: (reg) <- (src)

(ds) <- (src+2)

該指令把運算元oprd作為基址所含的乙個32位的記憶體中的內容前兩個位元組送到reg中,後兩個位元組送到資料段暫存器ds

運算元oprd必須是乙個32為的儲存器運算元,

運算元reg可以是乙個16位的通用暫存器,但實際使用的往往是變址暫存器或者是指標暫存器。

(3)les(load pointer into es)

操作和上面的完全相同。

8086 8088指令系統詳解之(5)程式控制指令

能夠使程式的執行流程發生改變的指令 1 無條件轉移jmp 有以下幾種型別操作 段內直接短轉移 格式 jmp short opr 操作 ip ip data8 data8是乙個位元組的補碼數 範圍 128 127 段內直接近轉移 格式 jmp near ptr opr 操作 ip ip data16 ...

第二章 8086 8088定址和指令系統

2.2 儲存分段和位址的形成 8086 8088的定址方式 8086 8088指令系統 bx cx dx 指標暫存器 變址暫存器 控制暫存器 段暫存器 151413 1211109 8765 4321 0ofdfif tfsf zfaf pfcf 運算結果標識 8086或8088系統中以位元組為單位...

8086 8088指令系統詳解之(4)串操作

串操作指令的特徵是對資料塊 字串或數值串 進行操作,並且其中部分指令可以兩個運算元同時是儲存器運算元。movs move string 串傳送 cmps compare string 串比較 scas scan string 串掃瞄 lods load from string 從串中取資料 stos...