版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
講授:李泉溪
《接口技術(shù)》接口技術(shù)學(xué)什么?軟件方面硬件方面怎么連結(jié)?接口技術(shù)3計(jì)算機(jī)概述●二進(jìn)制●數(shù)與碼●ASCII碼與奇偶校驗(yàn)●Inter公司歷代微處理器典型產(chǎn)品Inter公司歷代微處理器典型產(chǎn)品第2章微處理器結(jié)構(gòu)圖1微型計(jì)算機(jī)結(jié)構(gòu)圖9第2章微處理器結(jié)構(gòu)102.116位微處理器80862.1.18086的編程結(jié)構(gòu)總線接口部件區(qū)
執(zhí)行部件區(qū)
標(biāo)志內(nèi)容算數(shù)邏輯帶來(lái)流水線機(jī)制注:微處理器8088,與8086是姐妹產(chǎn)品,其特點(diǎn)是:
1.外部總線少8根數(shù)據(jù)線;2.指令隊(duì)列少兩個(gè)緩沖器注:將來(lái)實(shí)驗(yàn)用的是8088.11EU控制器ALU暫存器標(biāo)志寄存器8位隊(duì)列總線總線控制邏輯內(nèi)部總線16位地址加法器20位地址總線16位數(shù)據(jù)總線執(zhí)行部件EU總線接口部件BIU123456指令隊(duì)列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線主存專用寄存器12
標(biāo)志寄存器F唯一能按位操作的寄存器只定義了其中9位,另外7位未定義(不用)6位狀態(tài)標(biāo)志:OF、SF、ZF、
PF、CF、AF3位控制標(biāo)志:DF、IF、TFOFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0進(jìn)位標(biāo)志奇偶標(biāo)志輔助進(jìn)位標(biāo)志零標(biāo)志符號(hào)標(biāo)志單步跟蹤標(biāo)志中斷允許標(biāo)志方向標(biāo)志益處標(biāo)志︻補(bǔ)碼運(yùn)算用︼9.2013狀態(tài)標(biāo)志反映指令對(duì)數(shù)據(jù)作用之后,結(jié)果的狀態(tài)(不是結(jié)果本身)。這些狀態(tài)將控制后續(xù)指令的執(zhí)行OF(OverflowFlag):溢出標(biāo)志(指補(bǔ)碼),F(xiàn).11OF=1:在運(yùn)算過程中,如操作數(shù)超過了機(jī)器表示的范圍稱為溢出。OF=0:在運(yùn)算過程中,如操作數(shù)未超過了機(jī)器能表示的范圍稱為不溢出。字節(jié)允許范圍:-128—+127字允許范圍:-32768—+3276714狀態(tài)標(biāo)志CF(CarryFlag):進(jìn)位/借位標(biāo)志,F(xiàn).0CF=1:最高位需要向前產(chǎn)生進(jìn)位/借位。CF=0:最高位不會(huì)向前產(chǎn)生進(jìn)位/借位。AF(AuxiliaryCarryFlag):輔助進(jìn)位標(biāo)志,F(xiàn).4AF=1:數(shù)據(jù)的第3位(半個(gè)字節(jié))需要向前產(chǎn)生進(jìn)位/借位。AF=0:數(shù)據(jù)的第3位(半個(gè)字節(jié))不會(huì)向前產(chǎn)生進(jìn)位/借位。15狀態(tài)標(biāo)志SF(SignFlag):符號(hào)標(biāo)志,F(xiàn).7SF=1:運(yùn)算結(jié)果的最高位為1,如果為帶符號(hào)數(shù),則為負(fù)數(shù)。SF=0:運(yùn)算結(jié)果的最高位為0,如果為帶符號(hào)數(shù),則為正數(shù)。帶符號(hào)數(shù)的最高位為符號(hào)位;而無(wú)符號(hào)數(shù)的最高位為數(shù)值位。ZF(ZeroFlag):全零標(biāo)志,F(xiàn).6ZF=1:運(yùn)算結(jié)果為全0。不包括進(jìn)位的情況ZF=0:運(yùn)算結(jié)果不為0。16狀態(tài)標(biāo)志PF(ParityFlag):奇偶標(biāo)志F.2PF=1:結(jié)果的低8位中有偶數(shù)個(gè)1。PF=0:結(jié)果的低8位中有奇數(shù)個(gè)1。有些運(yùn)算操作將影響全部狀態(tài)標(biāo)志,如加法、減法運(yùn)算有些操作影響部分狀態(tài)標(biāo)志,如移位操作有些指令的操作不影響任何狀態(tài)標(biāo)志,如數(shù)據(jù)傳送指令(遠(yuǎn)程傳送例外)17例:計(jì)算機(jī)執(zhí)行兩個(gè)數(shù)的加法
0010
0011
0100
0101
+
0011
0010
0001
10010101
0101
0101
1110分析:1.運(yùn)算結(jié)果的最高位是0,所以符號(hào)標(biāo)志SF=0
2.運(yùn)算結(jié)果本身不為0,所以零標(biāo)志ZF=0
3.運(yùn)算結(jié)果低8位1的個(gè)數(shù)為奇數(shù),奇偶標(biāo)志PF=0
4.運(yùn)算最高位沒有產(chǎn)生進(jìn)位,所以進(jìn)位標(biāo)志CF=0
5.第3位沒有往第4位進(jìn)位,所以輔助進(jìn)位標(biāo)志AF=0
6.運(yùn)算結(jié)果沒有超出有效范圍,所以溢出標(biāo)志OF=0
18控制標(biāo)志DFIFTF控制標(biāo)志位的值不由數(shù)據(jù)運(yùn)算的結(jié)果決定,而由指令直接賦值控制標(biāo)志決定后續(xù)指令的執(zhí)行情況DF(DirectionFlag):方向控制標(biāo)志位,F(xiàn).10用于串處理指令,控制從前往后、還是從后往前對(duì)字符串進(jìn)行操作處理DF=1,每次串處理操作后使變址寄存器SI和DI的值遞減,使串處理從高地址向低地址方向處理。DF=0,每次串處理操作后使變址寄存器SI和DI的值遞增,使串處理從低地址向高地址方向處理。19控制標(biāo)志DFIFTFIF(InteruptFlag):中斷允許/禁止標(biāo)志位F.9IF=1,允許外部可屏蔽中斷。CPU可以響應(yīng)可屏蔽中斷請(qǐng)求。IF=0,關(guān)閉中斷。CPU禁止響應(yīng)可屏蔽中斷請(qǐng)求。IF的狀態(tài)對(duì)不可屏蔽中斷和內(nèi)部軟中斷沒有影響。TF(TrapFlag):跟蹤(陷阱)標(biāo)志位F.8TF=1,每執(zhí)行一條指令后,自動(dòng)產(chǎn)生一次內(nèi)部中斷,使CPU處于單步執(zhí)行指令工作方式,便于進(jìn)行程序調(diào)試,用戶能檢查程序。TF=0,CPU正常工作,不產(chǎn)生陷阱。20控制標(biāo)志與狀態(tài)標(biāo)志的區(qū)別控制標(biāo)志的值:由系統(tǒng)程序或用戶程序根據(jù)需要用指令設(shè)置。狀態(tài)信息:由中央處理器執(zhí)行運(yùn)算指令,并根據(jù)運(yùn)算結(jié)果而自動(dòng)設(shè)置。X86CPU也提供了直接設(shè)置狀態(tài)標(biāo)志之值的指令21AXBXCXDX8086的通用寄存器目的變址指針(DestinationIndex)DI源變址指針(SourceIndex)SI基址指針(BasePointer)BP堆棧指針(StackPointer)SP數(shù)據(jù)寄存器(Data)DLDHDX計(jì)數(shù)寄存器(Count)CLCHCX基址寄存器(Base)BLBHBX累加器(Accumulator)ALAHAX數(shù)據(jù)寄存器可分為兩個(gè)8位,主要用于數(shù)據(jù)操作地址指針主要用于地址操作16位8822通用寄存器的特殊用法(默認(rèn)用法)寄存器特殊用法AX,AL乘法/除法指令,作累加器;I/O操作時(shí),作數(shù)據(jù)寄存器AH在LAHF指令中用作目的寄存器((AH)←標(biāo)志)AL在BCD碼及ASCII碼運(yùn)算指令中作為累加器;在XLAT指令中作為累加器(AL)←((AL)+(BX))BX在間接尋址中作為基址寄存器和變址寄存器CX在循環(huán)程序中,作循環(huán)次數(shù)計(jì)數(shù)器CL在移位和循環(huán)移位指令中,作為移位位數(shù)和循環(huán)移位次數(shù)的計(jì)數(shù)寄存器(指令執(zhí)行后,(CL)不變)DXI/O指令間接尋址時(shí),作為地址寄存器;在乘法指令中作為輔助累加器(當(dāng)乘積或被除數(shù)為32位時(shí),存放高16位數(shù))BP在間接尋址中,作為基址寄存器SP在堆棧操作中,作為堆棧指針SI間接尋址時(shí),作為地址寄存器或變址寄存器;在串操作指令中作為源變址寄存器DI在間接尋址時(shí),作為地址寄存器或變址寄存器;在串操作指令中作為目的變址寄存器23EU控制器ALU暫存器標(biāo)志寄存器8位隊(duì)列總線總線控制邏輯內(nèi)部總線16位地址加法器20位地址總線16位數(shù)據(jù)總線執(zhí)行部件EU總線接口部件BIU123456指令隊(duì)列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線討論:1.以算術(shù)邏輯單元ALU為中心
2.以主存為中心主存24標(biāo)志寄存器標(biāo)志寄存器(FlagRegister)共有16位,其中7位未用。標(biāo)志寄存器內(nèi)容如圖2-2所示:(1)條件類標(biāo)志:CFZFSFPFOFAF(2)控制類標(biāo)志:DFIFTF條件標(biāo)志分別為:進(jìn)位CF、零ZF、符號(hào)SF、奇偶PF、溢出OF、輔助進(jìn)位AF(半進(jìn)位)控制標(biāo)志意思如下:DF:方向標(biāo)志,為0則串操作時(shí)地址增值IF:中斷標(biāo)志,為0則中斷屏蔽TF:單步標(biāo)志,為0則連續(xù)執(zhí)行程序25ORG10100H;偽指令:CS=1000h;IP=0100HMOVAX,0064H;數(shù)據(jù)傳送指令機(jī)器碼:B86400ADDAX,0100H;加法指令機(jī)器碼機(jī)器碼:050001MOV[2000],AX;數(shù)據(jù)傳送指令機(jī)器碼:A30020
;DS=1492H由操作系統(tǒng)安置;IP=2000H由指令安置注:CS—代碼段寄存器
DS—數(shù)據(jù)段寄存器注:物理地址需要合成產(chǎn)生
IP—指令指針寄存器微處理器8088執(zhí)行匯編語(yǔ)言程序過程演示268088的指令執(zhí)行過程段地址寄存器278086總線周期的概念CPU主存************程序時(shí)鐘外部存儲(chǔ)器硬盤接口DMA啟動(dòng)程序288086總線周期的概念總線周期:4個(gè)時(shí)鐘周期組成,4個(gè)時(shí)鐘周期分別叫做:
T1狀態(tài)、T2狀態(tài)、T3狀態(tài)、T4狀態(tài)
問:你的電腦時(shí)鐘周期是多少?T1狀態(tài):CPU通過復(fù)用總線往存儲(chǔ)單元發(fā)地址T2狀態(tài):CPU撤銷地址信號(hào)T3狀態(tài):CPU啟動(dòng)復(fù)用總線數(shù)據(jù)傳輸T4狀態(tài):總線周期結(jié)束Tw狀態(tài):存儲(chǔ)器或I/O口未準(zhǔn)備好,要等待(要作解釋)TI狀態(tài):空閑周期,即非總線傳輸?shù)闹噶?,如指令?duì)列滿了。返回27291.8086CPU的引腳信號(hào)2.最小工作模式3.最大工作模式2.1.28086的引腳信號(hào)
和工作模式30圖2.48086/8088的引腳信號(hào)(括號(hào)中為最大模式時(shí)的引腳名)(a)8086的引腳信號(hào);(b)8088的引腳信號(hào)8086/8088CPU引腳返回5731
看圖要點(diǎn)1、40個(gè)管腳分3類2、很多管腳有多個(gè)功能32數(shù)據(jù)線(D0~D15)地址線(A0~A19)MN/MX最小/最大模式轉(zhuǎn)換BHE數(shù)據(jù)高8位允許信號(hào)ALE地址鎖存信號(hào)DEN使能信號(hào)[數(shù)據(jù)傳輸允許】DT/R數(shù)據(jù)傳輸方向控制M/IO內(nèi)存/外設(shè)控制READY準(zhǔn)備好信號(hào),控制Tw插入數(shù)RESET復(fù)位信號(hào)HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷331、8086的最小模式MN/MX最小/最大模式轉(zhuǎn)換BHE數(shù)據(jù)高8位允許信號(hào)ALE地址鎖存信號(hào)DEN使能信號(hào)[數(shù)據(jù)傳輸允許】DT/R數(shù)據(jù)傳輸方向控制M/IO內(nèi)存/外設(shè)控制READY準(zhǔn)備好信號(hào),控制Tw插入數(shù)。RESET復(fù)位信號(hào)HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷34地址信號(hào)的分離選通端,接ALE輸出允許端A0~A15AD0~AD153片8282的連法35數(shù)據(jù)信號(hào)的分離請(qǐng)看計(jì)算機(jī)讀寫數(shù)據(jù)的時(shí)序分析方向控制端輸出允許端AD0~AD7D0~D736CPU時(shí)鐘信號(hào)的獲得復(fù)位端準(zhǔn)備好信號(hào)端EFI:外振源輸入端,無(wú)晶振時(shí)用372、8086的最大模式38最大模式下控制信號(hào)的產(chǎn)生2009-2-2639最大模式與最小模式比較共同點(diǎn):1、時(shí)鐘及其產(chǎn)生電路是一樣的。
2、數(shù)據(jù)總線、地址總線的處理和連法是一樣的。不同點(diǎn):1、控制信號(hào)的產(chǎn)生機(jī)理不一樣,控制信號(hào)的類型有所不同。
2、最小模式用一個(gè)CPU,最大模式用兩個(gè)CPU。一個(gè)專門做輔助計(jì)算。
402.1.38086的操作和時(shí)序
操作:
計(jì)算機(jī)在運(yùn)行過程中,需要CPU執(zhí)行許多操作。8086的主要操作分為以下5種類型:①系統(tǒng)的啟動(dòng)和復(fù)位操作;[后面專門講]②暫停操作;由暫停指令HLT(p134)產(chǎn)生,等待外中斷用③總線操作;
[總線讀寫操作時(shí)序圖]④中斷操作;[后面專門講]⑤總線控制(請(qǐng)求/允許,多主系統(tǒng)時(shí))。418086的復(fù)位操作時(shí)序返回系統(tǒng)的復(fù)位42計(jì)算機(jī)復(fù)位時(shí)“強(qiáng)制”狀態(tài)計(jì)算機(jī)起步點(diǎn):FFFF0,這是計(jì)算機(jī)最靠前的程序——主板BIOS(底層代碼)的第一條指令所在地址。43CPU從存儲(chǔ)器或I/O端口讀取數(shù)據(jù)的時(shí)序
MOVAL,[2000H];從存儲(chǔ)器2000H讀取數(shù)據(jù)INAL,20H;從I/O端口20H讀取數(shù)據(jù)返回?cái)?shù)據(jù)收發(fā)控制返回到41448086寫周期的時(shí)序返回到2.1.3MOV[2000H],AL;往存儲(chǔ)器2000H寫數(shù)據(jù)OUT20H,AL;往I/O端口20H寫數(shù)據(jù)45中斷技術(shù)概念46中斷操作和中斷系統(tǒng)主程序中斷0中斷1中斷2中斷254中斷255斷點(diǎn)中斷號(hào)0中斷號(hào)255指令:INTn中斷表返回到4147中斷向量表名詞:中斷號(hào)—
類型嗎中斷服務(wù)程序首地址
——
中斷向量中斷表—
中斷向量表48中斷號(hào)的索取方式指令索取INTn,n為中斷號(hào)CPU指定如非屏蔽外中斷的類型碼為n=2.外設(shè)通過總線將中斷號(hào)n送入CPU498086/8088的中斷號(hào)配置注:0、1、2、3、4上述五個(gè)類型嗎為系統(tǒng)專用號(hào),別人不得使用!2號(hào)指定一個(gè)范圍指定一個(gè)范圍0號(hào)1號(hào)4號(hào)3號(hào)50
256個(gè)中斷向量在中斷向量表中的位置計(jì)算第n個(gè)中斷向量所在位置的段地址:
0000H第n個(gè)中斷向量所在位置的偏移地址:中斷號(hào)×451256個(gè)中斷號(hào)的分配安排
中斷向量表位于主存的第0段,占0-3FFH區(qū)域,共1KB存儲(chǔ)空間。52
256個(gè)中斷向量在中斷向量表中的存放規(guī)則偏移地址在前段地址在后例如:將某向量
4030:2010存入表的0號(hào)位置:0000:0000100000:0001200000:0002300000:00034053
256個(gè)中斷向量在中斷向量表中的存放規(guī)則例如:將某向量
4030:2010存入表的40H號(hào)位置:0000:0100100000:0101200000:0102300000:01034054中斷向量和中斷向量表的計(jì)算
已知中斷類型號(hào),找對(duì)應(yīng)的中斷子程序位置:
假定類型號(hào)為20H,其所對(duì)應(yīng)的中斷向量存放的位置:0000:0080H開始的4個(gè)單元中,如果0080H、0081H、0082H、0083H這4個(gè)單元中的值分別為10H20H30H40H,那么,在這個(gè)系統(tǒng)中,20H號(hào)中斷所對(duì)應(yīng)的中斷向量為4030:2010。即對(duì)應(yīng)的中斷子程序首地址為:4030:2010。
中斷類型號(hào)17H對(duì)應(yīng)的中斷向量存放起點(diǎn)為0000:005CH,所以,0段005CH、005DH、005EH、005FH這4個(gè)單元中的值應(yīng)當(dāng)分別為90H、78H、45H、23H。(注:地址低位在前)
已知中斷向量為2345:7890,將其放在類型號(hào)17H處的向量中:55
中斷號(hào)的索取方式
(計(jì)算機(jī)進(jìn)入中斷程序的原因)CPU執(zhí)行指令時(shí)產(chǎn)生異常前面講的益處中斷、除數(shù)為0中斷都是。環(huán)境產(chǎn)生異常前面講的可屏蔽中斷和非屏蔽中斷都是。3.程序執(zhí)行中斷調(diào)用指令I(lǐng)NTn568086/8088對(duì)中斷響應(yīng)過程的流程圖
注:TF為單步標(biāo)志,也叫跟蹤標(biāo)志;IF為中斷允許標(biāo)志
TEMP為暫存單元非屏蔽請(qǐng)求可屏蔽請(qǐng)求保護(hù)斷點(diǎn)57
中斷子程序的調(diào)用附錄二常用DOS功能調(diào)用(INT21H)P307附錄三常用ROM--BIOS功能調(diào)用(P312)(INT10H、INT11H……INT1AH)
一個(gè)中斷功能號(hào)可以掛很多個(gè)不同的子功能號(hào)(裝入AH里),最多可以掛多少?58到此,中斷技術(shù)講述結(jié)束.下面講地址總線的管理.592.1.48086的存儲(chǔ)器編址和I/O編址00000FFFFF6FFFF60000I/O口使用統(tǒng)一編址00000FFFFF0000FFFFI/O口使用獨(dú)立編址M/~IO內(nèi)存/外設(shè)控制兩種編址方案
602.1.48086的存儲(chǔ)器編址和I/O編址
(1)編址方式統(tǒng)一編址:內(nèi)存和I/O口統(tǒng)一占用20根地址線其物理地址范圍:000000H~FFFFFH
存儲(chǔ)空間為:1MB獨(dú)立編址:內(nèi)存占用20根地址線,其物理地址范圍:000000H~FFFFFH
I/O口占用前16根地址線其物理地址范圍:0000H~FFFFH
存儲(chǔ)空間為:64KB注意:1MB貯存是分段管理的,
64KB口地址不分段。61計(jì)算機(jī)存儲(chǔ)器幾個(gè)典型區(qū)域的說(shuō)明(1)00000~003FFH共1KB區(qū)域用來(lái)存放中斷向量,這一區(qū)域稱為中斷向量表。此表共可裝256個(gè)中斷向量。對(duì)一個(gè)具體系統(tǒng)來(lái)說(shuō),一般并不需要多達(dá)256個(gè)中斷類型,因此,實(shí)際系統(tǒng)中的中斷向量表的大部分區(qū)域是空白的。(2)B0000H~B0F9FH約4KB是單色顯示器的顯示緩沖區(qū),存放單色顯示器當(dāng)前屏幕顯示字符所對(duì)應(yīng)的ASCII碼和屬性。(3)B8000H~BF3FH約16KB是彩色顯示器的顯示緩沖區(qū),存放彩色顯示器當(dāng)前屏幕像素所對(duì)應(yīng)的代碼。(4)從FFFF0H開始到存儲(chǔ)器底部FFFFFH共16個(gè)字節(jié),一般用來(lái)存放一條無(wú)條件轉(zhuǎn)移指令,轉(zhuǎn)到系統(tǒng)的初始化程序處。系統(tǒng)在加電或者復(fù)位時(shí),會(huì)自動(dòng)轉(zhuǎn)到FFFF0H處開始程序運(yùn)行。
注意1:系統(tǒng)BIOS代碼的起始地址即為FFFF0H。注意2:①②③都是操作系統(tǒng)給與的安排。
6200000FFFFF中斷向量表所在區(qū)域系統(tǒng)代碼啟動(dòng)點(diǎn)彩色顯示器的顯示緩沖區(qū)單色顯示器的顯示緩沖區(qū)63
8086的I/O編址研究I/O端口地址用了8086地址總線的低16位:A0~A15.
解決地址重疊問題的辦法:硬件采?。豪肅PU的第28管腳軟件采取:MOV/OUTIN指令
8086系統(tǒng)和外部設(shè)備之間都是通過I/O芯片來(lái)聯(lián)系的。每個(gè)I/O芯片都有一個(gè)端口或者幾個(gè)端口,一個(gè)端口往往對(duì)應(yīng)了芯片內(nèi)部的一個(gè)寄存器或者一組寄存器。微型機(jī)系統(tǒng)要為每個(gè)端口分配一個(gè)地址,此地址叫端口號(hào)。當(dāng)然,各個(gè)端口號(hào)不能重復(fù)。
8086允許有65536個(gè)8位的I/O端口,兩個(gè)編號(hào)相鄰的8位端口可以組合成一個(gè)16位端口。指令系統(tǒng)中既有訪問8位端口的輸入輸出指令,也有訪問16位端口的輸入輸出指令。INAL,200H;從外設(shè)端口(地址200H)輸入8位信號(hào)
INAX,200H;從外設(shè)端口(地址200H)輸入16位信號(hào)
OUT300H,AL;輸出(端口地址300H)64下面簡(jiǎn)單介紹32位微型計(jì)算機(jī)系統(tǒng)
新技術(shù):1、虛擬存儲(chǔ)技術(shù)2、片內(nèi)存儲(chǔ)管理技術(shù)3、存儲(chǔ)體管理分段分頁(yè)保護(hù)技術(shù)。段的新概念:段基地址:32位段偏移量:32位662.232位微處理器803861985年10月,Inter公司推出了32位微處理器80386。80386特點(diǎn):1.32位數(shù)據(jù)總線。
2.32位地址總線,直接尋址能力:4GB
3.時(shí)鐘頻率16MHz(8086為8MHz)
新技術(shù):虛擬存儲(chǔ)技術(shù),片內(nèi)存儲(chǔ)管理技術(shù),存儲(chǔ)體管理分段分頁(yè)保護(hù)技術(shù)。67虛擬存儲(chǔ)技術(shù)段的新概念:段基地址:32位段偏移量:32位最小段:1B
最大段:4GB
允許最多段數(shù):14k個(gè)總存儲(chǔ)空間(最大):14k×4GB=64T
注意:大多數(shù)空間是虛擬的6880386的寄存器
說(shuō)明1、EIP32位指針寄存器
IP16位指針寄存器可以與8086兼容2、EFLAGS32位標(biāo)志寄存器3、GDTR全局描述符表寄存器。(指出全局描述符表位置)4、IDTR中斷描述符表寄存器
。(指出中斷描述符表位置)5、LDTR局部描述符表寄存器。(指出局部描述符表位置)
6、CR0~CR3控制寄存器,保存各種全局性狀態(tài)。
7、DR0~DR7調(diào)試寄存器
8、TR6TR7測(cè)試寄存器6980386的標(biāo)志寄存器狀態(tài)標(biāo)志:CF,PF,AF,ZF,SF,OF,NT控制標(biāo)志:DF,IF,IOPL系統(tǒng)方式標(biāo)志:VM,RF說(shuō)明:IOPL在保護(hù)方式下,用來(lái)限制I/O指令的使用特權(quán)級(jí)。
VM=1時(shí),即進(jìn)入虛擬8086方式。
RF用于調(diào)試失敗后,強(qiáng)迫程序恢復(fù)執(zhí)行。
8086的標(biāo)志寄存器
7032位機(jī)的尋址方式發(fā)生了革命性的變化●引入了虛擬空間、虛擬地址的新概念●發(fā)展了段的概念,引進(jìn)了段描述符表技術(shù)71從邏輯地址到線性地址的轉(zhuǎn)換72從邏輯地址到物理地址的轉(zhuǎn)換此偏移量為線性地址的低12位,高20位通過復(fù)雜換算產(chǎn)生頁(yè)表32位頁(yè)基地址73從段選擇子到段基址
段選擇子段描述符邏輯地址物理地址
RPL:定義此段使用的特權(quán)級(jí)別0-1-2-3共可裝入16K個(gè)段描述符段描述符(看下頁(yè))TI=0為全局描述符表GDT表LDT表74存在P=0,則說(shuō)明此段不在主存內(nèi),應(yīng)從硬盤調(diào)入,這就是“訪問段異常”75保護(hù)方式下段地址的產(chǎn)生
1、描述符表(段描述符表)包含大量描述符,指出段的屬性(位置、大小、類型[代碼段?堆棧段?數(shù)據(jù)段?])和保護(hù)特性。2、段描述符表共用三個(gè)。一個(gè)全局段描述符表,一個(gè)局部段描述符表,
一個(gè)中斷描述符表。
7680386的段描述符寄存器說(shuō)明:20位段界限值,定義了該段的長(zhǎng)度,計(jì)算單位有“粒度”定義,字節(jié)或頁(yè)(粒度=1則為頁(yè),1頁(yè)=4KB)“存在”=1,說(shuō)明此段已裝入主存;=0,說(shuō)明還在磁盤中。從而完成實(shí)地址和虛地址的變換統(tǒng)一:執(zhí)行此段時(shí)發(fā)現(xiàn)為虛則立即從磁盤調(diào)入內(nèi)存!與段描述符表中的每一項(xiàng)的結(jié)構(gòu)完全一樣。從描述符表中取出的一項(xiàng)放入相應(yīng)的寄存器中77從邏輯地址到物理地址的轉(zhuǎn)換此偏移量為線性地址的低12位,高20位通過復(fù)雜換算產(chǎn)生頁(yè)表32位頁(yè)基地址7880386的信號(hào)第3章
8086匯編語(yǔ)言指令系統(tǒng)
《微機(jī)原理與接口技術(shù)》80
本章主要內(nèi)容8086指令的格式常用匯編語(yǔ)言指令介紹匯編語(yǔ)言編程的格式(補(bǔ))818086指令的格式
操作碼操作數(shù)…….操作數(shù)操作碼字段指示計(jì)算機(jī)要干什么?操作數(shù)字段指出在指令執(zhí)行操作的過程中所需要數(shù)據(jù)的來(lái)源。舉例:三條指令:MOVAX,0064H;數(shù)據(jù)傳送指令機(jī)器碼:B86400ADDAX,0100H;加法指令機(jī)器碼機(jī)器碼:050001MOV[2000],AX;數(shù)據(jù)傳送指令機(jī)器碼:A30020指令一般格式操作數(shù)字段的三種形式:
1、操作數(shù)本身(立即尋址方式)
2、操作數(shù)地址(直接尋址方式)
3、指向操作數(shù)地址的指針(間接尋址方式)3.18086的尋址方式一、數(shù)據(jù)尋址方式(二、程序?qū)ぶ贩绞剑?/p>
1、立即尋址方式例:MOVAL,08H2、寄存器尋址方式例:MOVAX,BX3、直接尋址方式例:MOVAX,[2000H];段地址在DS中,指令不用寫
4、寄存器間接尋址例:MOVAX,[BX]
如已知(DS)=2000H,(BX)=1000H,(21000H)=3050H
問:此指令執(zhí)行后,(AX)=?
二、程序?qū)ぶ贩绞?、段內(nèi)直接轉(zhuǎn)移
JMPNEARPTRPROGIA
;無(wú)條件轉(zhuǎn),16位跳轉(zhuǎn)范圍
JMPSHORTQUEST
;無(wú)條件轉(zhuǎn),08位跳轉(zhuǎn)范圍;PROGIA,QUEST
為符號(hào)地址
2、段間直接尋址方式
JMPFARPTRNEXT
;NEXT
為符號(hào)地址
3.28086的指令系統(tǒng)常用匯編指令:1、MOVAX,1234H立即尋址方式指令2、MOVAX,[1234H]直接尋址方式指令3、MOVAX,BX寄存器尋址方式4、MOVAX,[BX]寄存器間接尋址方式5、MOVAX,[BX][DI]基址變址尋址方式6、INAX,28HI/O口傳送指令—設(shè)備信號(hào)讀入7、OUT5,ALI/O口傳送指令—寫入設(shè)備,如遇大地址用DX8、JMPOPR無(wú)條件轉(zhuǎn)移到OPR9、JCOPR有進(jìn)位轉(zhuǎn)移到OPR10、JZOPR結(jié)果為零轉(zhuǎn)移到OPR11、JNZOPR結(jié)果非零轉(zhuǎn)移到OPR12、MOVBX,OFFSETLIST地址傳送指令13、ADDAX,BX不帶進(jìn)位加14、ADCAX,BX帶進(jìn)位加15、INCAX;加1指令16、DECCX;減1指令17、INTN調(diào)用指令,N為中斷號(hào)18、IRET中斷服務(wù)返回指令85
I/O口傳送指令:外設(shè)輸入指令:
例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對(duì)16位地址必須借助;DX寄存器尋址
向外設(shè)輸出指令:
例1:OUT5,AL;向端口5輸出一字節(jié)例2:MOVDX,500HOUTDX,AL;對(duì)16位地址必須借助
;DX寄存器尋址注意:I/O大地址必須用DX寄存器尋址方式條件轉(zhuǎn)移指令的應(yīng)用編程舉例:MOVCX,30MOVBX,0AGAIN:
INCBXDECCXJNZAGAINMOVAX,BX循環(huán)指令:LOOP
MOVCX,30
MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX簡(jiǎn)單學(xué)習(xí)附錄1:8086指令系統(tǒng)一覽表87常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56
2、定義數(shù)據(jù)的偽指令:DB,DW
它們分別定義:1個(gè)字節(jié)、2個(gè)字節(jié)
ABCDB39,250,?,0,?;定義字節(jié)單元
DEFDW983,2358,?,?;定義字單元(像數(shù)組)3、地址計(jì)數(shù)器:$
arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS88匯編語(yǔ)言程序的格式數(shù)據(jù)段名SEGMENT
;SEGMENT
段定義偽指令,與ENDS構(gòu)成一對(duì)使用數(shù)據(jù)空間預(yù)置數(shù)據(jù)段名ENDS堆棧段名
SEGMENT
堆棧空間預(yù)置堆棧段名ENDS代碼段名SEGMENTASSUME
段地址說(shuō)明START:
段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統(tǒng)在加載程序后自動(dòng)裝填的,即由操作系統(tǒng)的任務(wù)管理程序自動(dòng)完成裝填的,此項(xiàng)裝填不需要用戶管理。)主程序體
..代碼段名ENDS;代碼段結(jié)束
ENDSTART;全部程序結(jié)束89datasegment;數(shù)據(jù)段
arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆棧段
stakdb10dup(?)stackendscodesegment;代碼段
assumecs:code;段地址說(shuō)明
ds:datass:stack;前面全是偽指令
start:movax,data;段地址裝填
movds,axmovax,stackmovss,ax;;;;代碼段不用裝填?。?/p>
movdi,offsetsum;有效地址
movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;帶進(jìn)位加
incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:編一個(gè)程序,其功能是對(duì)5個(gè)數(shù)據(jù)求和,并將結(jié)果放入SUM單元。14、
ABCDB39,250,?,0,?
定義數(shù)據(jù)的偽指令15、SEGMENT……ENDS
段定義偽指令91常用匯編語(yǔ)言指令介紹一、數(shù)據(jù)尋址方式類指令(只講以后用到的主要指令)
2.
寄存器尋址方式
例3.4(a)MOVAX,BX;16位例3.4(b)MOVECX,EDX
;32位,80386機(jī)及以后才有
1.
立即尋址方式
例3.1MOVAL,8;(AL)=08H,08H是立即數(shù)例3.2MOVAX,1234H;(AX)=1234H例3.3MOVEAX,12345678H;(EAX)=12345678H.
注意:立即數(shù)長(zhǎng)度應(yīng)予目的操作數(shù)長(zhǎng)度一致。923.
直接尋址方式
例3.5MOVAX,[2000H];注意2000H是偏移地址,也稱有效地址如(DS)=3000H,(32000H)=3050H,執(zhí)行結(jié)果為:(AX)=3050H。說(shuō)明:該指令的有效地址為2000H,操作數(shù)的物理地址=數(shù)據(jù)段基地址*16+有效地址(2000H)注意:不要與立即尋址方式相混淆。(害怕混淆所以用了[])934.基址變址尋址方式
例:MOVAX,[BX][DI](或?qū)憺椋篗OVAX,[BX+DI])對(duì)于32位尋址方式可有:
MOVEDX,[EBX][EDI]
這種尋址方式適用于數(shù)組(一維、二維)或表格處理,其首地址可存放在基址寄存器中,而通過修改變址寄存器的內(nèi)容來(lái)訪問數(shù)組中的各個(gè)元素。一、數(shù)據(jù)尋址方式類指令[上面所講]二、程序?qū)ぶ贩绞筋愔噶頪程序跳轉(zhuǎn)]1、段內(nèi)無(wú)條件轉(zhuǎn)移指令:
JMPNEARPTRPP;近轉(zhuǎn)移(16/32)PP為符號(hào)地址
;NEARPTR
為操作符。;對(duì)8086轉(zhuǎn)移16位,對(duì)386及以后機(jī)型轉(zhuǎn)移32位
2、段間無(wú)條件遠(yuǎn)轉(zhuǎn)移指令:
JMPWORDOTROPR
;OPR為符號(hào)地址●后面還要介紹有條件跳轉(zhuǎn)94
其他類型匯編語(yǔ)言指令補(bǔ)充1、PUSHAX;進(jìn)棧指令2、POPAX;出棧指令3、PUSHF;標(biāo)志寄存器內(nèi)容進(jìn)棧4、POPF;標(biāo)志寄存器內(nèi)容出棧
I/O口傳送指令:5、外設(shè)輸入指令:例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對(duì)16位地址必須借助;DX寄存器尋址6、向外設(shè)輸出指令:例1:OUT5,AL;向端口5輸出一字節(jié)例2:MOVDX,500HOUTDX,AL;對(duì)16位地址必須借助
;DX寄存器尋址注意:I/O大地址必須用DX寄存器尋址方式4957、地址傳送指令:LEALEABX,LIST;將符號(hào)地址LIST的有效地址送BXMOVBX,OFFSETLIST;同上,又一種寫法,建立中斷向量;時(shí)要用到。;表示某段子程序LIST:***************
8、加減指令
ADDAX,CX;不帶進(jìn)位加AX(AX)-(CX)
ADCDX,BX;帶進(jìn)位加
SUBAX,BX;減法指令A(yù)X(AX)-(BX)
INCAX;加1DECCX;減1注意:MOVBX,LIST([LIST])什么意思?969、邏輯運(yùn)算指令(1)AND邏輯與指令格式:ANDDST,SRC
執(zhí)行的操作:(DST)←(DST)∧(SRC)
(2)TEST測(cè)試指令格式:TESTOPR1,OPR2
執(zhí)行的操作:(OPR1)∧(OPR2),兩個(gè)操作數(shù)相與的結(jié)果不保存,只改變相關(guān)標(biāo)志位,如零標(biāo)志。例:TESTAX,01H;測(cè)試AX的第0位
JZEVEN;為0轉(zhuǎn)移,條件轉(zhuǎn)移指令JZ,下面要講到例:TESTAX,01H;測(cè)試AX的第0位
JNZEVEN;為1轉(zhuǎn)移9710、條件轉(zhuǎn)移指令[程序何往?憑啥條件?]①JZOPR測(cè)試條件:ZF=1,結(jié)果為零轉(zhuǎn)移;②JNZOPR測(cè)試條件:ZF=0,結(jié)果不為零轉(zhuǎn)移;③JCOPR測(cè)試條件:CF=1,有借位(進(jìn)位)轉(zhuǎn)移;
條件轉(zhuǎn)移指令的應(yīng)用舉例:MOVCX,30MOVBX,0AGAIN:
INCBXDECCXJNZAGAINMOVAX,BX11、循環(huán)指令LOOP
MOVCX,30
MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX9812.比較指令CMPop1,op2;op1-op2有借位嗎?執(zhí)行后只改變借位標(biāo)志注:op1是寄存器,op2是立即數(shù)或存儲(chǔ)器單元;此指令要配合條件轉(zhuǎn)移指令使用。例:x1x2為兩個(gè)字節(jié)單元,請(qǐng)按由小到大順序放入y1y2
字節(jié)單元。編程:moval,x1cmpal,x2jcminmovy2,al;如減法指令為SUB,將出錯(cuò)!
movy1,x2endd:movah,4chint21h;返回DOSmin:movy1,almovy2,x2jmpendd;無(wú)條件轉(zhuǎn)移作業(yè):請(qǐng)按由大到小順序放入y1y2字節(jié)單元。9912、子程序的調(diào)用與返回指令
CALL調(diào)用指令
RET返回指令14、中斷的調(diào)用與返回指令
INTN調(diào)用指令,N為中斷號(hào)
IRET從中斷服務(wù)子程序中返回指令
注意:這里是軟件中斷的調(diào)用但無(wú)論是怎么進(jìn)入的中斷服務(wù)子程序,子程序的最后結(jié)束句必須是IRET100常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56
2、定義數(shù)據(jù)的偽指令:DB,DW
它們分別定義:1個(gè)字節(jié)、2個(gè)字節(jié)
ABCDB39,250,?,0,?;定義字節(jié)單元
DEFDW983,2358,?,?;定義字單元(像數(shù)組)3、地址計(jì)數(shù)器:$
arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS第4章
匯編語(yǔ)言程序設(shè)計(jì)
《微機(jī)原理與接口技術(shù)》102
本章主要內(nèi)容匯編語(yǔ)言程序的格式簡(jiǎn)單程序的編寫103匯編語(yǔ)言程序的格式●第一步:定義各段●第二步:給各段寄存器裝段值(代碼段除外)●第三步:展開寫程序(在代碼段中寫)104常用匯編指令總復(fù)習(xí):1、MOVAX,1234H立即尋址方式指令
2、MOVAX,[1234H]直接尋址方式
指令3、
MOVAX,BX寄存器尋址方式
4、MOVAX,[BX]
寄存器間接尋址方式5、
MOVAX,[BX][DI]基址變址尋址方式6、INAX,28HI/O口傳送指令—設(shè)備信號(hào)讀入7、
OUT5,ALI/O口傳送指令—寫入設(shè)備8、
JCOPR有進(jìn)位轉(zhuǎn)移到OPR9、JZOPR結(jié)果為零轉(zhuǎn)移到OPR10、JNZOPR結(jié)果非零轉(zhuǎn)移到OPR11、JMP
OPR無(wú)條件轉(zhuǎn)移到OPR12、MOVBX,OFFSETLIST
地址傳送指令13、ADCDX,BX帶進(jìn)位加14、ABCDB39,250,?,0,?定義數(shù)據(jù)的偽指令15、SEGMENT……ENDS段定義偽指令105匯編語(yǔ)言程序的格式數(shù)據(jù)段名SEGMENT
;SEGMENT
段定義偽指令,與ENDS構(gòu)成一對(duì)使用數(shù)據(jù)空間預(yù)置數(shù)據(jù)段名ENDS堆棧段名
SEGMENT
堆??臻g預(yù)置堆棧段名ENDS代碼段名SEGMENTASSUME
段地址說(shuō)明START:
段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統(tǒng)在加載程序后自動(dòng)裝填的,即由操作系統(tǒng)的任務(wù)管理程序自動(dòng)完成裝填的,此項(xiàng)裝填不需要用戶管理。)主程序體
..代碼段名ENDS;代碼段結(jié)束
ENDSTART;全部程序結(jié)束106datasegment;數(shù)據(jù)段
arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆棧段
stakdb10dup(?)stackendscodesegment;代碼段
assumecs:code;段地址說(shuō)明
ds:datass:stack;前面全是偽指令
start:movax,data;段地址裝填
movds,axmovax,stackmovss,ax;;;;代碼段不用裝填!!
movdi,offsetsum;有效地址
movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;帶進(jìn)位加
incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:編一個(gè)程序,其功能是對(duì)5個(gè)數(shù)據(jù)求和,并將結(jié)果放入SUM單元。107
幾點(diǎn)易混淆的概念datasegmentarraydb32,43,56,8,65countequ$-arraysumdw?dataends
stacksegmentstakdb10dup(?)stackendscodesegmentassumecs:code,ds:datass:stackstart:movax,datamovds,ax;數(shù)據(jù)段賦值。注意1:;通過寄存器送ds是必;須的;注意2:data是;segment定義的特殊;符號(hào),否則mov存的;將不是段。
movax,stackmovss,ax;堆棧段賦值
movdi,offsetsummovbx,offsetarray
;若寫成movbx,array;或?qū)懗蒻ovbx,[array]??
movcx,countmovax,0Lop:addal,[bx]adcah,0;帶進(jìn)位加
incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart108datasegment;數(shù)據(jù)段
x1db?maxdb?mixdb?dataendscodesegment;代碼段
assumecs:code;段地址說(shuō)明
ds:datastart:movax,data;段地址裝填
movds,axmov
al,65cmpal,[x1];cmpal,x1也可
jcaaamovmax,65;
jmpbbb
aaa:movmax,[x1]jmpenddbbb:moval,8cmpal,[x1]jcenddmovmin,[x1]jmpcccendd:movmin,8ccc:movah,4chint21h;返回DOScodeendsendstart作業(yè)1:編一個(gè)程序,將6個(gè)數(shù)據(jù)32,43,56,8,65,x1的最大數(shù)放入MAX單元,將最小數(shù)放入MIN單元。注意:x1為放有數(shù)的字節(jié)單元(符號(hào)地址)。109作業(yè)2:編一個(gè)程序,將3個(gè)數(shù)據(jù)x1,x2,x3的最大數(shù)放入MAX單元,將最小數(shù)放入MIN單元。注意:x1,x2,x3為三個(gè)放有數(shù)的字節(jié)單元。解:datasegment;數(shù)據(jù)段
x1db?x2db?x3db?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美食節(jié)場(chǎng)地租賃合同
- 招聘營(yíng)銷試用合同范例
- 營(yíng)銷推廣合作委托合同三篇
- 私人住宅裝修合同三篇
- 黃金投資合同三篇
- 貨物裝卸合同(2篇)
- 公積金抵債協(xié)議書
- 土地法超過2028年的承包合同
- 鏟車用工合同范例
- 顧問用工合同范例
- 讀書分享《非暴力溝通》課件(圖文)
- 專題 與角度有關(guān)的計(jì)算問題(35題提分練)2024-2025學(xué)年七年級(jí)數(shù)學(xué)上冊(cè)同步課堂(北師大版2024)
- 網(wǎng)格員調(diào)解員培訓(xùn)
- 浙江省紹興市2025屆高三上學(xué)期一模地理試題 含解析
- 安全與急救學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 人教 九下 歷史 第五單元《社會(huì)主義的發(fā)展與挫折》課件
- 醫(yī)療器械注冊(cè)專員培訓(xùn)
- 金屬冶煉知識(shí)培訓(xùn)
- 2024-2025學(xué)年度廣東省春季高考英語(yǔ)模擬試卷(解析版) - 副本
- 新疆喀什地區(qū)八年級(jí)上學(xué)期期末英語(yǔ)試題(含答案)
- 商會(huì)內(nèi)部管理制度
評(píng)論
0/150
提交評(píng)論