微機(jī)原理第三章指令系統(tǒng)_第1頁(yè)
微機(jī)原理第三章指令系統(tǒng)_第2頁(yè)
微機(jī)原理第三章指令系統(tǒng)_第3頁(yè)
微機(jī)原理第三章指令系統(tǒng)_第4頁(yè)
微機(jī)原理第三章指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

8086指令系統(tǒng)的特點(diǎn)

★8086的尋址方式

★8086指令系統(tǒng)

第三章8086的指令系統(tǒng)

1.

指令系統(tǒng)的兼容性

2.

靈活的指令格式

3.

指令的尋址能力和數(shù)據(jù)存取能力強(qiáng)4.具有處理多種類(lèi)型數(shù)據(jù)的能力5.便于構(gòu)成多處理機(jī)系統(tǒng)一、8086指令系統(tǒng)的特點(diǎn)

有效地址EA(EffectiveAddress)

尋址方式

8086的指令格式及數(shù)據(jù)類(lèi)型二、8086的尋址方式

1.有效地址EA(EffectiveAddress)

當(dāng)8086CPU的執(zhí)行部件EU需要讀/寫(xiě)存儲(chǔ)器操作數(shù)時(shí),它必須把一個(gè)偏移地址送給總線(xiàn)接口部件BIU。BIU把這個(gè)偏移地址和段地址的首址相加,產(chǎn)生20位物理地址,然后執(zhí)行存取操作數(shù)所需的總線(xiàn)周期。尋址所需的偏移地址即為有效地址,用EA表示。它是一個(gè)16位的無(wú)符號(hào)數(shù),代表被尋址的操作數(shù)在存儲(chǔ)器中的位置距離該段起點(diǎn)的字節(jié)數(shù)。如圖所示:

2.尋址方式

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

操作數(shù)作為立即數(shù)直接存在指令中,可為字節(jié)、字、雙字。例:

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

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

MOVAX,BX

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

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

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

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

操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器的內(nèi)容再加上指令中指定的8位或16位位移量之和?;芳幼冎穼ぶ分饕糜诙S數(shù)組操作和二重循環(huán)。例:

MOVAX,[BX+SI]MOVEAX,[EDX+EBP](8)串尋址串尋址訪(fǎng)問(wèn)的操作數(shù),不能用通常的存儲(chǔ)器尋址方式,而是隱含地運(yùn)用變址寄存器。當(dāng)執(zhí)行串命令時(shí),設(shè)定SI指向源字符串的第一個(gè)字節(jié)或字,DI指向目的字符串的第一個(gè)字節(jié)或字,且目的字符串必須存放在附加段中。在重復(fù)操作中,CPU自動(dòng)地調(diào)整SI和DI的內(nèi)容,以獲得后續(xù)的字節(jié)或字。

3.8086的指令格式及數(shù)據(jù)類(lèi)型

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

數(shù)據(jù)傳送指令

算術(shù)運(yùn)算指令

位處理指令模式系統(tǒng)★串操作指令

★程序控制轉(zhuǎn)移指令三、8086指令系統(tǒng)

1.數(shù)據(jù)傳送指令

數(shù)據(jù)傳送指令負(fù)責(zé)把數(shù)據(jù)、地址傳送到寄存器或存儲(chǔ)單元中,以及實(shí)現(xiàn)存儲(chǔ)器和寄存器、寄存器之間、寄存器AL和AX與I/O端口之間的字節(jié)或字的傳送。它可分為以下四類(lèi):通用數(shù)據(jù)傳送、累加器專(zhuān)用傳送(輸入/輸出數(shù)據(jù)傳送)、目標(biāo)地址傳送和標(biāo)志寄存器傳送。(1)通用數(shù)據(jù)傳送

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

執(zhí)行操作:(OPRD1)(OPRD1)該指令把一個(gè)字節(jié)或字操作數(shù)從源傳送到目的,能實(shí)現(xiàn)CPU內(nèi)部寄存器之間的數(shù)據(jù)傳送、寄存器與存儲(chǔ)器之間的數(shù)據(jù)傳送、立即數(shù)傳送到CPU內(nèi)部通用寄存器和存儲(chǔ)器。但要注意以下幾點(diǎn):1)寄存器不能為IP;2)允許用段寄存器作為一個(gè)目的操作數(shù)時(shí),不允許用CS段寄存器;3)MOV指令的目的操作數(shù)不允許用立即數(shù)方式;4)不允許兩個(gè)段寄存器之間直接傳送信息;5)不允許用MOV指令在兩個(gè)存儲(chǔ)單元之間直接傳送數(shù)據(jù),而應(yīng)間接通過(guò)CPU內(nèi)部寄存器來(lái)實(shí)現(xiàn)。

PUSH進(jìn)棧指令格式為:PUSH

OPRD

執(zhí)行操作:SPSP-2該指令把一個(gè)字操作數(shù)從源傳送到堆棧的頂部。常用于在調(diào)用過(guò)程前把參數(shù)入棧,16位寄存器(包括段寄存器)、存儲(chǔ)器單元的內(nèi)容都可入棧。

POP出棧指令格式為:POP

OPRD

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

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

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

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

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

該指令把一個(gè)字節(jié)或字由輸入端口傳送到AL或AX,端口地址由指令中的PORT或者DX規(guī)定。若由PORT所規(guī)定可尋址256個(gè)端口;若由DX所規(guī)定可尋址64K個(gè)端口。當(dāng)端口號(hào)大于256時(shí),只能使用短格式,但必須先把端口號(hào)放到DX寄存器中。

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

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

XLAT換碼指令格式為:XLAT

OPRD

執(zhí)行操作:AL(BX+AL)該指令完成一個(gè)字節(jié)的查表轉(zhuǎn)換。(3)目標(biāo)地址傳送LEA有效地址送寄存器指令格式為:LEA

r,src

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

r,src

執(zhí)行操作:r(EA)DS(EA+2);DW該指令把源操作數(shù)的連續(xù)四個(gè)字節(jié)(目標(biāo)指針,包括一個(gè)段地址和一個(gè)地址偏移量)的雙字存儲(chǔ)器傳送到一對(duì)目的寄存器。LES指針裝入寄存器和ES指令格式為:LES

r,src

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

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

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

執(zhí)行操作:SPSP-2;(SP+1,SP)Flag該指令把整個(gè)標(biāo)志寄存器推入堆棧保存,同時(shí)修改堆棧指針。這條指令對(duì)標(biāo)志位沒(méi)有影響。POPF標(biāo)志進(jìn)棧指令格式為:POPF

執(zhí)行操作:Flag(SP+1,SP);SPSP+2該指令把現(xiàn)行堆棧指針?biāo)敢粋€(gè)字傳送給標(biāo)志寄存器,同時(shí)相應(yīng)地修改堆棧指針。這條指令執(zhí)行后,8086的標(biāo)志位取決于原堆棧頂部的內(nèi)容。2.算術(shù)運(yùn)算指令8086以多種形式提供4種基本的算術(shù)運(yùn)算,可用于字節(jié)(8位)或字(16位)的帶符號(hào)或不帶符號(hào)的運(yùn)算。若是帶符號(hào)運(yùn)算,則用補(bǔ)碼表示。(1)加法運(yùn)算

ADD加法運(yùn)算指令格式為:ADDOPRD1,OPRD2;B/W

執(zhí)行操作:OPRD1

OPRD1+OPRD2該指令完成兩個(gè)操作數(shù)相加,結(jié)果送到目標(biāo)操作數(shù)。

ADC加法運(yùn)算指令格式為:ADCOPRD1,OPRD2;B/W

執(zhí)行操作:OPRD1

OPRD1+OPRD2該指令與ADD類(lèi)似,不同之處只是在兩個(gè)操作數(shù)相加時(shí),要把進(jìn)位標(biāo)志CF的現(xiàn)行值加上去,結(jié)果送到目標(biāo)操作數(shù)。

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

執(zhí)行操作:OPRD

OPRD+1該指令是使操作數(shù)的內(nèi)容加1,然后把結(jié)果送回到此操作數(shù)。

DAA十進(jìn)制數(shù)加法調(diào)整指令格式為:DAA;B該指令為BCD碼十進(jìn)制數(shù)加法調(diào)整指令,對(duì)在A(yíng)L中的兩個(gè)組合的BCD碼相加后的結(jié)果進(jìn)行校正,以產(chǎn)生正確的BCD碼相加的和。

AAA十進(jìn)制數(shù)加法調(diào)整指令格式為:AAA;B該指令為ASCII碼十進(jìn)制數(shù)加法調(diào)整指令,對(duì)在A(yíng)L中的兩個(gè)非組合的ASCII碼相加后的結(jié)果進(jìn)行校正,以產(chǎn)生正確的非組合的ASCII碼相加的和。(2)減法運(yùn)算

SUB減法運(yùn)算指令格式為:SUBOPRD1,OPRD2;B/W

執(zhí)行操作:OPRD1

OPRD1-OPRD2該指令完成兩個(gè)操作數(shù)相加,結(jié)果送到目標(biāo)操作數(shù)。

SBB減法運(yùn)算指令格式為:ADCOPRD1,OPRD2;B/W

執(zhí)行操作:OPRD1

OPRD1-OPRD2-CF該指令與SUB類(lèi)似,不同之處只是在兩個(gè)操作數(shù)相減時(shí),要把減去進(jìn)位標(biāo)志CF的值,結(jié)果送到目標(biāo)操作數(shù)。

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

執(zhí)行操作:OPRD

OPRD-1該指令是將操作數(shù)的值減1,再將結(jié)果送回到此操作數(shù)。

NEG取補(bǔ)指令格式為:NEGOPRD;B/W執(zhí)行操作:OPRD0-OPRD

該指令將指令中給出的操作數(shù)取補(bǔ),再將結(jié)果送回。

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

執(zhí)行操作:(OPRD1)(OPRD1)該指令完成兩個(gè)操作數(shù)相減,結(jié)果反映在標(biāo)志位,并不回送任何操作數(shù)。它的執(zhí)行結(jié)果影響標(biāo)志位AF、CF、OF、PF、SF和ZF。通常在該指令后面跟一條條件轉(zhuǎn)移指令,檢查標(biāo)志位的狀態(tài)以決定程序的轉(zhuǎn)向。

DAS十進(jìn)制數(shù)減法調(diào)整指令格式為:DAS;B該指令為BCD碼十進(jìn)制數(shù)減法調(diào)整指令,對(duì)在A(yíng)L中的兩個(gè)組合的BCD碼相減后的結(jié)果進(jìn)行校正,以產(chǎn)生正確的BCD碼相減的差。

AAS十進(jìn)制數(shù)減法調(diào)整指令格式為:AAS;B該指令為ASCII碼十進(jìn)制數(shù)減法調(diào)整指令,對(duì)在A(yíng)L中的兩個(gè)非組合的ASCII碼相減后的結(jié)果進(jìn)行校正,以產(chǎn)生正確的非組合的ASCII碼相減的差。(3)乘法運(yùn)算

MUL無(wú)符號(hào)數(shù)的乘法指令格式為:MULOPRD;B/W

IMUL帶符號(hào)數(shù)的乘法指令格式為:IMULOPRD;B/WAAMASCII碼十進(jìn)制乘法調(diào)整指令格式為:AAM(4)除法運(yùn)算

DIV無(wú)符號(hào)數(shù)的除法指令格式為:DIVOPRD;B/W

IDIV帶符號(hào)數(shù)的除法指令格式為:IMULOPRD;B/WAADASCII碼十進(jìn)制除法調(diào)整指令格式為:AADCBW將帶符號(hào)的字節(jié)數(shù)據(jù)擴(kuò)展為字?jǐn)?shù)據(jù)的指令格式為:CBW

CWD將帶符號(hào)的字節(jié)數(shù)據(jù)擴(kuò)展為雙字?jǐn)?shù)據(jù)的指令格式為:CWD

3.位處理指令模式系統(tǒng)8086指令系統(tǒng)提供了三組字節(jié)和字的位處理指令,分別為:邏輯運(yùn)算指令、移位指令和循環(huán)移位指令。(1)邏輯運(yùn)算指令

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

執(zhí)行操作:OPRD

OPRD的反碼該指令對(duì)源操作數(shù)各位取反,形成反碼,常用于將某個(gè)數(shù)據(jù)先變成反碼,再加上1,便得到補(bǔ)碼。

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

執(zhí)行操作:OPRD1

OPRD1^OPRD2該指令對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作,結(jié)果送回目的操作數(shù)。

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

執(zhí)行操作:OPRD1

OPRD1^OPRD2該指令對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“或”操作,結(jié)果送回目的操作數(shù)。

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

執(zhí)行操作:OPRD1

OPRD1^OPRD2該指令對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“異或”運(yùn)算,結(jié)果送回目的操作數(shù)。

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

執(zhí)行操作:OPRD1^OPRD2該指令對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作,修改標(biāo)志,但不回送結(jié)果,即執(zhí)行該指令后,兩個(gè)操作數(shù)都不變。(2)移位指令

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

SAL和SHL這兩條指令的功能完全一樣,實(shí)際上是同一條指令,實(shí)現(xiàn)對(duì)字節(jié)或字中各位進(jìn)行左移,右端補(bǔ)零,左移的位數(shù)由計(jì)數(shù)值CNT規(guī)定。

SHR右移指令格式為:SHROPRD,CNT;B/WSHR指令對(duì)操作數(shù)(字或字節(jié))中各位進(jìn)行右移,右移位數(shù)由計(jì)數(shù)值CNT規(guī)定。執(zhí)行一次移位,操作數(shù)右移移位,最低位進(jìn)入標(biāo)志CF,最高位補(bǔ)0,進(jìn)位位CF的原來(lái)值丟失。

SAR右移指令格式為:SAROPRD,CNT;B/WSAR指令對(duì)操作數(shù)(字或字節(jié))中各位進(jìn)行右移,右移位數(shù)由計(jì)數(shù)值CNT規(guī)定。執(zhí)行一次移位,操作數(shù)右移移位,最低位進(jìn)入標(biāo)志CF,最高位保持不變,進(jìn)位位CF的原來(lái)值丟失。(3)循環(huán)移位指令ROL循環(huán)左移指令格式為:ROLOPRD,CNT;B/W

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論