版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石材供應(yīng)購銷合同
- 食品材料采購合同書
- 酒駕者自律書
- 智能化濕地監(jiān)控系統(tǒng)招標(biāo)
- 花卉育苗合作方案
- 巖棉板采購合同示例
- 青春守護(hù)堅(jiān)守底線抵制早戀
- 代理合同補(bǔ)充協(xié)議要點(diǎn)
- 簡易分包合同勞務(wù)部分
- 催辦房屋買賣合同辦理事宜
- 2024年避孕藥具計(jì)劃總結(jié)
- 新聞攝影課件
- 電力企業(yè)信息化-第2章-電力調(diào)度中心信息化
- 德能勤績考核表
- 收納箱注塑模具設(shè)計(jì)說明書
- Python數(shù)據(jù)科學(xué)方法與實(shí)踐(山東聯(lián)盟)智慧樹知到課后章節(jié)答案2023年下山東師范大學(xué)
- 河南省鄭州市管城區(qū)卷2023-2024學(xué)年數(shù)學(xué)四年級第一學(xué)期期末聯(lián)考試題含答案
- 班主任考核細(xì)則評分表
- 2023教科版二年級上冊科學(xué)課堂作業(yè)本參考答案
- 乘坐飛機(jī)申請單
- 譯林牛津版九年級英語上冊期末復(fù)習(xí)課件全套一
評論
0/150
提交評論