微機原理第三章指令系統_第1頁
微機原理第三章指令系統_第2頁
微機原理第三章指令系統_第3頁
微機原理第三章指令系統_第4頁
微機原理第三章指令系統_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

8086指令系統的特點

★8086的尋址方式

★8086指令系統

第三章8086的指令系統

1.

指令系統的兼容性

2.

靈活的指令格式

3.

指令的尋址能力和數據存取能力強4.具有處理多種類型數據的能力5.便于構成多處理機系統一、8086指令系統的特點

有效地址EA(EffectiveAddress)

尋址方式

8086的指令格式及數據類型二、8086的尋址方式

1.有效地址EA(EffectiveAddress)

當8086CPU的執行部件EU需要讀/寫存儲器操作數時,它必須把一個偏移地址送給總線接口部件BIU。BIU把這個偏移地址和段地址的首址相加,產生20位物理地址,然后執行存取操作數所需的總線周期。尋址所需的偏移地址即為有效地址,用EA表示。它是一個16位的無符號數,代表被尋址的操作數在存儲器中的位置距離該段起點的字節數。如圖所示:

2.尋址方式

尋址方式大致分為以下類型:立即尋址、寄存器尋址、直接尋址、寄存器間接尋址、基址尋址、變址尋址、基址加變址尋址、串尋址和輸入/輸出端口尋址。78H56H34H12H34H12H56H78H操作碼(1)立即尋址

操作數作為立即數直接存在指令中,可為字節、字、雙字。例:

MOVCX,12345678H低地址高地址CS段CX(2)寄存器尋址

操作數在寄存器中,指令中用3位字段指令寄存器號碼。對于16位操作數,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP;對于8位操作數,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。例:

MOVAX,BX

78H56H34H12HAX78H56H34H12HBX34H12H00H操作碼(3)直接尋址

指令中的操作數部分直接給出操作數的有效地址EA,操作數可以是16位或32位整數,操作數默認在DS段中,例:MOVAX,[3000H]低地址高地址CS段30H34H12HAXDS段5000053000DS300053000+5000(4)寄存器間接尋址

存儲操作數的有效地址,可直接取自基址寄存器或變址寄存器之一。只要對基址寄存器或變址寄存器的值做適合的修改,一條指令就可以對許多不同的存儲單元進行操作。這種尋址方式可以用于表格處理,只需修改寄存器內容就可對表格中的不同項進行操作。操作碼低地址高地址CS段34H12H34H12HAXSS段7000073000SS7000300073000+MOVAX,[BP]BP(5)基址尋址

在基址尋址中,有效地址是位移量值和寄存器BX或寄存器BP的內容之和。低地址高地址CS段操作碼00H15H34H12H34H12HAXFS段7000073500BX150073500+DS700002000MOVDX,[BX+1500](6)變址尋址所謂變址尋址,就是以指定的變址寄存器的內容,加上指令中給定的8位或16位位移量,作為操作數的地址,即EA=[變址寄存器]+位移量。SI、DI為基址寄存器,DS為默認段寄存器。變址尋址適用于對一維數組的元素進行操作。(7)基址加變址尋址

操作數的有效地址是一個基址寄存器和一個變址寄存器的內容再加上指令中指定的8位或16位位移量之和。基址加變址尋址主要用于二維數組操作和二重循環。例:

MOVAX,[BX+SI]MOVEAX,[EDX+EBP](8)串尋址串尋址訪問的操作數,不能用通常的存儲器尋址方式,而是隱含地運用變址寄存器。當執行串命令時,設定SI指向源字符串的第一個字節或字,DI指向目的字符串的第一個字節或字,且目的字符串必須存放在附加段中。在重復操作中,CPU自動地調整SI和DI的內容,以獲得后續的字節或字。

3.8086的指令格式及數據類型

指令由操作碼和操作數兩部分組成。8086是變字節指令,一條指令一般由1~6個字節組成(加上前綴字節,最長的可為7字節指令)。指令的操作碼采用二進制代碼表示本指令所執行的操作,通常用指令的第一個字節表示。有時由于用8位不夠,因此在指令的第二個字節中還可能占有3位操作碼。除此以外的其它字節或位則用來表示操作數。

數據傳送指令

算術運算指令

位處理指令模式系統★串操作指令

★程序控制轉移指令三、8086指令系統

1.數據傳送指令

數據傳送指令負責把數據、地址傳送到寄存器或存儲單元中,以及實現存儲器和寄存器、寄存器之間、寄存器AL和AX與I/O端口之間的字節或字的傳送。它可分為以下四類:通用數據傳送、累加器專用傳送(輸入/輸出數據傳送)、目標地址傳送和標志寄存器傳送。(1)通用數據傳送

MOV傳送指令格式為:MOVOPRD1,OPRD2

執行操作:(OPRD1)(OPRD1)該指令把一個字節或字操作數從源傳送到目的,能實現CPU內部寄存器之間的數據傳送、寄存器與存儲器之間的數據傳送、立即數傳送到CPU內部通用寄存器和存儲器。但要注意以下幾點:1)寄存器不能為IP;2)允許用段寄存器作為一個目的操作數時,不允許用CS段寄存器;3)MOV指令的目的操作數不允許用立即數方式;4)不允許兩個段寄存器之間直接傳送信息;5)不允許用MOV指令在兩個存儲單元之間直接傳送數據,而應間接通過CPU內部寄存器來實現。

PUSH進棧指令格式為:PUSH

OPRD

執行操作:SPSP-2該指令把一個字操作數從源傳送到堆棧的頂部。常用于在調用過程前把參數入棧,16位寄存器(包括段寄存器)、存儲器單元的內容都可入棧。

POP出棧指令格式為:POP

OPRD

執行操作:SPSP+2該指令把SP所指向的堆棧頂部的一個字傳送到指定目的操作數,同時修改堆棧指針,即SPSP+2。

XCHG交換指令格式為:XCHGOPRD1,OPRD2

執行操作:(OPRD1)(OPRD1)該指令把一個字節或字的源操作數與目的操作數相交換,即該指令的兩個操作數中必須有一個為寄存器操作數,且段寄存器不能作為一個操作數。(2)累加器專用傳送

IN輸入指令長格式為:INAL,PORT;(字節)INAX,PORT;(字)執行操作:(AL)(PORT)(AX)(PORT)

短格式為:INAL,DX;(字節)INAX,DX;(字)執行操作:(AL)(DX)(AX)(DX+1,DX)

該指令把一個字節或字由輸入端口傳送到AL或AX,端口地址由指令中的PORT或者DX規定。若由PORT所規定可尋址256個端口;若由DX所規定可尋址64K個端口。當端口號大于256時,只能使用短格式,但必須先把端口號放到DX寄存器中。

OUT輸入指令長格式為:OUTAL,PORT;(字節)INAX,PORT;(字)執行操作:(AL)(PORT)(AX)(PORT)

短格式為:OUTAL,DX;(字節)OUTAX,DX;(字)執行操作:(AL)(DX)(AX)(DX+1,DX)

XLAT換碼指令格式為:XLAT

OPRD

執行操作:AL(BX+AL)該指令完成一個字節的查表轉換。(3)目標地址傳送LEA有效地址送寄存器指令格式為:LEA

r,src

執行操作:rADR(src);W該指令把源操作數偏移量(而不是它的值)傳送到目的操作數所在的16位寄存器。LDS指針裝入寄存器和DS指令格式為:LEA

r,src

執行操作:r(EA)DS(EA+2);DW該指令把源操作數的連續四個字節(目標指針,包括一個段地址和一個地址偏移量)的雙字存儲器傳送到一對目的寄存器。LES指針裝入寄存器和ES指令格式為:LES

r,src

執行操作:r(EA)ES(EA+2);DW該指令除將地址指針的段地址部分送入ES外,其余與LDS指令類似。(4)標志寄存器傳送LAHF標志寄存器低字節送AH指令格式為:LAHF

執行操作:(AH)Flag的低字節該指令把標志寄存器中的SF、ZF、AF、PF和CF分別傳送到AH寄存器的相應位,但本身不影響這些標志位。SAHFAH送標志寄存器低字節指令格式為:LAHF

執行操作:Flag的低字節(AH)該指令把AH寄存器的相應位分別傳送到標志寄存器中的SF、ZF、AF、PF和CF,但本身不影響溢出標志位OP、方向標志位DF、中斷標志位IF和跟蹤標志位TF。PUSHF標志進棧指令格式為:PUSHF

執行操作:SPSP-2;(SP+1,SP)Flag該指令把整個標志寄存器推入堆棧保存,同時修改堆棧指針。這條指令對標志位沒有影響。POPF標志進棧指令格式為:POPF

執行操作:Flag(SP+1,SP);SPSP+2該指令把現行堆棧指針所指一個字傳送給標志寄存器,同時相應地修改堆棧指針。這條指令執行后,8086的標志位取決于原堆棧頂部的內容。2.算術運算指令8086以多種形式提供4種基本的算術運算,可用于字節(8位)或字(16位)的帶符號或不帶符號的運算。若是帶符號運算,則用補碼表示。(1)加法運算

ADD加法運算指令格式為:ADDOPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1+OPRD2該指令完成兩個操作數相加,結果送到目標操作數。

ADC加法運算指令格式為:ADCOPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1+OPRD2該指令與ADD類似,不同之處只是在兩個操作數相加時,要把進位標志CF的現行值加上去,結果送到目標操作數。

INC增量指令格式為:ADCOPRD;B/W

執行操作:OPRD

OPRD+1該指令是使操作數的內容加1,然后把結果送回到此操作數。

DAA十進制數加法調整指令格式為:DAA;B該指令為BCD碼十進制數加法調整指令,對在AL中的兩個組合的BCD碼相加后的結果進行校正,以產生正確的BCD碼相加的和。

AAA十進制數加法調整指令格式為:AAA;B該指令為ASCII碼十進制數加法調整指令,對在AL中的兩個非組合的ASCII碼相加后的結果進行校正,以產生正確的非組合的ASCII碼相加的和。(2)減法運算

SUB減法運算指令格式為:SUBOPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1-OPRD2該指令完成兩個操作數相加,結果送到目標操作數。

SBB減法運算指令格式為:ADCOPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1-OPRD2-CF該指令與SUB類似,不同之處只是在兩個操作數相減時,要把減去進位標志CF的值,結果送到目標操作數。

DEC減量指令格式為:DECOPRD;B/W

執行操作:OPRD

OPRD-1該指令是將操作數的值減1,再將結果送回到此操作數。

NEG取補指令格式為:NEGOPRD;B/W執行操作:OPRD0-OPRD

該指令將指令中給出的操作數取補,再將結果送回。

CMP比較指令格式為:CMPOPRD1,OPRD2

執行操作:(OPRD1)(OPRD1)該指令完成兩個操作數相減,結果反映在標志位,并不回送任何操作數。它的執行結果影響標志位AF、CF、OF、PF、SF和ZF。通常在該指令后面跟一條條件轉移指令,檢查標志位的狀態以決定程序的轉向。

DAS十進制數減法調整指令格式為:DAS;B該指令為BCD碼十進制數減法調整指令,對在AL中的兩個組合的BCD碼相減后的結果進行校正,以產生正確的BCD碼相減的差。

AAS十進制數減法調整指令格式為:AAS;B該指令為ASCII碼十進制數減法調整指令,對在AL中的兩個非組合的ASCII碼相減后的結果進行校正,以產生正確的非組合的ASCII碼相減的差。(3)乘法運算

MUL無符號數的乘法指令格式為:MULOPRD;B/W

IMUL帶符號數的乘法指令格式為:IMULOPRD;B/WAAMASCII碼十進制乘法調整指令格式為:AAM(4)除法運算

DIV無符號數的除法指令格式為:DIVOPRD;B/W

IDIV帶符號數的除法指令格式為:IMULOPRD;B/WAADASCII碼十進制除法調整指令格式為:AADCBW將帶符號的字節數據擴展為字數據的指令格式為:CBW

CWD將帶符號的字節數據擴展為雙字數據的指令格式為:CWD

3.位處理指令模式系統8086指令系統提供了三組字節和字的位處理指令,分別為:邏輯運算指令、移位指令和循環移位指令。(1)邏輯運算指令

NOT取反指令格式為:NOT;B/W

執行操作:OPRD

OPRD的反碼該指令對源操作數各位取反,形成反碼,常用于將某個數據先變成反碼,再加上1,便得到補碼。

AND相“與”指令格式為:ANDOPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1^OPRD2該指令對兩個操作數進行按位邏輯“與”操作,結果送回目的操作數。

OR相“或”指令格式為:OROPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1^OPRD2該指令對兩個操作數進行按位邏輯“或”操作,結果送回目的操作數。

XOR相“異或”指令格式為:XOROPRD1,OPRD2;B/W

執行操作:OPRD1

OPRD1^OPRD2該指令對兩個操作數進行按位邏輯“異或”運算,結果送回目的操作數。

TEST檢測指令格式為:TESTOPRD1,OPRD2;B/W

執行操作:OPRD1^OPRD2該指令對兩個操作數進行按位邏輯“與”操作,修改標志,但不回送結果,即執行該指令后,兩個操作數都不變。(2)移位指令

SAL/SHL左移指令格式為:SAL/SHLOPRD,CNT;B/W

SAL和SHL這兩條指令的功能完全一樣,實際上是同一條指令,實現對字節或字中各位進行左移,右端補零,左移的位數由計數值CNT規定。

SHR右移指令格式為:SHROPRD,CNT;B/WSHR指令對操作數(字或字節)中各位進行右移,右移位數由計數值CNT規定。執行一次移位,操作數右移移位,最低位進入標志CF,最高位補0,進位位CF的原來值丟失。

SAR右移指令格式為:SAROPRD,CNT;B/WSAR指令對操作數(字或字節)中各位進行右移,右移位數由計數值CNT規定。執行一次移位,操作數右移移位,最低位進入標志CF,最高位保持不變,進位位CF的原來值丟失。(3)循環移位指令ROL循環左移指令格式為:ROLOPRD,CNT;B/W

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論