《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱_第1頁
《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱_第2頁
《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱_第3頁
《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱_第4頁
《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《計(jì)算機(jī)接口技術(shù)與應(yīng)用》復(fù)習(xí)提綱

第一?二章概述

一、微機(jī)組成原理(了解)

二、計(jì)算機(jī)中的數(shù)制

1、無符號數(shù)的表示方法:

(1)十進(jìn)制計(jì)數(shù)的表示法

(2)二進(jìn)制計(jì)數(shù)表示方法:

(3)十六進(jìn)制數(shù)的表示法:

2、各種數(shù)制之間的轉(zhuǎn)換

(1)非十進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換

按相應(yīng)進(jìn)位計(jì)數(shù)制的權(quán)表達(dá)式綻開,再按十法制求和。

(2)十進(jìn)制數(shù)制轉(zhuǎn)換為二進(jìn)制數(shù)制

?十進(jìn)制一二進(jìn)制的轉(zhuǎn)換:

整數(shù)部分:除2取余:

小數(shù)部分:乘2取整。

?十進(jìn)制一十六進(jìn)制的轉(zhuǎn)換:

整數(shù)部分:除16取余;

小數(shù)部分:乘16取整。

以小數(shù)點(diǎn)為起點(diǎn)求得整數(shù)和小數(shù)的各個(gè)位。

(3)二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換

用4位二進(jìn)制數(shù)表示1位十六進(jìn)制數(shù)

3、無符號數(shù)二進(jìn)制的運(yùn)算

4、二進(jìn)制數(shù)的邏輯運(yùn)算

特點(diǎn):按位運(yùn)算,無進(jìn)借位

(1)與運(yùn)算

只有A、B變量皆為1時(shí),與運(yùn)算的結(jié)果就是1

(2)或運(yùn)算

A、B變量中,只要有一個(gè)為1,或運(yùn)算的結(jié)果就是1

(3)非運(yùn)算

(4)異或運(yùn)算

A、B兩個(gè)變量只要不同,異或運(yùn)算的結(jié)果就是1

二、計(jì)算機(jī)中的碼制

I、對于符號數(shù),機(jī)器數(shù)常用的表示方法有原碼、反碼和補(bǔ)碼三種。數(shù)X的原碼記作

因原,反碼記作[X]反,補(bǔ)碼記作[X]補(bǔ)。

對正數(shù),三種表示法均相同,它們的差別在于對負(fù)數(shù)的表示。

(1)原碼

定義:

符號位:0表示正,1表示負(fù);

數(shù)值位:真值的確定值。

數(shù)0的原碼不唯一

(2)反碼

定義:

若X>0,則兇反刁X]原

若X<0,則[X]反二對應(yīng)原碼的符號位不變,數(shù)值部分按位求反

數(shù)0的反碼也不唯一

(3)補(bǔ)碼

定義:

若X>0,則壯>補(bǔ)=[為反=區(qū)]原

若XvO,則兇補(bǔ)二兇反+1

注:機(jī)器字長為8時(shí),數(shù)0的補(bǔ)碼唯一,同為0000000。

2、8位二進(jìn)制的表示范圍:

原碼:-127?+127

反碼:-127-+127

補(bǔ)碼:-128?+127

3、特別數(shù)10000000

該數(shù)在原碼中定義為:-0

在反碼中定義為:-127

在補(bǔ)碼中定義為:-128

對無符號數(shù):(10000000)2=128

4、補(bǔ)碼加減運(yùn)算規(guī)則

[X]補(bǔ)+[丫]補(bǔ)=乎+丫]補(bǔ)

[X]補(bǔ)一[丫]補(bǔ)=[崗補(bǔ)+[—丫]補(bǔ)=平一丫]補(bǔ)

5、BCD碼:十進(jìn)制數(shù)的二進(jìn)制數(shù)編碼

用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù)。有兩種表示法:

(1)壓縮BCD碼的每一位用4位二進(jìn)制表示,0000~1001表示0?9,一個(gè)字節(jié)

表示兩位十進(jìn)制數(shù)。

(2)非壓縮BCD碼用一個(gè)字節(jié)表示一位十進(jìn)制數(shù),高4位總是0000,低4位的

0000?1001表示0?9

6、ASCII碼:接受7位二進(jìn)制代碼對字符進(jìn)行編碼

(1)數(shù)字0?9的編碼是0110000~0111001,它們的高3位均是011,后4位正好

與其對應(yīng)的二進(jìn)制代碼(BCD碼)相符。

(2)英文字母A-Z的ASCH碼從1OOOOO1(41H)起先依次遞增,字母a~z的

ASCII碼從1100001(61H)起先依次遞增,這樣的排列對信息檢索特別有利。

(3)編程時(shí)常用a、b、c來表示a、b、c的ASCH碼(61H、62H、63H),

增加可讀性。

第三章8086/8088微處理器及其系統(tǒng)

第一節(jié)8086/8088微處理器

1、8086是一種單片微處理芯片,其內(nèi)部數(shù)據(jù)總線的寬度是16位,外部數(shù)據(jù)總線寬度也

是16位(8088為8位),片內(nèi)包含有限制計(jì)算機(jī)全部功能的各種電路。

三總線(AB、DB、CB)的方向和寬度:8086/8088地址總線的寬度為20位,有1MB

(22。)的存儲(chǔ)器尋址空間和64KB(216)I/O端口尋址空間。

2、8086CPU由總線接口部件BIU和執(zhí)行部件EU組成。

BIU和EU的操作是異步的,為8086取指令和執(zhí)行指令的并行操作體系硬件支持。

3、8086處理器寄存器結(jié)構(gòu)

?8086微處理器包含有13個(gè)16位的寄存器和9位標(biāo)記位。

?4個(gè)通用寄存器(AX,BX,CX,DX)

?4個(gè)段寄存器(CS,DS,SS,ES)

?4個(gè)指針和變址寄存器(SP,BP,SI,DI)

?指令指針(IP)

1)通用寄存器

(1)8086含4個(gè)16位數(shù)據(jù)寄存器,它們又可分為8個(gè)8位寄存器,即:

AXfAH,AL

BXfBH,BL

CX-CH,CL

DX-DH,DL

常用來存放參與運(yùn)算的操作數(shù)或運(yùn)算結(jié)果

(2)數(shù)據(jù)寄存器特有的習(xí)慣用法

AX:累加器。多用于存放中間運(yùn)算結(jié)果。全部I/O指令必需都通過AX與接

口傳送信息;

BX:基址寄存器。在間接尋址中用于存放基地址;CX:

計(jì)數(shù)寄存器。用于在循環(huán)或串操作指令中存放循環(huán)次數(shù)或重復(fù)次數(shù);DX:

數(shù)據(jù)寄存器。在32位乘除法運(yùn)算時(shí),存放高16位數(shù);在間接尋址的

I/O指令中存放I/O端口地址。

2)指針和變址寄存器

SP:堆棧指針寄存器,其內(nèi)容為棧頂?shù)钠频刂?;BP:

基址指針寄存器,常用于在訪問內(nèi)存時(shí)存放內(nèi)存單元的偏移地址。SI:

源變址寄存器

DI:目標(biāo)變址寄存器

變址寄存器常用于指令的間接尋址或變址尋址。

3)段寄存器

CS:代碼段寄存器,代碼段用于存放指令代碼DS:

數(shù)據(jù)段寄存器,存放當(dāng)前程序的數(shù)據(jù)ES:附加

段寄存器,數(shù)據(jù)段和附加段用來存放操作數(shù)SS:堆棧段寄

存器,堆棧段用于存放返回地址,保存寄存器內(nèi)容,傳遞參數(shù)

4)指令指針(IP)

16位指令指針寄存器,其內(nèi)容為下一條要執(zhí)行的指令的偏移地址。

5)標(biāo)記寄存器

(1)狀態(tài)標(biāo)記:

進(jìn)位標(biāo)記位(CF):運(yùn)算結(jié)果的最高位有進(jìn)位或有借位,則CF=1幫

助進(jìn)位標(biāo)記位(AF):運(yùn)算結(jié)果的低四位有進(jìn)位或借位,則AF=1溢

出標(biāo)記位(OF):運(yùn)算結(jié)果有溢出,則OF=1

零標(biāo)記位(ZF):反映指令的執(zhí)行是否產(chǎn)生一個(gè)為零的結(jié)果

符號標(biāo)記位(SF):指出該指令的執(zhí)行是否產(chǎn)生一個(gè)負(fù)的結(jié)果

奇偶標(biāo)記位(PF):表示指令運(yùn)算結(jié)果的低8位“1”個(gè)數(shù)是否為偶數(shù)

(2)限制標(biāo)記位

中斷允許標(biāo)記位(IF):表示CPU是否能夠響應(yīng)外部可屏蔽中斷請求

跟蹤標(biāo)記(TF):CPU單步執(zhí)行

4、8086/8088的最小/最大運(yùn)行方式

?當(dāng)MN/MX*接電源電壓時(shí),系統(tǒng)工作于最小方式。

?當(dāng)MN/MX*線接地,系統(tǒng)就工作于最大方式。

?最小工作模式用于單機(jī)系統(tǒng),系統(tǒng)中全部總線限制信號全部由8086干脆供應(yīng),因

此系統(tǒng)中的總線限制電路可減到最少;最大工作模式用于多處理機(jī)系統(tǒng),8086作

為主處理器,其它的處理器為協(xié)處理器,扶植主處理器工作。在最大工作模式下,

系統(tǒng)所須要的限制信號均由總線限制器8288供應(yīng)。通過8288對CPU發(fā)出的限制

信號進(jìn)行變換和組合,以得到對存儲(chǔ)器和I/O端口的讀/寫信號和對鎖存器8282

及對總線收發(fā)器8286的限制信號,使總線限制功能更加完善。

5、8086的引腳及其功能

?ADI5?AD0:雙向三態(tài)的地址數(shù)據(jù)總線,輸入/輸出信號

?BHE*:8086的BHE/S7引腳有效時(shí),表示總線高8位AD15-AD8上的數(shù)據(jù)有效。

在8088最小方式時(shí)為SS。*;在最大方式時(shí)恒為高電平。

?M/IO*(IO/M*):存儲(chǔ)器/IO訪問有效信號。對于8086,高電平表示訪問存儲(chǔ)器,

低電平訪問I/O外設(shè);8088相反。

?ALE:地址鎖存允許信號,輸出,用作鎖存器8282/8283的鎖存允許信號。

?RD*、WR*:讀寫限制信號,輸出。

?DEN*:數(shù)據(jù)允許,輸出,低電平有效。作為總線收發(fā)器(8286/8287)的限制信號。

?DT/R*:數(shù)據(jù)發(fā)送/接收限制,輸出,作為總線收發(fā)器(8286/8287)的限制信號。

?INTR:可屏蔽中斷請求輸入信號,高電平有效??赏ㄟ^設(shè)置IF的值來限制。

?NMI:非屏蔽中斷輸入信號。不能用軟件進(jìn)行屏蔽。

?RESET:復(fù)位輸入信號,高電平有效。

?MN/MX*:最小最大模式輸入限制信號。

?CLK:系統(tǒng)時(shí)鐘輸入。

6、8086/8088的區(qū)分

?8088的指令隊(duì)列長度為4個(gè)字節(jié),8086為6個(gè)字節(jié)

?8088的地址/數(shù)據(jù)復(fù)用線為8條,即AD7~AD。,8086為16條,即AD15?ADO

?8088中的存儲(chǔ)器/IO限制線為IO/M*(28腳),與8086相反

?8086的引腳BHE*/S7在8088中為SSO*(34腳),與DT/R*(27腳)、IO/M*(28

腳)一起確定最小模式中的總線周期操作

第三節(jié)存儲(chǔ)器

1、8086/8088存儲(chǔ)器的結(jié)構(gòu)

(1)8086CPU具有1MB的尋址實(shí)力,運(yùn)用20根地址線A19-A0,數(shù)據(jù)總線為16位

DI5?DO。系統(tǒng)的IMB存儲(chǔ)器分為兩個(gè)512KB的存儲(chǔ)體。一個(gè)為奇地址存儲(chǔ)體,一個(gè)為

偶地址存儲(chǔ)體。

(2)當(dāng)進(jìn)行16位數(shù)據(jù)操作時(shí),若數(shù)據(jù)的低8位放在偶地址存儲(chǔ)體中,而高8位放在

奇地址存儲(chǔ)體中,則在一個(gè)總線周期內(nèi)完成數(shù)據(jù)的傳送。反之,則須要兩個(gè)總線周期才能

完成該數(shù)據(jù)的傳送。

2、堆棧(基本構(gòu)成規(guī)則和用途)

8086/8088系統(tǒng)中的堆棧是用段定義語句在存儲(chǔ)器中定義的一個(gè)堆棧段,一個(gè)系統(tǒng)具

有的堆棧數(shù)目不受限制,一個(gè)棧的深度最大為64KB。堆棧由堆棧段寄存器SS和堆棧指針

SP來尋址,SS:SP指向棧頂(地址較小的一端)。

堆棧的操作均以字為單位遵循“后進(jìn)先出”的原則進(jìn)行。

堆棧主要用來實(shí)現(xiàn)子程序調(diào)用參數(shù)傳遞、中斷現(xiàn)場愛惜、寄存器賦值等。

3、“段加偏移”尋址機(jī)制(駕馭物理地址與邏輯地址間的換算關(guān)系)

?物理地址=(段地址)左移4位+偏移地址(或稱為“有效地址”或“偏移量”)

?“段跨越前綴”物理地址的表示方法:段地址:偏移地址(每個(gè)段內(nèi)空間64KB)

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

第一節(jié)8086尋址方式

一、數(shù)據(jù)尋址方式

1、固定尋址

有些單字節(jié)指令其操作是規(guī)定CPU對某個(gè)固定的寄存器進(jìn)行的。

如:

規(guī)定被調(diào)整的數(shù)總是位于/L中

2、立刻尋址

操作數(shù)(為一常數(shù))干脆由指令給出

(此操作數(shù)稱為立刻數(shù))

立刻尋址只能用于源操作數(shù)

例:

MOVAX,1C8FH

MOVBYTEPTR[2A00H],8FH

錯(cuò)誤例:

xMOV2AOOH.AX,?錯(cuò)誤!

指令操作例:MOVAX,3102H;AX-?3102H

執(zhí)行后,(AH)二行H,(AL)=02H

3、寄存器尋址

(1)操作數(shù)放在某個(gè)寄存器中

(2)源操作數(shù)與目的操作數(shù)字長要相同

(3)寄存器尋址與段地址無關(guān)

例:

MOVAX,BX

MOV[3F00H],AX

MOVCL,AL

錯(cuò)誤例:

xMOVAX,BL;字長不同

;寄存器與段無關(guān)

XMC)yES:AXfDX

4、存儲(chǔ)器尋址:干脆尋址

(1)指令中干脆給出操作數(shù)的16位偏移地址偏移地址也稱為有效地址(EA,Effective

Address)

(2)默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱為段超越前綴

(3)偏移地址也可用符號地址來表示

例:

MOVAX/2A00H]

MOVDX,ES:/2A00H]

MOV

5、存儲(chǔ)器尋址:間接尋址

?基址尋址

操作數(shù)的偏移地址(有效地址EA)由基址寄存器(BX、BP)內(nèi)容及偏移量定

?變址尋址

操作數(shù)的偏移地址由變址寄存器(SI、DI)內(nèi)容及偏移量定

例:MOVAXJBX1

MOVCL,CS:[DI]

錯(cuò)誤例:xMOVAX,[DX]

xMOVCL,[AX]

MOVAX,|BX+8|

MOVCX,TABLE[SI]

MOVAX,[BP|;默認(rèn)段寄存器為SS

□MOVAX,DATA[BX]

若(DS)二6000H,(BX)=1DOOH,DATA=2A00H,

(63A00H)=66H,(63AOIH)=55H

則物理地址=60000H+1000H+2A00H=63A00H

指令執(zhí)行后:(AX)=5566H

?基址力口變址尋址

操作數(shù)的偏移地址由基址寄存器和變址寄存器及偏移量定

留意:除了有段跨越前綴的狀況外,當(dāng)基址寄存器為BX時(shí),操作數(shù)應(yīng)當(dāng)存放在數(shù)據(jù)段DS

中,當(dāng)基址寄存器為BP時(shí),操作數(shù)應(yīng)放在堆棧段SS中。例:

MOVAX,IBXJ[SI]

MOVAX,[BX+SIJ

MOVAX,DS:[BP][DI]

錯(cuò)誤例:

XMOVAX,[BX][BP]

xMOVAX,[DI][SI]

指令操作舉例:MOVAX,DATA[DI][BX]

^(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H

則指令執(zhí)行后(AH)=|8302IH],(AL)=|83020H]

6、串操作指令尋址

?隱含SI/DI寄存器尋址

如:REPMOVSB;字節(jié)傳送;ES:[DI]<-DS:[SIJ;

SI-SI±1,DI-DI±I

將由SI作為指針的源串中的1個(gè)字節(jié)或字,傳送到由DI作為指針的目標(biāo)串中,且相

應(yīng)地自動(dòng)修改SI/DL使之指向下一個(gè)元素。假如加上REP前綴,則每傳送一個(gè)元素,

CX自動(dòng)減1,直到cx=o為止。

7、I/O端口尋址

?干脆端口尋址:端口號:0?255

?間接端口尋址:端口號:0-65535,接受DX做中間寄存器

8、轉(zhuǎn)移類尋址

?段內(nèi)短轉(zhuǎn)移

?段內(nèi)干脆轉(zhuǎn)移

?段內(nèi)間接轉(zhuǎn)移

?段間干脆轉(zhuǎn)移

?段間間接轉(zhuǎn)移

其次節(jié)8086指令系統(tǒng)

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

8086/8088接受可變長指令,指令長度為1?6個(gè)字節(jié),有無操作數(shù)、單操作數(shù)和雙

操作數(shù)三種指令類型。

1、通用傳送指令

(1)MOVdesttsrc;dest*-src

傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8位還是16位。

具體來說可實(shí)現(xiàn):

①M(fèi)OVmem/reg1,mem/reg2

指令中兩操作數(shù)中至少有一個(gè)為寄存器

②MOVreg,data;立刻數(shù)送寄存器

③MOVmem,data;立刻數(shù)送存儲(chǔ)單元

@MOVacc,mem;存儲(chǔ)單元送累加器

⑤MOVmem,acc;累加器送存儲(chǔ)單元

⑥MOVsegreg,mem/reg;存儲(chǔ)單元/寄存器送段寄存器

?MOVmem/reg,segreg;段寄存器送存儲(chǔ)單元/寄存器

MOV指令的運(yùn)用規(guī)則

①IP不能作目的寄存器

②不允許mem—mem

③不允許scgrcg<scgrcg

④立刻數(shù)不允許作為目的操作數(shù)

⑤不允許segreg-立刻數(shù)

⑥源操作數(shù)與目的操作數(shù)類型要一樣

⑦當(dāng)源操作數(shù)為單字節(jié)的立刻數(shù),而目的操作數(shù)為間址、變址、基址+變址的內(nèi)存數(shù)時(shí),必

需用PTR說明數(shù)據(jù)類型。如:MOV[BX],12H是錯(cuò)誤的。

2、堆棧指令

什么是堆棧?

按“后進(jìn)先出(LIFO)”方式工作的存儲(chǔ)區(qū)域。堆棧以字為單位進(jìn)行壓入彈出操作。

規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了

所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。

①壓棧指令PUSH

PUSHsrc;src為16位操作數(shù)

例:PUSHAX;將AX內(nèi)容壓棧

執(zhí)行操作:(SP)-1—高字節(jié)AH

(SP)-2一低字節(jié)AL

(SP)—(SP)-2

留意進(jìn)棧方向是高地址向低地址發(fā)展。

②彈出指令POP

POPdest

例:POPBX;將棧頂內(nèi)容彈至BX

執(zhí)行操作:(BL)—(SP)

(BH)―(SP)+1

(SP)―(SP)+2

堆棧指令在運(yùn)用時(shí)需留意的幾點(diǎn):

①堆棧操作總是按字進(jìn)行

②不能從棧頂彈出一個(gè)字給CS

③堆棧指針為SS:SP,SP恒久指向棧頂

@SP自動(dòng)進(jìn)行增減量(-2,+2)

3、交換指令XCHG

格式:XCHGreg,mem/reg

功能:交換兩操作數(shù)的內(nèi)容。

4、查表指令XLAT

執(zhí)行的操作:AL-[(BX)+(AL)]

5、輸入輸出指令

只限于用累加器AL或AX來傳送信息。

功能:(累加器)<-->1/0端口

(1)輸入指令I(lǐng)N

格式:

INacc,PORT;PORT端口號0?255H

INacc,DX;DX表示的端口范圍達(dá)64K

例:INAL,80H;(AL)」(80H端口)

INAL,DX;(AL)一((DX))

(2)輸出指令OUT

格式:OUTport,acc

OUTDX,acc

例:OUT68H,AX;(69H,68H)—(AX)

OUTDX,AL;((DX))*-(AL)

在運(yùn)用間接尋址的IN/OUT指令時(shí),要事先用傳送指令把I/O端口號設(shè)置到DX寄存器

如:

MOVDX,220H

INAL,DX;將220H端口內(nèi)容讀入AL

6、目標(biāo)地址傳送指令

(1)LEA

傳送偏移地址

格式:LEAreg,mem;將指定內(nèi)存單元的偏移地址送到指定寄存器

要求:

源操作數(shù)必需是一個(gè)存儲(chǔ)器操作數(shù);

?目的操作數(shù)必需是一個(gè)16位的通用寄存器。

例:LEABX,[SI+10H]

設(shè)(SI)=1000H

則執(zhí)行該指令后,(BX)=1OIOH

留意以下二條指令差別:

LEABX,BUFFER

MOVBX,BUFFER

前者表示將符號地址為BUFFER的存儲(chǔ)單元的偏移地址取到BX中;后者表示將

BUFFER存儲(chǔ)單元中的內(nèi)容取到BX中。

(2)LDSd,s

取某變量的32位地址指針。從由指令的源s所指定的存儲(chǔ)單元起先,由4個(gè)連續(xù)存

儲(chǔ)單元中取出某變量的地址指針(共4個(gè)字節(jié)),裝入DS和另一個(gè)非段寄存器。其中:

?前兩個(gè)字節(jié)(偏移量)一由指令的目標(biāo)d所指定的某16位通用寄存器

?后兩個(gè)字節(jié)(段基址)一DS段寄存器

例:LDSDI,[2130H]

設(shè)(DS)=3000H,(32130H)=34H,(32131H)=00H,(32I32H)=00H,(32133H)=12H

則(DI)=0034H,(DS)=1200H

(3)LESd,s

與LDSd,s指令的操作基本相同,其區(qū)分僅在于洛把由源所指定的某變量的地址指針

中后2個(gè)字節(jié)(段地址)傳送到ES段寄存器,而不是DS段寄存器。

須要留意:

?LEA是將16位有效地址裝入任何一個(gè)16位通用寄存器

?LDS是將32位地址指針裝入任何一個(gè)16位通用寄存器及DS段寄存器

?LES是將32位地址指針裝入任何一個(gè)16位通用寄存器及ES段寄存器

二、算術(shù)運(yùn)算指令(要特別留意對標(biāo)記位的影響)

1、加法指令

(1)不帶進(jìn)位的加法指令A(yù)DD

格式:ADDacc,data

ADDmem/reg,data

ADDmem/reg1,mem/reg2

實(shí)例:

ADDAL,30H

ADDSL[BX+20H]

ADDCX,SI|DI|,

ADD200H

ADD指令對6個(gè)狀態(tài)標(biāo)記均產(chǎn)生影響。

例:己知(BX尸D75FH

指令A(yù)DDBX.8046H執(zhí)行后,狀態(tài)標(biāo)記各是多少?

D75FH=1110011101011111

8046H=1000000001000110

I11111

0110011110100101

結(jié)果:C=l,Z=0,P=0,A=l,O=l,S=0

推斷溢出與進(jìn)位

從硬件的角度:默認(rèn)參與運(yùn)算的操作數(shù)都是有符號數(shù),當(dāng)兩數(shù)的符號位相同,而和的結(jié)果

相異時(shí)有溢出,則OF=1,否則OF=0

(4)帶進(jìn)位的加法ADC

ADC指令在形式上和功能上與ADD類似,只是相加時(shí)還要包括進(jìn)位標(biāo)記CF的內(nèi)容,例

如:

ADCAL,68H;AL—(AL)+68H+(CF)

ADCAX,CX;AX—(AX)+(CX)+(CF)

ADCBX,[DI];BX<-(BX)+[DI+1][DI]+(CF)

(3)加1指令I(lǐng)NC

格式:INCreg/mem

功能:類似于C語言中的什操作:對指定的操作數(shù)加1

例:INCAL

INCSI

INCBYTEPTR|BX+4]

注:本指令不影響標(biāo)記。比ADOAX,1執(zhí)行效率要高

(4)非壓縮RCD碼加法調(diào)整指令A(yù)AA

AAA指令的操作:

假如AL的低4位>9或AF=1,則:

①AL-(AL)+6,(AH)—(AH)+1,AF-1

②AL高4位清零

③CF—AF

否則AL局4位清零

(5)壓縮BCD碼加法調(diào)整指令DAA

兩個(gè)壓縮BCD碼相加結(jié)果在AL中,通過DAA調(diào)整得到一個(gè)正確的壓縮BCD碼.

指令操作(調(diào)整方法):

若AL的低4位>9或AF=I

則(AL)—(AL)+6,AF-1

若AL的高4位>9或CF=1

則(AL)—(AL)+60H,CF—1

除OF外,DAA指令影響全部其它標(biāo)記。

DAA指令應(yīng)緊跟在或ADC指令之后.

2、減法指令

(1)不考慮借位的減法指令SUB

格式:SUBdest,src

操作:dest<—(dest)-(src)

注:1.源和目的操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)

2.立刻數(shù)不能作為目的操作數(shù)

指令例子:

SUBAL,60H

SUB[BX+20H],DX

SUBAX,CX

(2)考慮借位的減法指令SBB

SBB指令主要用于多字節(jié)的減法。

格式:SBBdest,src

操作:dest<—(dest)-(src)-(CF)

指令例子:

SBBAX,CX

SBBWORDPTR[SI],2080H

SBB[SI],DX

(3)減1指令DEC

作用類似于C語言中的“一一”操作符U

格式:DECopr

操作:opr4—(opr)-l

指令例子:

DECCL

DECBYTEPTR[DI+2]

DECSI注:本指令不影響C尸標(biāo)記。

(4)求補(bǔ)指令NEG

格式:NEGopr

操作:opr—O-(opr)

對一個(gè)操作數(shù)取補(bǔ)碼相當(dāng)于用0減去此操作數(shù),故利用NEG指令可得到負(fù)數(shù)的確定值。

例:若(AL)=0FCH,則執(zhí)行NEGAL后,

(AL)=04H,CF=l

(5)比較指令CMP

格式;CMPdcst,src

操作:(dest)-(src)

CMP也是執(zhí)行兩個(gè)操作數(shù)相減,但結(jié)果不送目標(biāo)操作數(shù),其結(jié)果只反映在標(biāo)記位上。

指令例子:

CMPAL,0AH

CMPCX,SI

CMPDL[BX+03]

(6)非壓縮BCD碼減法調(diào)整指令A(yù)AS

對AL中由兩個(gè)非壓縮的BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:

若AL的低4位>9或AF=1,則:

①AL-(AL)-6,AH-(AH)-1,AF-1

②AL的高4位清零

③CF—AF

否則:AL的高4位清零

(7)壓縮BCD碼減法調(diào)整指令DAS

對AL中由兩個(gè)壓縮BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:

若AL的低4位>9或AF=1,則:

AL—(AL)-6,且AF—1

若AL的高4位>9或CF=1,則:

AL—(AL)-60H,且CF—1

DAS對OF無定義,但影響其余標(biāo)記位。

DAS指令要求跟在減法指令之后。

3、乘法指令

進(jìn)行乘法時(shí):8位*8位-16位乘積

16位*16位-32位乘積

(1)無符號數(shù)的乘法指令MUL(MEM/REG)

格式:MULsrc

操作:字節(jié)操作數(shù)(AX)—(AL)x(src)

字操作數(shù)(DX,AX)—(AX)x(src)

指令例子:

MULBL;(AL)x(BL),乘積在AX中MUL

CX;(AX)x(CX),乘積在DX,AX中

MULBYTEPTR[BXJ

(2)有符號數(shù)乘法指令I(lǐng)MUL

格式與MUL指令類似,只是要求兩操作數(shù)均為仃符號數(shù)。

指令例子:

IMULBL;(AX)—(AL)x(BL)

IMULWORDPTR[SI];

(DX,AX)<-(AX)x([SI+l][SI])

留意:MUL/IMUL指令中

?AL(AX)為隱含的乘數(shù)寄存器;

?AX(DX,AX)為隱含的乘積寄存器;

?SRC不能為立刻數(shù);

?除CF和OF外,對其它標(biāo)記位無定義。

4、除法指令

進(jìn)行除法時(shí):16位/8位一8位商

32位/16位116位商

對被除數(shù)、商及余數(shù)存放有如下規(guī)定:

被除數(shù)商余數(shù)

字節(jié)除法AXALAH

字除法DX:AXAXDX

(1)無符號數(shù)除法指令DIV

格式:DIVsrc

操作:字節(jié)操作(AL)-(AX)/(SRC)的商

(AHWAX)/(SRC)的余數(shù)

字操作(AX)<-(DX,AX)/(SRC)的商

(DX)一(DX,AX)/(SRC)的余數(shù)

指令例子:

DIVCL

DIVWORDPTR[BX]

(2)有符號數(shù)除法指令I(lǐng)DIV

格式:IDIVsrc

操作與DIV類似。商及余數(shù)均為有符號數(shù),且余數(shù)符號總是與被除數(shù)符號相同。

留意:對于DIV/IDIV指令

AX(DX,AX)為隱含的被除數(shù)寄存器。

AL(AX)為隱含的商寄存器。AH(DX)

為隱含的余數(shù)寄存器。

src不能為立刻數(shù)。

對全部條件標(biāo)記位均無定

關(guān)于除法操作中的字長擴(kuò)展問題

?除法運(yùn)算要求被除數(shù)字長是除數(shù)字長的兩倍,若不滿足則需對被除數(shù)進(jìn)行擴(kuò)展.否則產(chǎn)

生錯(cuò)誤。

?對于無符號數(shù)除法擴(kuò)展,只需將AH或DX清零即可。

?對有符號數(shù)而言,則是符號位的擴(kuò)展??蛇\(yùn)用符號擴(kuò)展指令CBW和CWDo

三、邏輯運(yùn)算和移位指令

1、邏輯運(yùn)算指令

(1)邏輯與AND

對兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作。

格式:ANDdest,src

用途:保留操作數(shù)的某幾位,清零其他位。

例1:保留AL中低4位,高4位清0。

ANDAL,0FH

(2)邏輯或OR

對兩個(gè)操作數(shù)進(jìn)行按位邏輯“或“操作。

格式:ORdest,src

用途:對操作數(shù)的某幾位置1:對兩操作數(shù)進(jìn)行組合。

例1:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。

ORAL,3DH

(3)邏輯非NOT

對操作數(shù)進(jìn)行按位邏輯"非“操作。格式:NOTmem/reg

例:NOTCX

NOTBYTEPTRIDI]

(4)邏輯異或XOR

對兩個(gè)操作數(shù)按位進(jìn)行“異或“操作。

格式:XORdest,src

用途:對reg清零(自身異或)

把reg/mem的某幾位變反(與"1"異或)

例1;把AX寄存器清零。

①M(fèi)OVAX,0

②XORAX,AX

③ANDAX,0

@SUBAX,AX

(5)測試指令TEST

操作與AND指令類似,但不將“與"的結(jié)果送回,只影響標(biāo)記位。

TEST指令常用于位測武與條件轉(zhuǎn)移指令一起用。

例:測試AL的內(nèi)容是否為負(fù)數(shù)。

TESTAL,80H;檢查AL中D7=l?

JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS

……;否則為正數(shù)

2、移位指令

(1)非循環(huán)移位指令

算術(shù)左移指令SAL(ShiftArithmeticLeft)

算術(shù)右移指令SAR(ShiftArithmeticRight)

邏輯左移指令SHL(ShiftLeft)

邏輯右移指令SHR(ShiftRight)

這4條指令的格式相同,以SAL為例:

'CL;移位位數(shù)大于1時(shí)

SALmem/reg

1;移位位數(shù)等于1時(shí)

算術(shù)移位——把操作數(shù)看做有符號數(shù);

邏輯移位——把操作數(shù)看做無符號數(shù)。

移位位數(shù)放在CL寄存器中,假如只移1位,也

可以干脆寫在指令中。例如:

MOVCL,4

SHRAL,CL;AL中的內(nèi)容右移4位

影響C,P,S,Z,0標(biāo)記。

結(jié)果未溢出時(shí):

左移1位三操作數(shù)*2

右移1位三操作數(shù)/2

(2)循環(huán)移位指令:將操作數(shù)首尾相接進(jìn)行移位(了解,不做深化要求)

四、限制轉(zhuǎn)移指令

1、轉(zhuǎn)移指令

(1)無條件轉(zhuǎn)移指令JMP

格式:JMPlabel

本指令無條件轉(zhuǎn)移到指定的目標(biāo)地址,以執(zhí)行從該地址起先的程序段。

(2)條件轉(zhuǎn)移指令(補(bǔ)充內(nèi)容)

①依據(jù)單個(gè)標(biāo)記位設(shè)置的條件轉(zhuǎn)移指令

JB/JC;低于,或CF=1,則轉(zhuǎn)移

JNB/JNC/JAE;高于或等于,或CF=O,則轉(zhuǎn)移

JP/JPE;奇偶標(biāo)記PF=1(偶),則轉(zhuǎn)移

JNP/JPO;奇偶標(biāo)記PF=O(奇),則轉(zhuǎn)移

JZ/JE;結(jié)果為零(ZF=1),則轉(zhuǎn)移

JNZ/JNE;結(jié)果不為零(ZF=O),則轉(zhuǎn)移

JS;SF=1,則轉(zhuǎn)移

JNS;SF=O,則轉(zhuǎn)移

JO;OF=1,則轉(zhuǎn)移

JNO;OF=0,則轉(zhuǎn)移

②依據(jù)組合條件設(shè)置的條件轉(zhuǎn)移指令這

類指令主要用來推斷兩個(gè)數(shù)的大小。

?推斷無符號數(shù)的大小

JA高于則轉(zhuǎn)移

條件為:CF=OAZF=O,即A>B

JNA/JBE低于或等于則轉(zhuǎn)移

條件為:CF=IVZF=1,即A<B

JBAvB則轉(zhuǎn)移

JNBANB則轉(zhuǎn)移

?推斷有符號數(shù)的大小

JG;大于則轉(zhuǎn)移(A>B)

條件為:(SF十OF=O)/\ZF=O

JGE;大于或等于則轉(zhuǎn)移(ANB)

條件為:(SF十OF=0)VZF=1JLE;小于或等于則轉(zhuǎn)移(AgB)

條件為:(SF十OF=1)VZF=1

JL;小于則轉(zhuǎn)移(AVB=

條件為:(SF十OF=1)AZF=0

2、循環(huán)限制指令

用在循環(huán)程序中以確定是否要接著循環(huán)。

循環(huán)次數(shù)通常置于CX中。

轉(zhuǎn)移的目標(biāo)應(yīng)在距離本指令-128?+127的范圍之內(nèi)。

循環(huán)限制指令不影響標(biāo)記位。

(1)LOOP

格式:LOOPlabel

操作:(CX)-ITCX;

若(CX)#0,則轉(zhuǎn)至label處執(zhí)行;

否則退出循環(huán),執(zhí)行LOOP后面的指令。

LOOP指令與下面的指令段等價(jià):

DECCX

JNZlabel

3、過程調(diào)用指令

(1)調(diào)用指令CALL

一般格式:CALLsub\sub為子程序的入口

4、中斷指令

(1)INTn執(zhí)行類型n的中斷服務(wù)程序,N=0?255

五、處理器限制指令

1、標(biāo)記位操作

(1)CF設(shè)置指令

CLC0-CFSTC1->CFCMCCF變反

(2)DF設(shè)置指令

CLD0—DF(串操作的指針移動(dòng)方向從低到高)

STD1-DF(串操作的指針移動(dòng)方向從高到低)

(3)IF設(shè)置指令

CLI0-1F(禁止INTR中斷)STI1-IF(開放INTR中斷)

2、HLT(halt)

執(zhí)行HLT指令后,CPU進(jìn)入暫停狀態(tài)。

五、編寫指令時(shí)須要留意幾個(gè)問題

(1)留意區(qū)分立刻尋址方式和干脆尋址方式

如:MOVAX,123;將數(shù)據(jù)123放入AX寄存器中

MOVAX,[123];將數(shù)據(jù)段中123單元內(nèi)容放入AX寄存器中

(2)運(yùn)用寄存器間接尋址時(shí)應(yīng)留意和寄存器尋址方式的區(qū)分

如;MOVAX,BX;將BX中的內(nèi)容放入AX寄存器中

MOVAX,[BX];將BX指示的地址中的內(nèi)容送入AX中

(3)在雙操作數(shù)指令中,源操作數(shù)和目的操作數(shù)地址不能同時(shí)為存儲(chǔ)器地址

(4)段跨越前綴可修改操作數(shù)所在的段,且段跨越前綴不能用CS

如:MOVDL,MESSI[SI];源操作數(shù)地址為:

;(DS)xl6+(SI)+OFFSETMESSI

MOVDL,ES:MESS2[SI1;源操作數(shù)地址為:

;(ES)xl6+(SI)+OFFSETMESS2

(5)代碼段寄存器CS小行用作指令的目的寄存器

(6)指令對地址還是對地址中的內(nèi)容操作要分清

如:LEABX,MESS;(BX)-MESS的偏移地址

MOVBX,MESS;(BX)-MESS的內(nèi)容

(7)運(yùn)用指令時(shí)要留意指令隱含的操作寄存器

如:乘/除法(AX,DX:AX)>串指令的尋址(SKDD、十進(jìn)制調(diào)整指令(AL)

(8)對帶符號數(shù)和無符號數(shù)操作應(yīng)正確選擇相應(yīng)的條件轉(zhuǎn)移指令

(9)移位指令的目標(biāo)操作數(shù)只允許偉8/16位通用寄存器或存儲(chǔ)器操作數(shù),移位的次數(shù)假

如為1,可以寫立刻數(shù);假如>1,則必需事先裝入CL,而不能用立刻數(shù)表示。

(10)用移位指令來倍增或倍減一個(gè)值很便利,但要留意對帶符號數(shù)和無符號數(shù)運(yùn)用的指

令不同。

如(AX)=8520H,(AX)為無符號數(shù)時(shí),(AX)/2可用

SHRAX,1,得到(AX)=4290H,假如(AX)為有符號數(shù),結(jié)果變成了OC290H

(11)留意標(biāo)號與變量(數(shù)據(jù)符號)的區(qū)分

(12)堆棧操作應(yīng)以字為單位進(jìn)行

<13)串操作指令的初始化條件

如:程序改錯(cuò)

?MOVDS,1000H

MOVAX,1000H

MOVDS,AX

?MOVCS,AX

■MOV[100],23H

MOVBYTEPTR[100],23H

MOVAL,CX

MOVAX,CX

?MOV[BX],[SI]

MOVAX,[BX]

MOV[SI],AX

?ADDAX,[BX+BP+6]

ADDAX,[BX1DI16]

?PUSHDL

PUSHDX

■INAX,[3FH]

INAX,3FH

OUT3F8H,AL

MOVDX,03F8H

OUTDX,AL

IMUL4CH

MOVBL,4cH

IMULBL

INT300

?SHLBX,5

MOVCL,5

SHLBX,CL

第四章8。86匯編語言程序設(shè)計(jì)

第一節(jié)偽指令

0、CPU指令與偽指令之間的區(qū)分:

(DCPU指令是給CPU的叮囑,在運(yùn)行時(shí)由CPU執(zhí)行,每條指令對應(yīng)CPU的一種特定

的操作。而偽指令是給匯編程序的叮囑,在匯編過程中由匯編程序進(jìn)行處理。

(2)匯編以后,每條CPU指令產(chǎn)生一一對應(yīng)的目標(biāo)代碼;而偽指令則不產(chǎn)生與之相應(yīng)的

目標(biāo)代碼。

1、數(shù)據(jù)定義偽指令

(1)數(shù)據(jù)定義偽指令的一般格式為:

[變量名]偽指令操作數(shù)[,操作數(shù)…]

DB用來定義字節(jié)(BYTE)

DW用來定義字(WORD)

DD用來定義雙字(DWORD)

(2)操作數(shù)的類型可以是:

①常數(shù)或常數(shù)表達(dá)式

例如:DATA_BYTEDB10,5,10H

DATA_WORDDW100H,100,-4

DATA_DWDD2*30,OHTBU

②可以為字符串(定義字符串最好運(yùn)用DB)

例如:charlDB?ABM

③可以為變量

④可以為?號操作符

例如:XDB5,?,6

?號只是為了給變量保留相應(yīng)的存儲(chǔ)單元,而不賜予變量某個(gè)確定的初值。

⑤重復(fù)次數(shù):NDUP(初值[,初值…])

例如:ZERODB2DUP(3,5)

XYZDB2DUP(0,2DUP(1,3),5)

⑥在偽操作的操作數(shù)字段中若運(yùn)用$,則表示的是地址計(jì)數(shù)器的當(dāng)前值。

2、補(bǔ)充內(nèi)容:

(1)類型PTR地址表達(dá)式例如:MOVBYTEPTR[BX],12H

INCBYTEPTR[BX]

留意:單操作數(shù)指令,當(dāng)操作數(shù)為基址、變址、基變的時(shí)候必需定義

3、符號定義偽指令

(1)EQU

格式:名字EQU表達(dá)式

EQU偽指令將表達(dá)式的值賜予一個(gè)名字,以后可用這個(gè)名字來代替上述表達(dá)式。

例:CONSTANTEQU100

NEW_PORTEQUPORT_VAL+1

(2)=(等號)

與EQU類似,但允許重新定義

例:

I

I

EMP=7;值為7

EMP=EMP+1;值為8

(3)LABEL

LABEL偽指令的用途是定義標(biāo)號或變量的類型

格式:名字LABEL類型

變量的類型可以是BYTE,WORD,DWORDc標(biāo)號的類型可以是NEAR或FAR

4、段定義偽指令

與段有關(guān)的偽指令有:

SEGMENT>ENDS、ASSUME、ORG

(1)段定義偽指令的格式如下:

段名SEGMENT[定位類型][組合類型]「類別"]

I

I

段名ENDS

SEGMENT和ENDS

這兩個(gè)偽指令總是成對出現(xiàn),二者前面的段名一樣。二者之間的刪節(jié)部分,對數(shù)據(jù)段、

附加段及堆棧段,一般是符號、變量定義等偽指令。對于代碼段則是指令及偽指令。此外,

還必需明確段和段寄存器的關(guān)系,這可由ASSUME語句來實(shí)現(xiàn)。

(2)ASSUME

格式:

ASSUME段寄存器名:段名卜段寄存器名:段名[,…]]

ASSUME偽指令告知匯編程序,將某一個(gè)段寄存器設(shè)置為某一個(gè)邏輯段址,即明確指出

源程序中邏輯段與物理段之間的關(guān)系。

(3)ORG

偽指令ORG規(guī)定了段內(nèi)的起始地址或偏移地址,其格式為:

ORG〈表達(dá)式〉

表達(dá)式的值即為段內(nèi)的起始地址或偏移地址,從今地址起連續(xù)存放程序或數(shù)據(jù)。

5、匯編程序的一般結(jié)構(gòu)(記住)

DATASEGMENT

BUFDB100DUP(?)

BUFLEN=$-BUF

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

BGN:MOVAX,DATA

MOVDS,AX

MOVAH,4CH

INT21H

CODEENDS

ENDBGN

第三節(jié)程序設(shè)計(jì)

I、依次程序的設(shè)計(jì)(略)

2、分支程序的設(shè)計(jì)

典型例題:

1X>0

Y=\r

0x二o

i-1X<0

程序?yàn)?

MOVAL,X

CMPAL,0

JGEBIG

MOVY,-1

JMPEXITBIG:

JEEQULMOV

Y,1

JMPEXIT

EQUL:MOVY,0

EXIT:....

3、循環(huán)程序

用計(jì)數(shù)限制循環(huán)

4、DOS功能調(diào)用——TNT21H

熟悉01H、02H、09H、0AH和4cH的用法,入口、出口參數(shù)。

5、程序調(diào)試

(1)匯編工具;

(2)連接工具;

將匯編語言源文件形成可執(zhí)行文件。

(3)DEBUG的基本用法

熟悉常用叮囑(U、D、G、T、R等)。

第五章存儲(chǔ)器

1、微處理器與存儲(chǔ)器接口時(shí),高位地址總線的譯碼方案有:

(1)全譯碼法

除去與存貯芯片干脆相連的低位地址總線之外,將剩余的地址總線全部送入“片外地

址譯碼器”中進(jìn)行譯碼的方法就稱為全譯碼法。其特點(diǎn)是物理地址與實(shí)際存貯單元一一對

應(yīng),但譯碼電路困難。

(2)部分譯碼法

除去與存貯芯片干脆相連的低位地址總線之外,剩余的部分不是全部參與譯碼的方法

就稱為部分譯碼。其特點(diǎn)是譯碼電路比較簡潔,但出現(xiàn)“地址重疊區(qū)”,一個(gè)存貯單元可

以由多個(gè)地址對應(yīng)。

(3)線選法

在剩余的高位地址總線中,任選一位作為片選信號干脆與存貯芯片的片選引腳相連,

這種方式就稱為線選法。其特點(diǎn)是無需譯碼器,但有較多的地址重疊區(qū)。

2、熟悉常用的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的譯碼方法

?地址容量要匹配(擴(kuò)幾片)

?地址編排要符合要求(不要重疊)

?地址譯碼要恰當(dāng)(邏輯門組合或接受譯碼器)

?片選信號要連好(有的器件不止一個(gè)CS信號,高、低有效電平也不一徉,不要

漏了或者連錯(cuò)?)

?讀寫信號連接妥當(dāng)(RAM有讀和寫信號,ROM只有讀信號)

?留意M/IO*信號的極性(不要把I/O和MEM尋址的極性混淆了)

3、熟悉3/8、2/4譯碼器的用法。

(書本P191例題和的題)

第六章微機(jī)接口技術(shù)基礎(chǔ)

第一節(jié)I/O接口的概念

1、I/O接口的作用

(1)匹配外設(shè)與主機(jī)間的數(shù)據(jù)形式

(2)匹配外設(shè)與主機(jī)間的工作速度

(3)在主機(jī)與外設(shè)之間傳輸限制信息

其次節(jié)輸入/輸出限制方式

1、無條件程序傳送方式(同步方式)

2、程序查詢傳送方式(異步方式)

3、中斷限制傳送方式

(這3種傳輸方式各自的特點(diǎn)及適用場合要知道,書上P205?207的3個(gè)例子,包括圖,

要會(huì)駕馭)

4、干脆存儲(chǔ)器存?。―MA)傳送方式

第三節(jié)中斷技術(shù)

一、中斷的類型

PC機(jī)中各種類型的中斷共有256個(gè),并對它們進(jìn)行了統(tǒng)一的編號,稱為中斷類型號

1、內(nèi)中斷

(1)微處理器中斷

①0號中斷(除數(shù)為0)

②1號中斷(單步執(zhí)行程序)

③4號中斷(運(yùn)算溢出)

④3號中斷(斷點(diǎn)處理)

(2)不行屏蔽中斷NMI

(3)保留的微處理器中斷(不要求)

2、外中斷

外中斷由NMI和INTR兩個(gè)引腳引入。

可屏蔽外中斷INTR的特點(diǎn):

①INTR為電平觸發(fā)

②外中斷可多級排優(yōu)

③外中斷可用指令屏蔽

④外中斷可以嵌套

⑤外中斷響應(yīng)條件的修正(重點(diǎn)駕馭)

在IF=1,任何一條指令執(zhí)行完時(shí),CPU將檢測引腳INTR,以便響應(yīng)外中斷。

3、軟中斷

由中斷指令I(lǐng)NTn引發(fā)的中斷稱為軟中斷。

4、保留中斷

5、各類中斷的優(yōu)先級

高-----------------------?低

除數(shù)0,INTn,斷點(diǎn),溢出

NMI

INTR

低單步

二、中斷向量表

1、中斷向量表

在8086系統(tǒng)中,內(nèi)存最低端的1K字節(jié)地址范圍內(nèi)(從00000-003FFH),放置256

個(gè)中斷的中斷向量(入口地址),即稱為中斷向量表。每個(gè)中斷矢量在表中占據(jù)4個(gè)字節(jié),

地址較高的兩個(gè)字節(jié)放入口地址的段地址(CS),地址較低的兩個(gè)字節(jié)放偏移地址(IP)o

中斷向量表中的存儲(chǔ)地址=中斷類型碼nx4

2、中斷服務(wù)程序的執(zhí)行

(1)將標(biāo)記寄存器F入棧:

(2)清除中斷標(biāo)記(IF=0)、單步標(biāo)記(TF=0);

(3)將程序當(dāng)前代碼地址CS和指令偏移地址IP依次入棧;

(4)依據(jù)中斷號n,計(jì)算中斷向量的首地址——0000:n*4;

(5)依據(jù)中斷向量首地址,取出4個(gè)字節(jié)的中斷向量,并分別置入CS和IP中,CPU便

轉(zhuǎn)而執(zhí)行相應(yīng)的中斷服務(wù)程序;

(6)執(zhí)行中斷服務(wù)程序;

(7)調(diào)用中斷返回指令I(lǐng)RET,使堆棧中保存的斷點(diǎn)值和標(biāo)記值分別裝入IP,CS和標(biāo)記

寄存器,返回發(fā)生中斷的斷點(diǎn)。

3、可屏蔽外中斷的執(zhí)行過程

(1)PC機(jī)的外設(shè)輸出中斷請求信號至8259A中斷限制器,通過優(yōu)先級判決后,向CPU

發(fā)中斷請求信號INTR。

(2)CPU響應(yīng)中斷,連續(xù)發(fā)生兩個(gè)中斷響應(yīng)脈沖INTA,完成中斷應(yīng)答并獲得中斷號no

(3)CPU將收到的中斷號n乘4作為中斷向量地址。

(4)CPU屏蔽中斷,將中斷現(xiàn)場狀態(tài)字(F,IP,CS)壓入堆棧,將標(biāo)記寄存器F中的

IF和TF清0,禁止可屏蔽的和單步的中斷,將斷點(diǎn)的CS和IP寄存器內(nèi)容被壓入堆

棧,查詢中斷向量表,在地址為4Xn和4X11+2處依次取得IP和CS的值。

(5)CPU以CS值為段地址、IP為偏移地址轉(zhuǎn)入中斷服務(wù)程序。

4、中斷服務(wù)程序中須要完成的工作

(1)選擇一個(gè)中斷向量。假如接受硬件中斷,則要運(yùn)用硬件確定的中斷向量。(對于除法

錯(cuò)誤,單步中斷,非屏蔽中斷,斷點(diǎn)中斷和溢出中斷分別由CPU芯片內(nèi)的硬件自供

應(yīng)類型號0?4,外部中斷INTR通過中斷限制器(8259)獲得中斷類型號,假如接

受軟件中斷,執(zhí)行INTn指令的方式來執(zhí)行中斷服務(wù)程序,則可以在系統(tǒng)預(yù)留給用

戶的中斷向量號中選某一個(gè)中斷向量);

(2)將中斷子程序的入口地址置入中斷向量表的相應(yīng)表項(xiàng)中。(兩種方法:用MOV指令

將中斷服務(wù)子程序入口相對地址存放在物理地址為4Xn的字

溫馨提示

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

評論

0/150

提交評論