版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2.38086中的標(biāo)志寄存器和堆棧
1一、標(biāo)志寄存器(FlagRegister)8086CPU中有一個(gè)16位的標(biāo)志寄存器(FR),共設(shè)有9個(gè)標(biāo)志位,用以反映算術(shù)、邏輯運(yùn)算結(jié)果的特征及反映CPU的控制,有7位無用。
不同的指令對標(biāo)志的影響是不同的(如傳送類、轉(zhuǎn)移類等指令不影響標(biāo)志位,而算術(shù)邏輯運(yùn)算大部分都影響標(biāo)志位);反之,不同的標(biāo)志也影響著指令執(zhí)行的結(jié)果。
2一、標(biāo)志寄存器(FlagRegister)(續(xù))
其中6個(gè)狀態(tài)標(biāo)志:CF、PF、AF、ZF、SF、OF
3個(gè)控制標(biāo)志:IF、DF、TF。
有7位空的未用。OFDFIFTFSFZFAFPFCF15141312111098765432103一、標(biāo)志寄存器(FlagRegister)(續(xù))CF:進(jìn)位標(biāo)志(CarryFlag)
當(dāng)運(yùn)算的結(jié)果在最高位(8位,16位)上產(chǎn)生一個(gè)進(jìn)位或借位時(shí),CF=1;反之,CF=0。PF:奇偶標(biāo)志(ParityFlag)
當(dāng)運(yùn)算結(jié)果低8位中“1”的個(gè)數(shù)為偶數(shù)時(shí),PF=1;為奇數(shù)時(shí),PF=0。4一、標(biāo)志寄存器(FlagRegister)(續(xù))AF:輔助進(jìn)位標(biāo)志(AuxiliaryCarryFlag)
在算術(shù)運(yùn)算中,當(dāng)一個(gè)8位(或16位)數(shù)的低4位向高4位(即b3位向b4位)有進(jìn)位或借位時(shí),AF=1;反之,AF=0。此標(biāo)志用于BCD碼運(yùn)算指令中。ZF:零標(biāo)志(ZeroFlag)
當(dāng)運(yùn)算結(jié)果為全“0”時(shí),ZF=1;反之,ZF=0。5SF:符號標(biāo)志(SignFlag)
當(dāng)運(yùn)算結(jié)果的最高位為“1”時(shí),SF=1;反之,SF=0。OF:溢出標(biāo)志(OverflowFlag)
在算術(shù)運(yùn)算中,符號數(shù)的運(yùn)算結(jié)果超出8位或(16位)符號數(shù)表達(dá)的范圍,OF=1;反之,OF=0。(8位:-128~+127;16位:-32768~+32767)溢出與進(jìn)位是兩個(gè)不同性質(zhì)的標(biāo)志,一個(gè)反映符號數(shù),一個(gè)反映純數(shù)值。6此外還設(shè)有3個(gè)控制標(biāo)志:DF:方向標(biāo)志(DirectionFlag)
用于控制字符串操作指令的步進(jìn)方向。當(dāng)DF=0時(shí),表示從低址向高址以遞增順序進(jìn)行串處理;當(dāng)DF=1時(shí),表示從高址向低址以遞減順序進(jìn)行串處理。7IF:中斷允許標(biāo)志(InterruptenableFlag)
當(dāng)IF=1時(shí),允許中斷;當(dāng)IF=0時(shí),禁止中斷。該標(biāo)志可用指令STI或CLI使其置1或0。
IF標(biāo)志對NMI信號或由內(nèi)部中斷(INTn)無作用。8TF:陷阱或跟蹤標(biāo)志(TrapFlag)
當(dāng)TF=1時(shí),CPU進(jìn)入單步工作方式,每執(zhí)行完一條指令就自動產(chǎn)生一個(gè)內(nèi)部中斷,以便進(jìn)行程序調(diào)試。當(dāng)TF=0時(shí),連續(xù)執(zhí)行程序。(沒有專門的指令使TF置1或0)9二、堆棧什么是堆棧?堆棧是一個(gè)按照后進(jìn)先出(LIFO—LastInFirstOut)的原則存取數(shù)據(jù)的部件或區(qū)域。硬件堆棧:內(nèi)部寄存器作為堆棧,工作速度快,容量不大:軟件堆棧:用內(nèi)存作為堆棧,工作速度慢,容量大,內(nèi)存有多大,堆棧就有多大,堆棧由一個(gè)堆棧指針SP和一個(gè)棧區(qū)組成。10為什么要用堆棧?主程序與子程序,主程序調(diào)用子程序,或者子程序調(diào)用子程序,或者處理中斷服務(wù)程序,CPU必須把主程序調(diào)用子程序指令的下一條指令的地址(或中斷時(shí)的斷點(diǎn))即PC值保留下來,才能保證子程序(或中斷服務(wù)程序)執(zhí)行完之后正確返回到主程序繼續(xù)執(zhí)行。另外,調(diào)用子程序之前的有關(guān)REG、標(biāo)志位也要及時(shí)正確的保存下來。11堆棧如何操作?
堆棧必須設(shè)有一個(gè)區(qū)域(棧區(qū)),還需一個(gè)指針(SP),指示棧在什么位置。8086與棧有關(guān)的寄存器是SS和SP。SS:標(biāo)識現(xiàn)行堆棧的基地址;
SP:標(biāo)識現(xiàn)行堆棧的段內(nèi)偏移量。
8086中的棧是“向下生成”的棧,即隨著入棧數(shù)據(jù)增加,SP值減小。有些處理器或單片機(jī)還有“向上生成”的棧。12
SP值由指令MOVSP,data設(shè)定初值??諚r(shí),棧頂與棧底是重合的,隨著壓入棧中數(shù)據(jù)增加,堆棧擴(kuò)展,SP減小,SP始終指向棧頂。堆棧操作有專門的指令PUSH××與POP××。8086的入棧與出棧彈出操作每次是一個(gè)字,而不是一個(gè)字節(jié)。13舉例:若SS=1200H,SP=1000H,執(zhí)行PUSHAX(設(shè)AX=1234H),看棧針與棧中的內(nèi)容。
先修改棧針,再壓入數(shù)據(jù),先壓入高字節(jié),后壓入低字節(jié)。分兩步:1.先SP-1→SP,壓入高位字節(jié)(即AH內(nèi)容);2.再SP-1→SP,壓入低位字節(jié)(即AL內(nèi)容)。14
壓入堆棧操作如圖:SS×16+SP12000H+1000H13000H3412××低址高址SP=1000HSP-1→0FFFHSP-1→0FFEHM12FFEH12FFFH13000HAX=1234(2)(1)15出棧操作與入棧操作相反:1.先彈出低位內(nèi)容,修改SP→SP+1;2.再彈出高位內(nèi)容,再修改SP→SP+1;注:CALL與RET中保護(hù)斷點(diǎn)與恢復(fù)斷點(diǎn)是由指令自動完成的。16舉例:若SS=1500H,SP=1000H,執(zhí)行POPBX(設(shè)棧中數(shù)據(jù)=5678H),看棧針與棧中的內(nèi)容如何變化。彈出也分為兩步:
?先彈出低8位(78H→BL),修改棧針,SP+1→SP;
?再彈出高8位(56H→BH),再修改棧針,SP+1→SP;
執(zhí)行POPBX
指令后,BX=5678H,SP=1002H,SS=1500H,
堆棧中的數(shù)據(jù)仍然不變。17彈出操作如下圖:SS×16+SP15000H+1000H16000H7856××低址高址SP=1000HSP+1→1002HSP+1→1001HM16000H16001H16002HBX=BHBL5678(1)(2)18第四節(jié)8086系統(tǒng)的組成19一、存儲器的組織與分段存儲器組織
8086有20位地址線,尋址范圍1M字節(jié)(從00000H~FFFFFH),每一單元都有一個(gè)唯一的物理地址,每個(gè)單元存儲一個(gè)字節(jié),任何兩個(gè)相鄰單元可存放一個(gè)字(word)。80386~Pentium處理器都是32位的地址,尋址范圍為232=4GBytes=(4096MB)。20幾個(gè)基本概念:
字節(jié)地址—對應(yīng)的單元地址;字地址—兩個(gè)地址中低址作為字地址;字符串地址—低字節(jié)存放在低址單元,高字節(jié)存放在高址單元。21例1:把5678H寫入1002H單元。78H→1002H56H→1003H7856M1002H1003H22例2:把字串12345678H寫入1000H單元。78→1000H…12→1003H
讀:從1002H讀出時(shí),讀一個(gè)字節(jié)是34,讀一個(gè)字是1234;從1001讀出一個(gè)字是3456H,但讀奇址的字時(shí),需訪問內(nèi)存兩次,忽略掉78H與12H;讀寫字節(jié)時(shí)每次數(shù)據(jù)總線上仍是16位,忽略掉另一個(gè)字節(jié)。請參看P47圖2.15,8086從存儲器中讀、寫字與字節(jié)示意圖78563412M100010011002100323存儲器分段分段原因:CPU內(nèi)沒有設(shè)置20位的地址寄存器,只有16位的寄存器,16位寄存器無法存放20位地址,所以把20位地址分為基地址(段)和偏移量;分別存放在兩個(gè)16位寄存器中。好處是:程序區(qū)、堆棧區(qū)和數(shù)據(jù)區(qū)可以互相隔離,方便程序的再定位。?允許段重疊:根據(jù)情況,段與段之間可以重疊,幾個(gè)段可以在一個(gè)64K段內(nèi),但各段的起始地址是不同的。24?8086系統(tǒng)存儲器分段示意圖
25
存儲器的實(shí)際地址就是物理地址(或絕對地址)20位;存儲器的邏輯地址是段基址和16位偏移量組成。因?yàn)槎蜶EG為16位,所以每64KByte為一段。實(shí)際地址是由段地址左移4位加上所對應(yīng)的16位地址偏移量。
CPU中的BIU中有一個(gè)20位地址加法器,用來形成20位的物理地址。(段自動左移4位與偏移量相加)268086物理地址的形成27不同的邏輯地址可以變換成同一個(gè)物理地址,反之亦然。例如:物理地址為25000H
邏輯地址:段基址為2000H,偏移量5000H段基址為2100H,偏移量4000H段基址為2200H,偏移量3000H28二、輸入/輸出結(jié)構(gòu)8086可訪問8位I/O端口或16位I/O端口,若直接尋址方式尋I/O端口,用8位地址,可訪問28=256個(gè)端口地址;若用間接尋址方式尋I/O,用16位地址,可訪問216=64K個(gè)端口地址;間接尋址通過DX寄存器,I/O端口不設(shè)段REG,可以認(rèn)為全部端口都在同一個(gè)段內(nèi)。8086系列的處理器設(shè)有專門的I/O指令(即IN和OUT指令)。29三、總線接口部件介紹兩種常用的總線接口部件:地址鎖存器和總線驅(qū)動器。下面是本教材(采用國際符號)和某些教材的邏輯門電路符號對照表30三、總線接口部件地址鎖存器(8282)(或74LS373)8282(或373)是帶三態(tài)輸出緩沖器的8位雙向鎖存器。選通信號:STB(Strobe)把輸入數(shù)據(jù)鎖入鎖存器。當(dāng)STB=1時(shí),輸入數(shù)據(jù);當(dāng)STB=0時(shí),鎖存數(shù)據(jù);
ALE→STBOE為輸出允許信號,當(dāng)其為低時(shí),數(shù)據(jù)就出現(xiàn)在數(shù)據(jù)線上;OE=1時(shí),鎖存器處于高阻。31帶三態(tài)緩沖的8位數(shù)據(jù)鎖存器82828282內(nèi)部結(jié)構(gòu)STB:選通脈沖OE:為0時(shí)輸出有效為1時(shí)輸出為高阻32雙向總線驅(qū)動器(總線收發(fā)器)數(shù)據(jù)鎖存不是必須的,但在較大的系統(tǒng)中,由于使用的存儲器和I/O接口數(shù)量較多,為了增加CPU數(shù)據(jù)總線帶負(fù)載的能力,一般接入總線驅(qū)動器以提高數(shù)據(jù)總線帶負(fù)載之能力。33
8286(或74LS245)是8位總線驅(qū)動器(雙向)
T是控制收發(fā)方向的輸入控制信號:T=1,A→B;T=0,B→A;OE=0,輸出允許信號;OE=1,8086是高阻。8286可以提供32mA驅(qū)動。34帶三態(tài)的8位雙向數(shù)據(jù)緩沖器82868286內(nèi)部結(jié)構(gòu)圖35四、8086的兩種組態(tài)最小組態(tài):
CPU提供所有的總線控制信號,以實(shí)現(xiàn)與MEM和I/O接口的連接。(最小組態(tài)如下圖)368086最小模式37最大組態(tài):當(dāng)MN/MX=0時(shí),8086組成最大組態(tài),以組成多處理器系統(tǒng)。在此組態(tài)下,一些系統(tǒng)資源由多個(gè)處理器所公用,它們被稱為全局資源;另一些資源為某個(gè)處理器所專用的,稱為局部或?qū)S觅Y源。
38在多處理器系統(tǒng)中,任何時(shí)刻只能有一個(gè)處理器訪問總線,采取的措施是:總線控制器(8288)(產(chǎn)生命令和控制時(shí)序,提供總線驅(qū)動能力)8288對8086的三個(gè)總線狀態(tài)信號(S0、S1、S2)進(jìn)行譯碼,以產(chǎn)生與多總線結(jié)構(gòu)兼容的各種定時(shí)命令和控制信號。譯出8種信號,111時(shí)不用(無源),還有7種作為命令信號,請參看下表。39總線狀態(tài)碼與輸出命令對應(yīng)表40
(1)8288總線控制器418288提供超前寫命令(AMWC、AIOC):
即在寫周期開始之前就啟動寫過程,其時(shí)序與讀命令相同,在一定程度上避免處理器進(jìn)入沒必要的等待狀態(tài)。8288有兩種工作方式,由IOB決定:當(dāng)IOB=0,系統(tǒng)總線工作方式;當(dāng)IOB=1,I/O總線工作方式(8089I/O處理器)42(2)總線裁決器(8289)有了8289,才允許多個(gè)處理器(8086,8087,8089等)駐留在系統(tǒng)總線上,每個(gè)處理器都有自己的裁決器,每個(gè)裁決器都有一個(gè)總線請求信號BREQ??偩€的裁決器根據(jù)8086系統(tǒng)的多總線裁決規(guī)程進(jìn)行。裁決器的連接方式有3種:⑴.并聯(lián)優(yōu)先權(quán)判別方式(BREQ送入優(yōu)先權(quán)編碼器)⑵.串聯(lián)優(yōu)先權(quán)判別方式(與連接位置有關(guān),菊花鏈)⑶.循環(huán)優(yōu)先權(quán)判別方式(動態(tài)分配,電路復(fù)雜)43總線裁決器(8289)8289總線裁決器44(3)8086最大組態(tài)圖8086最大組態(tài)特點(diǎn):三個(gè)狀態(tài)信號S0~S2經(jīng)8288總線譯碼器譯碼后產(chǎn)生最大組態(tài)時(shí)CPU對外的控制信號(共七個(gè)信號),8288本身還提供一些控制信號。最大組態(tài)電路如下圖所示。4546第五節(jié)8086系統(tǒng)時(shí)鐘與總線周期
47一、系統(tǒng)時(shí)鐘?時(shí)鐘發(fā)生器:8284A提供系統(tǒng)時(shí)鐘。8284A組成:晶體震蕩器,一個(gè)三分頻器,起步作用的READY信號及復(fù)位RESET信號。功能:提供時(shí)鐘源(EFI和晶體)信號與時(shí)鐘的同步:多個(gè)8284的同步,外部事件(Ready、Reset)與時(shí)鐘同步。輸出:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年瓷磚供應(yīng)合同協(xié)議模板
- 《客戶投訴實(shí)務(wù)》課件
- 2024三方聯(lián)合開發(fā)餐飲配送電商平臺合同3篇
- 2024年無財(cái)產(chǎn)離婚協(xié)議書起草與房產(chǎn)分割協(xié)議合同3篇
- 2025礦山承包合同書范文
- 2025設(shè)備租賃合同大全
- 2024年度汽車牌照轉(zhuǎn)讓及環(huán)保節(jié)能服務(wù)合同樣本3篇
- 2025轉(zhuǎn)讓經(jīng)營合同
- 2024年度農(nóng)產(chǎn)品采購與綠色食品開發(fā)合同2篇
- 2024年校園講師臨時(shí)聘用合同
- 2024年上海高一數(shù)學(xué)試題分類匯編:三角(解析版)
- 大單品戰(zhàn)略規(guī)劃
- 商業(yè)店鋪定金租賃協(xié)議
- 《西方行政學(xué)說史》課程教學(xué)大綱
- 前置胎盤手術(shù)配合
- 2023年甘肅隴東學(xué)院招聘事業(yè)編制工作人員筆試真題
- 2023年北京語言大學(xué)新編長聘人員招聘考試真題
- 《雙因素理論視角下L市鄉(xiāng)鎮(zhèn)公務(wù)員激勵問題研究》
- 2024垃圾處理公司與城市的垃圾處理合同
- 語文-重慶市(重慶南開中學(xué))高2025屆高三第三次質(zhì)量檢測試題和答案
- 安徽省蕪湖市2023-2024學(xué)年高二上學(xué)期期末考試 生物 含解析
評論
0/150
提交評論