當(dāng)前位置首頁(yè) > 計(jì)算機(jī) > 計(jì)算機(jī)原理
搜柄,搜必應(yīng)! 快速導(dǎo)航 | 使用教程

微型計(jì)算機(jī)原理第3章

文檔格式:PPT| 235 頁(yè)|大小 636.50KB|積分 14.9|2024-12-10 發(fā)布|文檔ID:253264320
第1頁(yè)
第2頁(yè)
第3頁(yè)
下載文檔到電腦,查找使用更方便 還剩頁(yè)未讀,繼續(xù)閱讀>>
1 / 235
此文檔下載收益歸作者所有 下載文檔
  • 版權(quán)提示
  • 文本預(yù)覽
  • 常見(jiàn)問(wèn)題
  • 單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,,*,第3章 80x86微處理器,第3章 80x86微處理器,3.1 80x86微處理器簡(jiǎn)介,,3.2 8086/8088微處理器,,3.3 8086/8088存儲(chǔ)器和I/O組織,,3.4 從80286到Pentium系列的技術(shù)發(fā)展,,3.1 80x86微處理器簡(jiǎn)介,,80x86微處理器是美國(guó)Intel 公司生產(chǎn)的系列微處理器該公司成立于1968年,1969年就設(shè)計(jì)了4位的4004 芯片,1973年開(kāi)發(fā)出8位的8080芯片,1978年正式推出16位的8086微處理器芯片,由此開(kāi)始了Intel公司的80x86系列微處理器的生產(chǎn)歷史本節(jié)簡(jiǎn)要介紹Intel公司80x86系列微處理器的發(fā)展過(guò)程及其特性表3.1給出了80x86系列微處理器概況下面通過(guò)對(duì)表中有關(guān)技術(shù)數(shù)據(jù)的分析來(lái)說(shuō)明Intel 80x86系列微處理器的發(fā)展情況表中“集成度”是指CPU芯片中所包含的晶體管數(shù)主頻”是指芯片所使用的主時(shí)鐘頻率,它直接影響計(jì)算機(jī)的運(yùn)行速度數(shù)據(jù)總線(xiàn)”是計(jì)算機(jī)中各個(gè)組成部件間進(jìn)行數(shù)據(jù)傳送時(shí)的公共通道,“內(nèi)數(shù)據(jù)總線(xiàn)寬度”是指CPU芯片內(nèi)部數(shù)據(jù)傳送的寬度(位數(shù)),“外數(shù)據(jù)總線(xiàn)寬度”是指CPU與外部交換數(shù)據(jù)時(shí)的數(shù)據(jù)寬度,顯然,數(shù)據(jù)總線(xiàn)位數(shù)越多,數(shù)據(jù)交換的速度就越快。

    地址總線(xiàn)”是在對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn)時(shí),傳送?由CPU提供的要訪問(wèn)的存儲(chǔ)單元或I/O端口的地址信息的總線(xiàn),其寬度決定了處理器能直接訪問(wèn)的主存容量大小如8086有20根地址線(xiàn),使用這20根地址線(xiàn)上不同地址信息的組合,可直接對(duì)2,20,=1M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn);Pentium II有36根地址線(xiàn),因此它可直接尋址的最大地址范圍為2,36,=64G高速緩沖存儲(chǔ)器Cache的使用,大大減少了CPU讀取指令和操作數(shù)所需的時(shí)間,使CPU的執(zhí)行速度顯著提高為了滿(mǎn)足微型計(jì)算機(jī)對(duì)存儲(chǔ)器系統(tǒng)高速度、大容量、低成本的要求,目前,微型計(jì)算機(jī)系統(tǒng)采用如圖3.1所示的三級(jí)存儲(chǔ)器組織結(jié)構(gòu),即由高速緩沖存儲(chǔ)器Cache、主存和外存組成表3.1 80x86系列微處理器概況,,當(dāng)前正在執(zhí)行的程序或要使用的數(shù)據(jù)必須從外存調(diào)入主存后才能被CPU讀取并執(zhí)行,主存容量通常為MB級(jí)(理論上可達(dá)GB級(jí),如Pentium II可配置的內(nèi)存最大容量可達(dá)2,36,=64G,但事實(shí)上,基于成本和必要性考慮,目前,微型計(jì)算機(jī)內(nèi)存配置一般都不會(huì)達(dá)到其理論允許值);當(dāng)前沒(méi)有使用的程序可存入外存,如硬盤(pán)、軟盤(pán)、光盤(pán)等,外存的容量通常很大,可達(dá)GB甚至TB級(jí);而高速緩沖存儲(chǔ)器的最大特點(diǎn)是存取速度快,但容量較小,通常為KB級(jí),將當(dāng)前使用頻率較高的程序和數(shù)據(jù)通過(guò)一定的替換機(jī)制從主存放入Cache,CPU在取指令或讀取操作數(shù)時(shí),同時(shí)對(duì)Cache和主存進(jìn)行訪問(wèn),如果Cache命中,則終止對(duì)主存的訪問(wèn),直接從Cache中將指令或數(shù)據(jù)送CPU處理,由于Cache的速度比主存快得多,因此,Cache的使用大大提高了CPU讀取指令或數(shù)據(jù)的速度。

    高速緩沖存儲(chǔ)器,,(Cache),,,,,,微處理器,,CPU,,,,,,主存儲(chǔ)器,,(主存),,,,,,,,外存儲(chǔ)器,,(外存),,,,圖3.1 存儲(chǔ)器三級(jí)結(jié)構(gòu),,,80386之前的CPU都沒(méi)有Cache80386 CPU內(nèi)無(wú)Cache,而由與之配套使用的Intel 82385 Cache 控制器實(shí)現(xiàn)CPU之外的Cache管理80486之后的CPU芯片內(nèi)部都集成了一至多個(gè)Cache需要說(shuō)明的是,80x86CPU在發(fā)展過(guò)程中,存儲(chǔ)器的管理機(jī)制發(fā)生了較大變化8086/8088CPU對(duì)存儲(chǔ)器的管理采用的是分段的實(shí)方式;80286CPU除了可在實(shí)方式下工作外,還可以在保護(hù)方式下工作;而80386CPU之后的處理器則具有三種工作方式:實(shí)方式、保護(hù)方式和虛擬8086方式在保護(hù)方式下,機(jī)器可提供虛擬存儲(chǔ)管理和多任務(wù)管理機(jī)制虛擬存儲(chǔ)的實(shí)現(xiàn),為用戶(hù)提供了一個(gè)比實(shí)際主存空間大得多的程序地址空間,從而可使用戶(hù)程序的大小不受主存空間的限制多任務(wù)管理機(jī)制的實(shí)現(xiàn),可允許多個(gè)用戶(hù)或一個(gè)用戶(hù)的多個(gè)任務(wù)同時(shí)在機(jī)器上運(yùn)行從80386開(kāi)始,微處理器除支持實(shí)方式和保護(hù)方式外,又增加了一種虛擬8086方式在這種方式下,一臺(tái)機(jī)器可以同時(shí)模擬多個(gè)8086處理器的工作。

    有關(guān)存儲(chǔ)器管理機(jī)制的詳細(xì)介紹,請(qǐng)參閱3.4.2 “80x86存儲(chǔ)器管理”一節(jié)3.2 8086/8088微處理器,,8086,是Intel系列的16位微處理器使用HMOS工藝制造,芯片上集成了2.9萬(wàn)個(gè)晶體管,用單一的+5V電源供電,封裝在標(biāo)準(zhǔn)的40引腳雙列直插式管殼內(nèi),時(shí)鐘頻率5MHz,?,10MHz8086有16條數(shù)據(jù)總線(xiàn),可以處理8位或16位數(shù)據(jù)有20條地址總線(xiàn),可以直接尋址1M(2,20,)字節(jié)的存儲(chǔ)單元和64K個(gè)I/O端口在8086推出后不久,為方便原8位機(jī)用戶(hù),Intel公司很快推出了8088微處理器,其指令系統(tǒng)與8086完全兼容,CPU內(nèi)部結(jié)構(gòu)仍為16位,但外部數(shù)據(jù)總線(xiàn)是8位的,這樣設(shè)計(jì)的目的主要是為了與原有的8位外圍接口芯片兼容并以8088為CPU組成了IBM PC、PC/XT等準(zhǔn)16位微型計(jì)算機(jī),由于其性能價(jià)格比高,很快占領(lǐng)了市場(chǎng)3.2.1,,8086/8088內(nèi)部結(jié)構(gòu),,,一.總線(xiàn)接口單元BIU,,總線(xiàn)接口單元BIU的功能是負(fù)責(zé)完成CPU與存儲(chǔ)器或I/O設(shè)備之間的數(shù)據(jù)傳送具體任務(wù)是:,,① 指令隊(duì)列出現(xiàn)空字節(jié)(8088CPU 1個(gè)空字節(jié),8086CPU 2個(gè)空字節(jié))時(shí),從內(nèi)存取出后續(xù)指令。

    BIU取指令時(shí),并不影響EU的執(zhí)行,兩者并行工作,大大提高了CPU的執(zhí)行速度② EU需要從內(nèi)存或外設(shè)端口讀取操作數(shù)時(shí),根據(jù)EU給出的地址從內(nèi)存或外設(shè)端口讀取數(shù)據(jù)供EU使用,,③ EU的運(yùn)算結(jié)果、數(shù)據(jù)或控制命令等由BIU送往指定的內(nèi)存單元或外設(shè)端口總線(xiàn)接口單元內(nèi)有4個(gè)16位段寄存器:代碼段寄存器CS(Code Segment)、數(shù)據(jù)段寄存器DS(Data Segment)、堆棧段寄存器SS(Stack Segment)和附加數(shù)據(jù)段寄存器ES(Extra Segment),一個(gè)16位的指令指針寄存器IP(Instruction Pointer),一個(gè)20位地址加法器,6字節(jié)指令隊(duì)列緩沖器,一個(gè)與EU通訊的內(nèi)部寄存器以及總線(xiàn)控制電路等圖3.2 8086CPU內(nèi)部結(jié)構(gòu)框圖,,,1.段寄存器,,8086CPU的地址引腳有20根,能提供20位的地址信息,可直接對(duì)1M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn),但CPU內(nèi)部可用來(lái)提供地址信息的寄存器都是16位的,那么如何用16位寄存器實(shí)現(xiàn)20位地址的尋址呢?8086/8088采用了段結(jié)構(gòu)的內(nèi)存管理的方法將指令代碼和數(shù)據(jù)分別存儲(chǔ)在代碼段、數(shù)據(jù)段、堆棧段、附加數(shù)據(jù)段中,這些段的段地址分別由段寄存器CS、DS、SS、ES提供,而代碼或數(shù)據(jù)在段內(nèi)的偏移地址則由有關(guān)寄存器或立即數(shù)給出。

    代碼段寄存器CS存儲(chǔ)程序當(dāng)前使用的代碼段的段地址代碼段用來(lái)存放程序的指令代碼下一條要讀取指令在代碼段中的偏移地址由指令指針寄存器IP提供;數(shù)據(jù)段寄存器DS用來(lái)存放程序當(dāng)前使用的數(shù)據(jù)段的段地址一般來(lái)說(shuō),程序中所用到的原始數(shù)據(jù)、中間結(jié)果以及最終結(jié)果都存放在數(shù)據(jù)段中,如果程序中使用了字符串處理指令,則源字符串也存放在數(shù)據(jù)段中;堆棧段寄存器SS用來(lái)存放程序當(dāng)前所使用的堆棧段的段地址堆棧是在存儲(chǔ)器中開(kāi)辟的一個(gè)特定區(qū)域,詳見(jiàn)3.3.4 “堆棧操作”一節(jié)附加數(shù)據(jù)段寄存器ES用來(lái)存放程序當(dāng)前使用的附加數(shù)據(jù)段的段地址附加數(shù)據(jù)段通常用于存放字符串操作時(shí)的目的字符串程序員在編寫(xiě)匯編語(yǔ)言源程序時(shí),應(yīng)該按照上述規(guī)定將程序的各個(gè)部分放在規(guī)定的段內(nèi)每個(gè)源程序必須至少有一個(gè)代碼段,而數(shù)據(jù)段、堆棧段和附加數(shù)據(jù)段則根據(jù)程序的需要決定是否設(shè)置2.指令指針寄存器,,指令指針寄存器IP用來(lái)存放下一條要讀取的指令在代碼段中的偏移地址IP在程序運(yùn)行中能自動(dòng)加1修正,從而使其始終存放的是下一條要讀取的指令在代碼段的偏移地址由于CS和IP的內(nèi)容決定了程序的執(zhí)行順序,因此程序員不能直接用賦值指令對(duì)其內(nèi)容進(jìn)行修改有些指令能使IP和CS的值改變(如跳轉(zhuǎn)指令)或使其值壓入堆棧或從堆棧中彈出恢復(fù)原值(如子程序調(diào)用指令和返回指令)。

    3.20位地址加法器,,8086/8088CPU在對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)以讀取指令或讀/寫(xiě)操作數(shù)時(shí),必須在地址總線(xiàn)上提供20位的地址信息,以便選中對(duì)應(yīng)的存儲(chǔ)單元那么,CPU是如何產(chǎn)生20位地址的呢?,,CPU提供的用來(lái)對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)的20位地址是由BIU中的地址加法器產(chǎn)生的存儲(chǔ)器中每個(gè)存儲(chǔ)單元的地址可有以下兩種表示方式:,,邏輯地址,:其表達(dá)形式為“段地址:段內(nèi)偏移地址”段內(nèi)偏移地址又稱(chēng)為“有效地址EA(Effective Address)在讀指令時(shí),段地址由代碼段寄存器CS提供,當(dāng)前要讀取指令在代碼段中的偏移地址由指令指針寄存器IP提供;在讀取或存儲(chǔ)操作數(shù)時(shí),根據(jù)具體操作,段地址由DS、ES或SS提供,段內(nèi)偏移地址由指令給出物理地址,:CPU與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)在地址總線(xiàn)上提供的20位地址信息稱(chēng)為物理地址物理地址的形成過(guò)程如圖3.3所示當(dāng)由IP提供或由EU根據(jù)指令所提供尋址方式計(jì)算出尋址單元的16位段內(nèi)偏移地址后,把該偏移地址和段寄存器內(nèi)容左移四位后(相當(dāng)于乘以10H)得到的段基址(段內(nèi)第一個(gè)存儲(chǔ)單元的物理地址)同時(shí)送到BIU中的地址加法器,形成一個(gè)20位的物理地址,從而實(shí)現(xiàn)對(duì)存儲(chǔ)單元的訪問(wèn)。

    由邏輯地址求物理地址的公式為:,,物理地址=段地址,?,10H+段內(nèi)偏移地址,,如假設(shè)當(dāng)前(CS)=20A8H,(IP)=2008H,那么,下一條從內(nèi)存中讀取的指令所在存儲(chǔ)單元的物理地址為:20A8H,?,10H+ 2008H=22A88H圖3.3 物理地址的形成,,,4. 指令隊(duì)列緩沖器,,8086的指令隊(duì)列有6個(gè)字節(jié),8088的指令隊(duì)列有4個(gè)字節(jié)對(duì)8086而言,當(dāng)指令隊(duì)列出現(xiàn)2個(gè)空字節(jié),對(duì)8088而言,指令隊(duì)列出現(xiàn)1個(gè)空字節(jié)時(shí),BIU就自動(dòng)執(zhí)行一次取指令周期,將下一條要執(zhí)行的指令從內(nèi)存單元讀入指令隊(duì)列它們采用“先進(jìn)先出”原則,按順序存放,并按順序取到EU中去執(zhí)行當(dāng)EU執(zhí)行一條需要到存儲(chǔ)器或I/O端口讀取操作數(shù)的指令時(shí),BIU將在執(zhí)行完現(xiàn)行取指令的存儲(chǔ)器周期后的下一個(gè)存儲(chǔ)周期,對(duì)指令所指定的存儲(chǔ)單元或I/O端口進(jìn)行訪問(wèn),讀取的操作數(shù)經(jīng)BIU送EU進(jìn)行處理當(dāng)EU執(zhí)行跳轉(zhuǎn)、子程序調(diào)用或返回指令時(shí),BIU就使指令隊(duì)列復(fù)位,并從指令給出的新地址開(kāi)始取指令,新取的第1條指令直接經(jīng)指令隊(duì)列送EU執(zhí)行,隨后取來(lái)的指令將填入指令隊(duì)列緩沖器指令隊(duì)列的引入使得EU和BIU可并行工作,即BIU在讀指令時(shí),并不影響EU單元執(zhí)行指令,EU單元可以連續(xù)不斷地直接從指令隊(duì)列中取到要執(zhí)行的指令代碼,從而減少了CPU為取指令而等待的時(shí)間,提高了CPU的利用率,加快了整機(jī)的運(yùn)行速度。

    二.執(zhí)行單元EU,,執(zhí)行單元EU不與系統(tǒng)外部直接相連,它的功能只是負(fù)責(zé)執(zhí)行指令執(zhí)行的指令從BIU的指令隊(duì)列緩沖器中直接得到,執(zhí)行指令時(shí)若需要從存儲(chǔ)器或I/O端口讀取操作數(shù)時(shí),由EU向BIU發(fā)出請(qǐng)求,再由BIU對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn)EU由下列部件組成:,,1.,,16位算術(shù)邏輯單元(ALU):用于進(jìn)行算術(shù)和邏輯運(yùn)算2.,,16位標(biāo)志寄存器FLAGS:用來(lái)存放CPU運(yùn)算的狀態(tài)特征和控制標(biāo)志3. 數(shù)據(jù)暫存寄存器:協(xié)助ALU完成運(yùn)算,暫存參加運(yùn)算的數(shù)據(jù)4.,,通用寄存器:包括4個(gè)16位數(shù)據(jù)寄存器AX、BX、CX、DX和4個(gè)16位指針與變址寄存器SP、BP與SI、DI5.,,EU控制電路:它是控制、定時(shí)與狀態(tài)邏輯電路,接收從BIU中指令隊(duì)列取來(lái)的指令,經(jīng)過(guò)指令譯碼形成各種定時(shí)控制信號(hào),對(duì)EU的各個(gè)部件實(shí)現(xiàn)特定的定時(shí)操作8088CPU內(nèi)部結(jié)構(gòu)與8086基本相似,兩者的執(zhí)行單元EU完全相同,其指令系統(tǒng),尋址方式及程序設(shè)計(jì)方法都相同,所以?xún)煞NCPU完全兼容區(qū)別僅在于總線(xiàn)接口單元BIU,歸納起來(lái)主要有以下幾個(gè)方面的差異:,,1.外部數(shù)據(jù)總線(xiàn)位數(shù)不同8086外部數(shù)據(jù)總線(xiàn)16位,在一個(gè)總線(xiàn)周期內(nèi)可以輸入/輸出一個(gè)字(16位數(shù)據(jù)),而8088外部數(shù)據(jù)總線(xiàn)8位,在一個(gè)總線(xiàn)周期內(nèi)只能輸入/輸出一個(gè)字節(jié)(8位數(shù)據(jù))。

    2.指令隊(duì)列緩沖器大小不同8086指令隊(duì)列可容納6個(gè)字節(jié),且在每一個(gè)總線(xiàn)周期中從存儲(chǔ)器取出2個(gè)字節(jié)的指令代碼填入指令隊(duì)列;而8088指令隊(duì)列只能容納4個(gè)字節(jié),在一個(gè)機(jī)器周期中取出一個(gè)字節(jié)的指令代碼送指令隊(duì)列3.部分引腳的功能定義有所區(qū)別3.2.2 8086/8088寄存器結(jié)構(gòu),,圖3.4 8086/8088CPU內(nèi)部寄存器結(jié)構(gòu),,,一.通用寄存器,,通用寄存器包括四個(gè)數(shù)據(jù)寄存器,兩個(gè)地址指針寄存器和兩個(gè)變址寄存器1.?dāng)?shù)據(jù)寄存器AX、BX、CX、DX,,數(shù)據(jù)寄存器一般用于存放參與運(yùn)算的操作數(shù)或運(yùn)算結(jié)果每個(gè)數(shù)據(jù)寄存器都是16位的,但又可將高、低8位分別作為兩個(gè)獨(dú)立的8位寄存器來(lái)用高8位分別記作AH、BH、CH、DH,低8位分別記作AL,BL,CL,DL例如AX可當(dāng)作兩個(gè)8位寄存器AH、AL使用注意,8086/8088 CPU的14個(gè)寄存器除了這4個(gè)16位寄存器能分別當(dāng)作兩個(gè)8位寄存器來(lái)用之外,其它寄存器都不能如此使用上述4個(gè)寄存器一般用來(lái)存放數(shù)據(jù),但它們各自都有自己的特定用途:,,AX(Accumulator)稱(chēng)為累加器用該寄存器存放運(yùn)算結(jié)果可使指令簡(jiǎn)化,提高指令的執(zhí)行速度此外,所有的I/O指令都使用該寄存器與外設(shè)端口交換信息。

    BX(Base)稱(chēng)為基址寄存器8086/8088CPU中有兩個(gè)基址寄存器BX和BPBX用來(lái)存放操作數(shù)在內(nèi)存中數(shù)據(jù)段內(nèi)的偏移地址,BP用來(lái)存放操作數(shù)在堆棧段內(nèi)的偏移地址CX(Counter)稱(chēng)為計(jì)數(shù)器在設(shè)計(jì)循環(huán)程序時(shí)使用該寄存器存放循環(huán)次數(shù),可使程序指令簡(jiǎn)化,有利于提高程序的運(yùn)行速度DX(Data)稱(chēng)為數(shù)據(jù)寄存器在寄存器間接尋址的I/O指令中存放I/O端口地址;在做雙字長(zhǎng)乘除法運(yùn)算時(shí),DX與AX一起存放一個(gè)雙字長(zhǎng)操作數(shù),其中DX存放高16位數(shù)2. 地址指針寄存器SP、BP,,SP(Stack Pointer)稱(chēng)為堆棧指針寄存器在使用堆棧操作指令(PUSH或POP)對(duì)堆棧進(jìn)行操作時(shí),每執(zhí)行一次進(jìn)?;虺鰲2僮鳎到y(tǒng)會(huì)自動(dòng)將SP的內(nèi)容減2或加2,以使其始終指向棧頂BP(Base Pointer)稱(chēng)為基址寄存器作為通用寄存器,它可以用來(lái)存放數(shù)據(jù),但更經(jīng)常更重要的用途是存放操作數(shù)在堆棧段內(nèi)的偏移地址3.變址寄存器SI、DI,,SI(Source Index)稱(chēng)為源變址寄存器DI(Destination Index)稱(chēng)為目的變址寄存器這兩個(gè)寄存器通常用在字符串操作時(shí)存放操作數(shù)的偏移地址,其中SI存放源串在數(shù)據(jù)段內(nèi)的偏移地址,DI存放目的串在附加數(shù)據(jù)段內(nèi)的偏移地址。

    二 .段寄存器,,為了對(duì)1M個(gè)存儲(chǔ)單元進(jìn)行管理,8086/8088對(duì)存儲(chǔ)器進(jìn)行分段管理,即將程序代碼或數(shù)據(jù)分別放在代碼段、數(shù)據(jù)段、堆棧段或附加數(shù)據(jù)段中,每個(gè)段最多可達(dá)64K個(gè)存儲(chǔ)單元段地址分別放在對(duì)應(yīng)的段寄存器中,代碼或數(shù)據(jù)在段內(nèi)的偏移地址由有關(guān)寄存器或立即數(shù)給出8086/8088的四個(gè)段寄存器分別為:,,CS(Code Segment)稱(chēng)為代碼段寄存器,用來(lái)存儲(chǔ)程序當(dāng)前使用的代碼段的段地址CS的內(nèi)容左移四位再加上指令指針寄存器IP的內(nèi)容就是下一條要讀取的指令在存儲(chǔ)器中的物理地址DS(Data Segment)稱(chēng)為數(shù)據(jù)段寄存器,用來(lái)存放程序當(dāng)前使用的數(shù)據(jù)段的段地址DS的內(nèi)容左移四位再加上按指令中存儲(chǔ)器尋址方式給出的偏移地址即得到對(duì)數(shù)據(jù)段指定單元進(jìn)行讀寫(xiě)的物理地址SS(Stack Segment)稱(chēng)為堆棧段寄存器,用來(lái)存放程序當(dāng)前所使用的堆棧段的段地址堆棧是存儲(chǔ)器中開(kāi)辟的按先進(jìn)后出原則組織的一個(gè)特殊存儲(chǔ)區(qū),主要用于調(diào)用子程序或執(zhí)行中斷服務(wù)程序時(shí)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)ES(Extra Segment)稱(chēng)為附加數(shù)據(jù)段寄存器,用來(lái)存放程序當(dāng)前使用的附加數(shù)據(jù)段的段地址附加數(shù)據(jù)段用來(lái)存放字符串操作時(shí)的目的字符串。

    表3.2,8086/8088段寄存器與提供段內(nèi)移地址的,,寄存器之間的默認(rèn)組合,,,段寄存器,,,,提供段內(nèi)偏移地址的寄存器,,,,CS,,,,IP,,,,DS,,,,BX、SI、DI或一個(gè)16位數(shù),,,,SS,,,,SP或BP,,,,ES,,,,DI(用于字符串操作指令),,,,三. 控制寄存器,,IP(Instruction Pointer)稱(chēng)為指令指針寄存器,用來(lái)存放下一條要讀取的指令在代碼段內(nèi)的偏移地址用戶(hù)程序不能直接訪問(wèn)IPFLAGS稱(chēng)為標(biāo)志寄存器,它是一個(gè)16位的寄存器,但只用了其中9位,這9位包括6個(gè)狀態(tài)標(biāo)志位,3個(gè)控制標(biāo)志位,如圖3.5所示圖3.5 8086/8088的標(biāo)志寄存器,,1. 狀態(tài)標(biāo)志位,,狀態(tài)標(biāo)志位用來(lái)反映算術(shù)和邏輯運(yùn)算結(jié)果的一些特征如結(jié)果是否為“0”,是否有進(jìn)位、借位、溢出等不同指令對(duì)狀態(tài)標(biāo)志位的影響是不同的下面分別介紹這6個(gè)狀態(tài)標(biāo)志位的功能CF(Carry Flag)——進(jìn)位標(biāo)志當(dāng)進(jìn)行加減運(yùn)算時(shí),若最高位發(fā)生進(jìn)位或借位則CF為1,否則為0通常用于判斷無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出了計(jì)算機(jī)所能表示的無(wú)符號(hào)數(shù)的范圍PF(Parity Flag)——奇偶標(biāo)志位。

    當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF為1,否則為0AF(Auxiliary Flag)——輔助進(jìn)位標(biāo)志位當(dāng)執(zhí)行一條加法或減法運(yùn)算指令時(shí),若結(jié)果的低字節(jié)的低4位向高4位有進(jìn)位或借位,則AF為1,否則為0ZF(Zero Flag)——零標(biāo)志位若當(dāng)前的運(yùn)算結(jié)果為0,則ZF為1,否則為0SF(Sign Flag)——符號(hào)標(biāo)志位當(dāng)運(yùn)算結(jié)果的最高位為1時(shí),SF=1,否則為0OF(Overflow Flag)——溢出標(biāo)志位當(dāng)運(yùn)算結(jié)果超出了帶符號(hào)數(shù)所能表示的數(shù)值范圍,即溢出時(shí),OF=1,否則為0用來(lái)判斷帶符號(hào)數(shù)運(yùn)算結(jié)果是否溢出例3.1,設(shè)變量,x,=11101111B,,y,=11001000B,,XY,=01001100 10100011B,請(qǐng)問(wèn)分別執(zhí)行,x,+,y,和,X+Y,操作后標(biāo)志寄存器中各狀態(tài)位的狀態(tài)如何?,,11101111,,+) 11001000,,10110111,1,自動(dòng)丟失,0101101000001010,,0100110010100011,,1010011010101101,CF=0,CF=1,DF=1,,狀態(tài)位,執(zhí)行,x,+,y,后,執(zhí)行,X,+,Y,后,CF,最高位D,7,向前有進(jìn)位,CF=1,最高位D,15,向前沒(méi)有進(jìn)位,CF=0,PF,低8位中1的個(gè)數(shù)為偶數(shù)(6),PF=1,低8位中1的個(gè)數(shù)為奇數(shù)(5),PF=0,AF,低4位向前有進(jìn)位,AF=1,低4位向前沒(méi)有進(jìn)位,AF=0,ZF,計(jì)算結(jié)果不為0,ZF=0,計(jì)算結(jié)果不為0,ZF=0,SF,最高位D,7,為1,SF=1,最高位D,15,為1,SF=1,OF,CFDF=0,沒(méi)有溢出,OF=0,CFDF=1,結(jié)果溢出,OF=1,,2. 控制標(biāo)志位,,控制標(biāo)志位有3個(gè),用來(lái)控制CPU的操作,由程序設(shè)置或清除。

    它們是:,,TF(Trap Flag)——跟蹤(陷阱)標(biāo)志位它是為測(cè)試程序的方便而設(shè)置的若將TF置1,8086/8088CPU處于單步工作方式,否則,將正常執(zhí)行程序IF(Interrupt Flag)——中斷允許標(biāo)志位是用來(lái)控制可屏蔽中斷的控制標(biāo)志位若用STI指令將IF置1,表示允許CPU接受外部從INTR引腳上發(fā)來(lái)的可屏蔽中斷請(qǐng)求信號(hào);若用CLI指令將IF清0,則禁止CPU接受可屏蔽中斷請(qǐng)求信號(hào)IF的狀態(tài)對(duì)非屏蔽中斷及內(nèi)部中斷沒(méi)有影響DF(Direction Flag)——方向標(biāo)志位若用STD將DF置1,串操作按減地址方式進(jìn)行,也就是說(shuō),從高地址開(kāi)始,每操作一次地址自動(dòng)遞減;若用CLD將DF清0,則串操作按增地址方式進(jìn)行,即每操作一次地址自動(dòng)遞增注意,:有關(guān)寄存器,尤其是在存儲(chǔ)器尋址時(shí)用來(lái)存放操作數(shù)在段內(nèi)偏移地址的地址寄存器和標(biāo)志寄存器中各控制標(biāo)志位的使用方法,將在后續(xù)章節(jié)中涉及到時(shí)還將進(jìn)一步詳細(xì)介紹,請(qǐng)讀者務(wù)必熟練掌握3.2.3,,總線(xiàn)周期的概念,,為了便于對(duì)8086/8088CPU引腳功能的說(shuō)明,本節(jié)簡(jiǎn)要介紹總線(xiàn)周期的概念8086/8088CPU在與存儲(chǔ)器或I/O端口交換數(shù)據(jù)時(shí)需要啟動(dòng)一個(gè)總線(xiàn)周期。

    按照數(shù)據(jù)的傳送方向來(lái)分,總線(xiàn)周期可分為“讀”總線(xiàn)周期(CPU從存儲(chǔ)器或I/O端口讀取數(shù)據(jù))和“寫(xiě)”總線(xiàn)周期(CPU將數(shù)據(jù)寫(xiě)入存儲(chǔ)器或I/O端口)8086/8088CPU基本的總線(xiàn)周期由4個(gè)時(shí)鐘周期組成,如圖3.6所示時(shí)鐘周期是CPU的基本時(shí)間計(jì)量單位,由CPU主頻決定,如8086的主頻為5MHz,1個(gè)時(shí)鐘周期就是200ns一個(gè)時(shí)鐘周期又稱(chēng)為一個(gè)T狀態(tài),因此基本總線(xiàn)周期用T,1,、T,2,、T,3,、T,4,表示圖3.6(a)給出典型的總線(xiàn)周期波形圖在T,1,狀態(tài)CPU把要讀/寫(xiě)的存儲(chǔ)單元的地址或I/O端口的地址放到地址總線(xiàn)上若是“寫(xiě)”總線(xiàn)周期,CPU從T,2,起到T,4,,把數(shù)據(jù)送到總線(xiàn)上,并寫(xiě)入存儲(chǔ)器單元或I/O端口;若是“讀”總線(xiàn)周期,CPU則從T,3,起到T,4,從總線(xiàn)上接收數(shù)據(jù),T,2,狀態(tài)時(shí)總線(xiàn)浮空,允許CPU有個(gè)緩沖時(shí)間把輸出地址的寫(xiě)方式轉(zhuǎn)換成輸入數(shù)據(jù)的讀方式圖3.6 8086/8088基本總線(xiàn)周期,,,圖3.6(b)是具有空閑狀態(tài)的總線(xiàn)周期如果在一個(gè)總線(xiàn)周期之后不立即執(zhí)行下一個(gè)總線(xiàn)周期,即CPU此時(shí)執(zhí)行的指令不需要對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn),且目前指令隊(duì)列滿(mǎn)而不需要到內(nèi)存中讀指令,那么系統(tǒng)總線(xiàn)就處于空閑狀態(tài),即執(zhí)行空閑周期,。

    在空閑周期中可包括一個(gè)或多個(gè)時(shí)鐘周期,在這期間,在高4位的總線(xiàn)上,CPU仍驅(qū)動(dòng)前一個(gè)總線(xiàn)周期的狀態(tài)信息;而在低16位的總線(xiàn)上,則根據(jù)前一個(gè)總線(xiàn)周期是讀還是寫(xiě)周期來(lái)決定若前一個(gè)周期為寫(xiě)周期,CPU會(huì)在總線(xiàn)的低16位繼續(xù)驅(qū)動(dòng)數(shù)據(jù)信息;若前一個(gè)總線(xiàn)周期為讀周期,CPU則使總線(xiàn)的低16位處于浮空狀態(tài)在空閑周期,盡管CPU對(duì)總線(xiàn)進(jìn)行空操作,但在CPU內(nèi)部,仍然進(jìn)行著有效的操作,如執(zhí)行某個(gè)運(yùn)算、在內(nèi)部寄存器之間傳送數(shù)據(jù)等圖3.6(c)是具有等待狀態(tài)的總線(xiàn)周期在T,3,狀態(tài)結(jié)束之前,CPU測(cè)試READY信號(hào)線(xiàn),如果為有效的高電平,則說(shuō)明數(shù)據(jù)已準(zhǔn)備好,可進(jìn)入T,4,狀態(tài);若READY為低電平,則說(shuō)明數(shù)據(jù)沒(méi)有準(zhǔn)備好,CPU在T,3,之后插入1個(gè)或多個(gè)等待周期T,W,,直到檢測(cè)到READY為有效高電平后,CPU會(huì)自動(dòng)脫離T,W,而進(jìn)入T,4,狀態(tài)這種延長(zhǎng)總線(xiàn)周期的措施允許系統(tǒng)使用低速的存儲(chǔ)器芯片3.2.4 8086/8088引腳及其功能,,圖3.7 8086/8088CPU引腳,,,8086/8088芯片的引腳應(yīng)包括20根地址線(xiàn),16根(8086)或8根(8088)數(shù)據(jù)線(xiàn)以及控制線(xiàn)、狀態(tài)線(xiàn)、電源線(xiàn)和地線(xiàn)等,若每個(gè)引腳只傳送一種信息,那么芯片的引腳將會(huì)太多,不利于芯片的封裝,因此,8086/8088CPU的部分引腳定義了雙重功能。

    如第33引腳MN / MX上電平的高低代表兩種不同的信號(hào);第31到24引腳在CPU處于兩種不同的工作方式(最大工作方式和最小工作方式)時(shí)具有不同的名稱(chēng)和定義;引腳9到16(8088CPU)及引腳2到16和39(8086CPU)采用了分時(shí)復(fù)用技術(shù),即在不同的時(shí)刻分別傳送地址或數(shù)據(jù)信息等一.8086CPU 引腳,,8086CPU引腳按功能可分為三大類(lèi):電源線(xiàn)和地線(xiàn),地址/數(shù)據(jù)引腳以及控制引腳1.電源線(xiàn)和地線(xiàn),,電源線(xiàn)VCC(第40引腳):輸入,接入,?,10%單一+5V電源地線(xiàn)GND(引腳1和20):輸入,兩條地線(xiàn)均應(yīng)接地2. 地址/數(shù)據(jù)(狀態(tài))引腳,,地址/數(shù)據(jù)分時(shí)復(fù)用引腳AD,15,?,AD,0,(Address Data):引腳39及引腳2,?,16,傳送地址時(shí)單向輸出,傳送數(shù)據(jù)時(shí)雙向輸入或輸出地址狀態(tài)分時(shí)復(fù)用引腳A,19,/S,6,?,A,16,/S,3,(Address / Status):引腳35,?,38,輸出、三態(tài)總線(xiàn)采用分時(shí)輸出,即在T,1,狀態(tài)作地址線(xiàn)用,T,2,?,T,4,狀態(tài)輸出狀態(tài)信息當(dāng)訪問(wèn)存儲(chǔ)器時(shí),T,1,狀態(tài)輸出A,19,?,A,15,,與AD,15,?,AD,0,一起構(gòu)成訪問(wèn)存儲(chǔ)器的20位物理地址;CPU訪問(wèn)I/O端口時(shí),不使用這4個(gè)引腳,A,19,?,A,16,保持為0。

    狀態(tài)信息中的S,6,為0用來(lái)表示8086CPU 當(dāng)前與總線(xiàn)相連,所以在T,2,?,T,4,狀態(tài),S,6,總為0,以表示CPU當(dāng)前連在總線(xiàn)上;S,5,表示中斷允許標(biāo)志位IF的當(dāng)前設(shè)置,IF=1時(shí),S,5,為1,否則為0;S,4,?,S,3,用來(lái)指示當(dāng)前正在使用哪個(gè)段寄存器,如表3.3所示表3.3 S,4,與S,3,組合代表的正在使用的寄存器,S,4,S,3,當(dāng)前正在使用的段寄存器,0,,0,,1,,1,0,,1,,0,,1,ES,,SS,,CS或未使用任何段寄存器,,DS,,,3. 控制引腳,,(1) NMI(Non-Maskable Interrupt ),:引腳17,非屏蔽中斷請(qǐng)求信號(hào),輸入,上升沿觸發(fā)此請(qǐng)求不受標(biāo)志寄存器FLAGS中中斷允許標(biāo)志位IF狀態(tài)的影響,只要此信號(hào)一出現(xiàn),在當(dāng)前指令執(zhí)行結(jié)束后立即進(jìn)行中斷處理2) INTR(Interrupt Request),:引腳18,可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效CPU在每個(gè)指令周期的最后一個(gè)時(shí)鐘周期檢測(cè)該信號(hào)是否有效,若此信號(hào)有效,表明有外設(shè)提出了中斷請(qǐng)求,這時(shí)若IF=1,則當(dāng)前指令執(zhí)行完后立即響應(yīng)中斷;若IF=0,則中斷被屏蔽,外設(shè)發(fā)出的中斷請(qǐng)求將不被響應(yīng)。

    程序員可通過(guò)指令STI或CLI將IF標(biāo)志位置1或清零3) 控制引腳,,(1) NMI(Non-Maskable Interrupt),:引腳17,非屏蔽中斷請(qǐng)求信號(hào),輸入,上升沿觸發(fā)此請(qǐng)求不受標(biāo)志寄存器FLAGS中中斷允許標(biāo)志位IF狀態(tài)的影響,只要此信號(hào)一出現(xiàn),在當(dāng)前指令執(zhí)行結(jié)束后立即進(jìn)行中斷處理2) INTR(Interrupt Request),:引腳18,可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效CPU在每個(gè)指令周期的最后一個(gè)時(shí)鐘周期檢測(cè)該信號(hào)是否有效,若此信號(hào)有效,表明有外設(shè)提出了中斷請(qǐng)求,這時(shí)若IF=1,則當(dāng)前指令執(zhí)行完后立即響應(yīng)中斷;若IF=0,則中斷被屏蔽,外設(shè)發(fā)出的中斷請(qǐng)求將不被響應(yīng)程序員可通過(guò)指令STI或CLI將IF標(biāo)志位置1或清03) CLK(Clock),:引腳19,系統(tǒng)時(shí)鐘,輸入它通常與8284A時(shí)鐘發(fā)生器的時(shí)鐘輸出端相連該時(shí)鐘信號(hào)有效高電平與時(shí)鐘周期的比為1∶34) ?RESET,:引腳21,復(fù)位信號(hào),輸入,高電平有效復(fù)位信號(hào)使處理器馬上結(jié)束現(xiàn)行操作,對(duì)處理器內(nèi)部寄存器進(jìn)行初始化8086/8088要求復(fù)位脈沖寬度不得小于4個(gè)時(shí)鐘周期復(fù)位后,內(nèi)部寄存器的狀態(tài)如表3.4所示。

    系統(tǒng)正常運(yùn)行時(shí),RESET保持低電平表3.4 復(fù)位后內(nèi)部寄存器的狀態(tài),,內(nèi)部寄存器,狀 態(tài),標(biāo)志寄存器,,IP,,CS,,DS,,SS,,ES,,指令隊(duì)列緩沖器,,其余寄存器,0000H,,0000H,,FFFFH,,0000H,,0000H,,0000H,,空,,0000H,,(5) ?READY,:引腳22,數(shù)據(jù)“準(zhǔn)備好”信號(hào)線(xiàn),輸入它實(shí)際上是所尋址的存儲(chǔ)器或I/O端口發(fā)來(lái)的數(shù)據(jù)準(zhǔn)備就緒信號(hào),高電平有效CPU在每個(gè)總線(xiàn)周期的T,3,狀態(tài)對(duì)READY引腳采樣,若為高電平,說(shuō)明數(shù)據(jù)已準(zhǔn)備好;若為低電平,說(shuō)明數(shù)據(jù)還沒(méi)有準(zhǔn)備好,CPU在T,3,狀態(tài)之后自動(dòng)插入一個(gè)或幾個(gè)等待狀態(tài)T,W,,直到READY變?yōu)楦唠娖?,才能進(jìn)入T,4,狀態(tài),完成數(shù)據(jù)傳送過(guò)程,從而結(jié)束當(dāng)前總線(xiàn)周期6),:引腳23,等待測(cè)試信號(hào),輸入當(dāng)CPU執(zhí)行WAIT指令時(shí),每隔5個(gè)時(shí)鐘周期對(duì) 引腳進(jìn)行一次測(cè)試若為高電平,CPU就仍處于空轉(zhuǎn)狀態(tài)進(jìn)行等待,直到 引腳變?yōu)榈碗娖?,CPU結(jié)束等待狀態(tài),執(zhí)行下一條指令,以使CPU與外部硬件同步7) (Read),:引腳32,讀控制信號(hào),輸出當(dāng) =0時(shí),表示將要執(zhí)行一個(gè)對(duì)存儲(chǔ)器或I/O端口的讀操作。

    到底是從存儲(chǔ)單元還是從I/O端口讀取數(shù)據(jù),取決于M/ (8086)或IO/ (8088)信號(hào)8)BHE/S,7,(Bus High Enable / Status),:引腳34,高8位數(shù)據(jù)總線(xiàn)允許/狀態(tài)復(fù)用引腳,輸出BHE在總線(xiàn)周期的T,1,狀態(tài)時(shí)輸出,當(dāng)該引腳輸出為低電平時(shí),表示當(dāng)前數(shù)據(jù)總線(xiàn)上高8位數(shù)據(jù)有效該引腳和地址引腳A,0,配合表示當(dāng)前數(shù)據(jù)總線(xiàn)的使用情況,如表3.5所示,詳見(jiàn)“3.3.1 8086/8088存儲(chǔ)器組織”一節(jié)S,7,在8086中未被定義,暫作備用狀態(tài)信號(hào)線(xiàn)表3.5 BHE與地址引腳A,0,編碼的含義,A,0,數(shù)據(jù)總線(xiàn)的使用情況,0,,0,,1,,1,0,,1,,0,,1,16位字傳送(偶地址開(kāi)始的兩個(gè)存儲(chǔ)器單元的內(nèi)容),,在數(shù)據(jù)總線(xiàn)高8位(D,15,?,D,8,)和奇地址單元間進(jìn)行字節(jié)傳送,,在數(shù)據(jù)總線(xiàn)低8位(D,7,?,D,0,)和偶地址單元間進(jìn)行字節(jié)傳送,,無(wú)效,,(9) MN/MX(Minimum/Maximum mode control),:引腳33,最小/最大方式控制信號(hào),輸入MN/MX,引腳接高電平時(shí),8086/8088 CPU工作在最小方式,在此方式下,全部控制信號(hào)由CPU提供;,MN/MX,引腳接低電平時(shí),8086/8088工作在最大方式,此時(shí)第24,?,31引腳的功能示于圖3.7括號(hào)內(nèi),這時(shí),CPU發(fā)出的控制信號(hào)經(jīng)8288總線(xiàn)控制器進(jìn)行變換和組合,從而使總線(xiàn)的控制功能更加完善。

    2. 8086,最小工作方式及引腳,24,?,31,的定義,,當(dāng)MN/MX接高電平時(shí),系統(tǒng)工作于最小方式,即單處理器方式,它適用于較小規(guī)模的微機(jī)系統(tǒng)其典型系統(tǒng)結(jié)構(gòu)如圖3.8所示圖中8284A為時(shí)鐘發(fā)生/驅(qū)動(dòng)器,外接晶體的基本震蕩頻率為15 MHz,經(jīng)8284A三分頻后,送給CPU做系統(tǒng)時(shí)鐘8282為8位地址鎖存器當(dāng)8086訪問(wèn)存儲(chǔ)器時(shí),在總線(xiàn)周期的T,1,狀態(tài)下發(fā)出地址信號(hào),經(jīng)8282鎖存后的地址信號(hào)可以在訪問(wèn)存儲(chǔ)器操作期間始終保持不變,為外部提供穩(wěn)定的地址信號(hào)8282是典型的8位地址鎖存芯片,8086采用20位地址,再加上BHE信號(hào),所以需要3片8282作為地址鎖存器8286為具有三態(tài)輸出的8位數(shù)據(jù)總線(xiàn)收發(fā)器,用于需要增加驅(qū)動(dòng)能力的系統(tǒng)在8086系統(tǒng)中需要2片8286,而在8088系統(tǒng)中只用1片就可以了系統(tǒng)中還有一個(gè)等待狀態(tài)產(chǎn)生電路,它向8284A的RDY端提供一個(gè)信號(hào),經(jīng)8284A同步后向CPU的READY線(xiàn)發(fā)數(shù)據(jù)準(zhǔn)備就緒信號(hào),通知CPU數(shù)據(jù)已準(zhǔn)備好,可以結(jié)束當(dāng)前的總線(xiàn)周期當(dāng)READY=0時(shí),CPU在T,3,之后自動(dòng)插入T,W,狀態(tài),以避免CPU與存儲(chǔ)器或I/O設(shè)備進(jìn)行數(shù)據(jù)交換時(shí),因后者速度慢而丟失數(shù)據(jù)。

    圖3.8 8086最小方式系統(tǒng)結(jié)構(gòu),,,在最小方式下,第24,?,31引腳的功能如下:,,(1) INTA(Interrupt Acknowledge):引腳24,中斷響應(yīng)信號(hào),輸出該信號(hào)用于對(duì)外設(shè)的中斷請(qǐng)求(經(jīng)INTR引腳送入CPU)作出響應(yīng)INTA實(shí)際上是兩個(gè)連續(xù)的負(fù)脈沖信號(hào),第一個(gè)負(fù)脈沖通知外設(shè)接口,它發(fā)出的中斷請(qǐng)求已被允許;外設(shè)接口接到第2個(gè)負(fù)脈沖后,將中斷類(lèi)型號(hào)放到數(shù)據(jù)總線(xiàn)上,以便CPU根據(jù)中斷類(lèi)型號(hào)到內(nèi)存的中斷向量表中找出對(duì)應(yīng)中斷的中斷服務(wù)程序入口地址,從而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序2) ?ALE(Address Latch Enable):引腳25,地址鎖存允許信號(hào),輸出它是8086/8088提供給地址鎖存器的控制信號(hào),高電平有效在任何一個(gè)總線(xiàn)周期的T,1,狀態(tài),ALE均為高電平,以表示當(dāng)前地址/數(shù)據(jù)復(fù)用總線(xiàn)上輸出的是地址信息,ALE由高到低的下降沿把地址裝入地址鎖存器中3) DEN(Data Enable):引腳26,數(shù)據(jù)允許信號(hào),輸出當(dāng)使用數(shù)據(jù)總線(xiàn)收發(fā)器時(shí),該信號(hào)為收發(fā)器的OE端提供了一個(gè)控制信號(hào),該信號(hào)決定是否允許數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)收發(fā)器DEN為高電平時(shí),收發(fā)器在收或發(fā)兩個(gè)方向上都不能傳送數(shù)據(jù),當(dāng)DEN為低電平時(shí),允許數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)收發(fā)器。

    4) ?DT/R(Data Transmit/Receive):引腳27,數(shù)據(jù)發(fā)送/接收信號(hào),輸出該信號(hào)用來(lái)控制數(shù)據(jù)的傳送方向當(dāng)其為高電平時(shí),8086 CPU通過(guò)數(shù)據(jù)總線(xiàn)收發(fā)器進(jìn)行數(shù)據(jù)發(fā)送;當(dāng)其為低電平時(shí),則進(jìn)行數(shù)據(jù)接收在DMA方式,它被浮置為高阻狀態(tài)5) ?M/IO(Memory/Input and Output):引腳28,存儲(chǔ)器I/O端口控制信號(hào),輸出該信號(hào)用來(lái)區(qū)分CPU是進(jìn)行存儲(chǔ)器訪問(wèn)還是I/O端口訪問(wèn)當(dāng)該信號(hào)為高電平時(shí),表示CPU正在和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送;如為低電平,表明CPU正在和輸入/輸出設(shè)備進(jìn)行數(shù)據(jù)傳送在DMA方式,該引腳被浮置為高阻狀態(tài)6) ?WR(Write):引腳29,寫(xiě)信號(hào),輸出WR有效時(shí),表示CPU當(dāng)前正在進(jìn)行存儲(chǔ)器或I/O寫(xiě)操作,到底是哪一種寫(xiě)操作,取決于M/IO信號(hào)在DMA方式,該引腳被浮置為高阻狀態(tài)7) ?HOLD(Hold request):引腳31,總線(xiàn)保持請(qǐng)求信號(hào),輸入當(dāng)8086/8088 CPU之外的總線(xiàn)主設(shè)備要求占用總線(xiàn)時(shí),通過(guò)該引腳向CPU發(fā)一個(gè)高電平的總線(xiàn)保持請(qǐng)求信號(hào)8) ?HLDA(Hold Acknowledge):引腳30,總線(xiàn)保持響應(yīng)信號(hào),輸出。

    當(dāng)CPU接收到HOLD信號(hào)后,這時(shí)如果CPU允許讓出總線(xiàn),就在當(dāng)前總線(xiàn)周期完成時(shí),在T,4,狀態(tài)發(fā)出高電平有效的HLDA信號(hào)給以響應(yīng)此時(shí),CPU讓出總線(xiàn)使用權(quán),發(fā)出HOLD請(qǐng)求的總線(xiàn)主設(shè)備獲得總線(xiàn)的控制權(quán)3. 8086,最大工作方式及引腳,24,?,31,的定義,,當(dāng)MN/MX接低電平時(shí),系統(tǒng)工作于最大方式,即多處理器方式,其典型系統(tǒng)結(jié)構(gòu)如圖3.9所示比較最大方式和最小方式系統(tǒng)結(jié)構(gòu)圖可以看出,最大方式和最小方式有關(guān)地址總線(xiàn)和數(shù)據(jù)總線(xiàn)的電路部分基本相同,即都需要地址鎖存器及數(shù)據(jù)總線(xiàn)收發(fā)器而控制總線(xiàn)的電路部分有很大差別在最小工作方式下,控制信號(hào)可直接從8086/8088 CPU得到,不需要外加電路最大方式是多處理器工作方式,需要協(xié)調(diào)主處理器和協(xié)處理器的工作因此,8086/8088的部分引腳需要重新定義,控制信號(hào)不能直接從8086/8088 CPU引腳得到,需要外加8288總線(xiàn)控制器,通過(guò)它對(duì)CPU發(fā)出的控制信號(hào)(S,0,,S,1,,S,2,)進(jìn)行變換和組合,以得到對(duì)存儲(chǔ)器和I/O端口的讀寫(xiě)控制信號(hào)和對(duì)地址鎖存器8282及對(duì)總線(xiàn)收發(fā)器8286的控制信號(hào),使總線(xiàn)的控制功能更加完善圖3.9 8086最大方式系統(tǒng)結(jié)構(gòu),,,在最大方式下,第24,?,31引腳的功能如下:,,(1) ?QS,1,、QS,0,(Instruction Queue Status):引腳24、25,指令隊(duì)列狀態(tài)信號(hào),輸出。

    QS,1,、QS,0,兩個(gè)信號(hào)電平的不同組合指明了8086/8088內(nèi)部指令隊(duì)列的狀態(tài),其代碼組合對(duì)應(yīng)的含義如表3.6所示表3.6 QS,1,、QS,0,的代碼組合對(duì)應(yīng)的含義,QS,1,QS,0,含 義,0,0,無(wú)操作,0,1,從指令隊(duì)列的第一字節(jié)中取走代碼,1,0,隊(duì)列為空,1,1,除第一字節(jié)外,還取走了后續(xù)字節(jié)中的代碼,,(2) ?S,2,、S,1,、S,0,(Bus Cycle Status):引腳26、27、28,總線(xiàn)周期狀態(tài)信號(hào),輸出低電平有效的三個(gè)狀態(tài)信號(hào)連接到總線(xiàn)控制器8288的輸入端,8288對(duì)這些信號(hào)進(jìn)行譯碼后產(chǎn)生內(nèi)存及I/O端口的讀寫(xiě)控制信號(hào)表3.7給出了這三個(gè)狀態(tài)信號(hào)的代碼組合使8288產(chǎn)生的控制信號(hào)及其對(duì)應(yīng)的操作表3.7中前7種代碼組合都對(duì)應(yīng)某個(gè)總線(xiàn)操作過(guò)程,通常稱(chēng)為有源狀態(tài),它們處于前一個(gè)總線(xiàn)周期的T,4,狀態(tài)或本總線(xiàn)周期的T,1,、T,2,狀態(tài)中,S,2,、S,1,、S,0,至少有一個(gè)信號(hào)為低電平在總線(xiàn)周期的T,3,、T,W,狀態(tài)并且READY信號(hào)為高電平時(shí),S,2,、S,1,、S,0,都成為高電平,此時(shí),前一個(gè)總線(xiàn)操作就要結(jié)束,后一個(gè)新的總線(xiàn)周期尚未開(kāi)始,通常稱(chēng)為無(wú)源狀態(tài)。

    而在總線(xiàn)周期的最后一個(gè)狀態(tài)即T,4,狀態(tài),S,2,、S,1,、S,0,中任何一個(gè)或幾個(gè)信號(hào)的改變,都意味著下一個(gè)新的總線(xiàn)周期的開(kāi)始表3.7 S,2,、S,1,、S,0,的代碼組合對(duì)應(yīng)的操作,,,,8288產(chǎn)生的控制信號(hào),對(duì) 應(yīng) 操 作,0,0,0,,發(fā)中斷響應(yīng)信號(hào),0,0,1,,讀I/O端口,0,1,0,,寫(xiě)I/O端口,0,1,1,無(wú),暫停,1,0,0,,取指令,1,0,1,,讀內(nèi)存,1,1,0,,寫(xiě)內(nèi)存,1,1,1,無(wú),無(wú)源狀態(tài),,(3) ?LOCK(Lock):引腳29,總線(xiàn)封鎖信號(hào),輸出當(dāng)LOCK為低電平時(shí),系統(tǒng)中其他總線(xiàn)主設(shè)備就不能獲得總線(xiàn)的控制權(quán)而占用總線(xiàn)LOCK信號(hào)由指令前綴LOCK產(chǎn)生,LOCK指令后面的一條指令執(zhí)行完后,便撤消了LOCK信號(hào)另外,在DMA期間,LOCK被浮空而處于高阻狀態(tài)4) RQ/GT,1,、RQ/GT,0,(Request/Grant):引腳30、31,總線(xiàn)請(qǐng)求信號(hào)(輸入)/總線(xiàn)請(qǐng)求允許信號(hào)(輸出)這兩個(gè)信號(hào)可供8086/8088以外的2個(gè)總線(xiàn)主設(shè)備向8086/8088發(fā)出使用總線(xiàn)的請(qǐng)求信號(hào)RQ(相當(dāng)于最小方式時(shí)的HOLD信號(hào))而8086/8088在現(xiàn)行總線(xiàn)周期結(jié)束后讓出總線(xiàn),發(fā)出總線(xiàn)請(qǐng)求允許信號(hào)GT(相當(dāng)于最小方式的HLDA信號(hào)),此時(shí),外部總線(xiàn)主設(shè)備便獲得了總線(xiàn)的控制權(quán)。

    其中RQ / GT,0,比RQ / GT,1,的優(yōu)先級(jí)高8288總線(xiàn)控制器還提供了其他一些控制信號(hào):MRDC(Memory Read Command)、MWTC(Memory Write Command)、IORC(I/O Read Command)、IOWC(I/O Write Command)以及INTA等,它們分別是存儲(chǔ)器與I/O的讀寫(xiě)命令以及中斷響應(yīng)信號(hào)另外,還有AMWC與AIOWC兩個(gè)信號(hào),它們分別表示提前寫(xiě)內(nèi)存命令和提前寫(xiě)I/O命令,其功能分別與MWTC和IOWC一樣,只是它們由8288提前一個(gè)時(shí)鐘周期發(fā)出信號(hào),這樣,一些較慢的存儲(chǔ)器和外設(shè)將得到一個(gè)額外的時(shí)鐘周期去執(zhí)行寫(xiě)入操作4,.,8088,與,8086,引腳的區(qū)別,,8088,與8,086,絕大多數(shù)引腳的名稱(chēng)和功能是完全相同的,僅有以下三點(diǎn)不同:,,(1) AD,15,?,AD,0,的定義不同在8086中都定義為地址/數(shù)據(jù)分時(shí)復(fù)用引腳;而在8088中,由于只需要8條數(shù)據(jù)線(xiàn),因此,對(duì)應(yīng)于8086的AD,15,?,AD,8,這8根引腳在8088中定義為A,15,?,A,8,,它們?cè)?088中只做地址線(xiàn)用2) 引腳34的定義不同。

    在最大方式下,8088的第34引腳保持高電平,而8086在最大方式下34引腳的定義與最小方式下相同3) 引腳28的有效電平高低定義不同8088和8086的第28引腳的功能是相同的,但有效電平的高低定義不同8088的第28引腳為IO/M,當(dāng)該引腳為低電平時(shí),表明8088正在進(jìn)行存儲(chǔ)器操作;當(dāng)該引腳為高電平時(shí),表明8088正在進(jìn)行I/O操作8086的第28引腳為M/IO,電平與8088正好相反3.3 8086/8088存儲(chǔ)器和I/O組織,3.3.1 8086/8088,存儲(chǔ)器組織,,1,.,8086/8088,存儲(chǔ)空間,,8086/8088有20條地址線(xiàn),可直接對(duì)1 M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn)每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)型數(shù)據(jù),且每個(gè)存儲(chǔ)單元都有一個(gè)20位的地址,這1 M個(gè)存儲(chǔ)單元對(duì)應(yīng)的地址為00000H~FFFFFH,如圖3.10所示一個(gè)存儲(chǔ)單元中存放的信息稱(chēng)為該存儲(chǔ)單元的內(nèi)容如圖3.10所示,00001H單元的內(nèi)容為9FH,記為:(00001H)=9FH圖3.10 數(shù)據(jù)在存儲(chǔ)器中的存放,,,若存放的是字型數(shù)據(jù)(16位二進(jìn)制數(shù)),則將字的低位字節(jié)存放在低地址單元,高位字節(jié)存放在高地址單元如從地址0011FH開(kāi)始的兩個(gè)連續(xù)單元中存放一個(gè)字型數(shù)據(jù),則該數(shù)據(jù)為DF46H,記為:(0011FH)=DF46H。

    若存放的是雙字型數(shù)據(jù)(32位二進(jìn)制數(shù),這種數(shù)一般作為地址指針,其低位字是被尋址地址的偏移量,高位字是被尋址地址所在段的段地址),這種類(lèi)型的數(shù)據(jù)要占用連續(xù)的4個(gè)存儲(chǔ)單元,同樣,低字節(jié)存放在低地址單元,高字節(jié)存放在高地址單元如從地址E800AH開(kāi)始的連續(xù)4個(gè)存儲(chǔ)單元中存放了一個(gè)雙字型數(shù)據(jù),則該數(shù)據(jù)為66A65E65H,記為:(E800AH)=66A65E65H2,.存儲(chǔ)器的段結(jié)構(gòu),,8086/8088 CPU中有關(guān)可用來(lái)存放地址的寄存器如IP、SP等都是16位的,故只能直接尋址64 KB為了對(duì)1 M個(gè)存儲(chǔ)單元進(jìn)行管理,8086/8088采用了段結(jié)構(gòu)的存儲(chǔ)器管理方法8086/8088將整個(gè)存儲(chǔ)器分為許多邏輯段,每個(gè)邏輯段的容量小于或等于64 KB,允許它們?cè)谡麄€(gè)存儲(chǔ)空間中浮動(dòng),各個(gè)邏輯段之間可以緊密相連,也可以互相重疊用戶(hù)編寫(xiě)的程序(包括指令代碼和數(shù)據(jù))被分別存儲(chǔ)在代碼段、數(shù)據(jù)段、堆棧段和附加數(shù)據(jù)段中,這些段的段地址分別存儲(chǔ)在段寄存器CS、DS、SS和ES中,而指令或數(shù)據(jù)在段內(nèi)偏移地址可由對(duì)應(yīng)的地址寄存器或立即數(shù)給出,如表3.8所示表3.8 存儲(chǔ)器操作時(shí)段地址和段內(nèi)偏移地址的來(lái)源,,,存儲(chǔ)器操作類(lèi)型,,,段 地 址,,,偏移地址,,,正常來(lái)源,,,其他來(lái)源,取指令,,,CS,,,無(wú),,,IP,存取操作數(shù),,,DS,,CS、ES、SS,,,有效地址EA,通過(guò)BP尋址存取操作數(shù),,,SS,,,CS、ES、SS,,,有效地址EA,堆棧操作,,,SS,,,無(wú),,,BP、SP,源字符串,,,DS,,,CS、ES、SS,,,SI,目的字符串,,,ES,,無(wú),,,DI,,如果從存儲(chǔ)器中讀取指令,則段地址來(lái)源于代碼段寄存器CS,偏移地址來(lái)源于指令指針寄存器IP。

    如果從存儲(chǔ)器讀/寫(xiě)操作數(shù),則段地址通常由數(shù)據(jù)段寄存器DS提供(必要時(shí)可通過(guò)指令前綴實(shí)現(xiàn)段超越,將段地址指定為由CS、ES或SS提供),偏移地址則要根據(jù)指令中所給出的尋址方式確定,這時(shí),偏移地址通常由寄存器BX、SI、DI以及立即數(shù)等提供,這類(lèi)偏移地址也被稱(chēng)為“有效地址”(EA)如果操作數(shù)是通過(guò)基址寄存器BP尋址的,則此時(shí)操作數(shù)所在段的段地址由堆棧段段寄存器SS提供(必要時(shí)也可指定為CS、SS或ES)(詳見(jiàn)第4章“尋址方式”一節(jié))如果使用堆棧操作指令,(PUSH,或,POP),進(jìn)行進(jìn)?;虺鰲2僮?,以保護(hù)斷點(diǎn)或現(xiàn)場(chǎng),則段地址來(lái)源于堆棧段寄存器,SS,,偏移地址來(lái)源于堆棧指針寄存器,SP?(,詳見(jiàn)本節(jié)“,4.,堆棧操作”,),如果執(zhí)行的是字符串操作指令,則源字符串所在段的段地址由數(shù)據(jù)段寄存器,DS,提供,(,必要時(shí)可指定為,CS,、,ES,或,SS),,偏移地址由源變址寄存器,SI,提供;目的字符串所在段的段地址由附加數(shù)據(jù)段寄存器,ES,提供,偏移地址由目的變址寄存器,DI,提供以上這些存儲(chǔ)器操作時(shí)段地址和偏移地址的約定是由系統(tǒng)設(shè)計(jì)時(shí)事先已規(guī)定好的,編寫(xiě)程序時(shí)必須遵守這些約定3,.邏輯地址與物理地址,,由于采用了存儲(chǔ)器分段管理方式,8080/8088 CPU在對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)時(shí),根據(jù)當(dāng)前的操作類(lèi)型(取指令或存取操作數(shù))以及讀取操作數(shù)時(shí)指令所給出的尋址方式,CPU就可確定要訪問(wèn)的存儲(chǔ)單元所在段的段地址以及該單元在本段內(nèi)的偏移地址(如表3.8所示)。

    我們把通過(guò)段地址和偏移地址來(lái)表示的存儲(chǔ)單元的地址稱(chēng)為邏輯地址,記為:段地址:偏移地址CPU在對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)時(shí),必須在20位的地址總線(xiàn)上提供一個(gè)20位的地址信息,以便選中所要訪問(wèn)的存儲(chǔ)單元我們把CPU對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)時(shí)實(shí)際尋址所使用的20位地址稱(chēng)為物理地址物理地址是由CPU內(nèi)部總線(xiàn)接口單元BIU中的地址加法器根據(jù)邏輯地址產(chǎn)生的由邏輯地址形成20位物理地址的方法為:段地址,?,10H+偏移地址其形成過(guò)程如圖3.3所示圖3.11給出了存儲(chǔ)器分段示意如果當(dāng)前的(IP)=1000H,那么,下一條要讀取的指令所在存儲(chǔ)單元的物理地址為:,,(CS),?,10H+(IP)=1000H,?,10H+1000H=11000H,,如果某操作數(shù)在數(shù)據(jù)段內(nèi)的偏移地址為8000H,則該操作數(shù)所在存儲(chǔ)單元的物理地址為,,(DS),?,10H+8000H=2A0FH,?,10H+8000H=320F0H,,圖3.11 存儲(chǔ)器分段示意圖,,,,4,.堆棧操作,,堆棧是在存儲(chǔ)器中開(kāi)辟的一個(gè)特定區(qū)域堆棧在存儲(chǔ)器中所處的段稱(chēng)為堆棧段,和其他邏輯段一樣,它可在1 MB的存儲(chǔ)空間中浮動(dòng),其容量可達(dá)64 KB開(kāi)辟堆棧的目的主要有以下兩點(diǎn):,,(1) 存放指令操作數(shù)(變量)。

    此時(shí),由于操作數(shù)在堆棧段中,對(duì)操作數(shù)進(jìn)行訪問(wèn)時(shí),段地址自然由堆棧段寄存器SS來(lái)提供,操作數(shù)在該段內(nèi)的偏移地址由基址寄存器BP來(lái)提供2) 保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)此為堆棧的主要功能所謂保護(hù)斷點(diǎn),是指主程序在調(diào)用子程序或執(zhí)行中斷服務(wù)程序時(shí),為了使執(zhí)行完子程序或中斷服務(wù)程序后能順利返回主程序,必須把斷點(diǎn)處的有關(guān)信息(如代碼段寄存器CS的內(nèi)容(需要時(shí))、指令指針寄存器IP的內(nèi)容以及標(biāo)志寄存器FLAGS的內(nèi)容等)壓入堆棧,執(zhí)行完子程序或中斷服務(wù)程序后按“先進(jìn)后出”的原則將其彈出堆棧,以恢復(fù)有關(guān)寄存器的內(nèi)容,從而使主程序能從斷點(diǎn)處繼續(xù)往下執(zhí)行保護(hù)斷點(diǎn)的操作由系統(tǒng)自動(dòng)完成,不需要程序員干預(yù)保護(hù)現(xiàn)場(chǎng)是指將在子程序或中斷服務(wù)程序中用到的寄存器的內(nèi)容壓入堆棧,在返回主程序之前再將其彈出堆棧,以恢復(fù)寄存器原有的內(nèi)容,從而使其返回后主程序能繼續(xù)正確執(zhí)行保護(hù)現(xiàn)場(chǎng)的工作要求程序員在編寫(xiě)子程序或中斷服務(wù)程序時(shí)使用進(jìn)棧指令PUSH和出棧指令POP完成有關(guān)PUSH和POP指令的使用方法將在第4章“8086/8088指令系統(tǒng)”一節(jié)中介紹下面簡(jiǎn)要介紹進(jìn)棧和出棧操作的過(guò)程在執(zhí)行進(jìn)棧和出棧操作時(shí),段地址由堆棧段寄存器SS提供,段內(nèi)偏移地址由堆棧指針寄存器SP提供,SP始終指向棧頂,當(dāng)堆??諘r(shí),SP指向棧底。

    如圖3.12所示,設(shè)在存儲(chǔ)器中開(kāi)辟了100H個(gè)存儲(chǔ)單元的堆棧段,當(dāng)前(SS)=2000H,堆??諘r(shí)(SP)=0100H,即此時(shí)SP指向棧底(如圖3.12(a)所示)由于PUSH和POP指令要求操作數(shù)為字型數(shù)據(jù),因此,每進(jìn)行一次進(jìn)棧操作,SP值減2(如圖3.12(b)所示),每進(jìn)行一次出棧操作,SP值加2(如圖3.12?(c)所示)在進(jìn)棧和出棧操作過(guò)程中,SP始終指向棧頂圖3.12 進(jìn)棧與出棧操作示意圖,,,5,.,8086/8088,存儲(chǔ)器結(jié)構(gòu),,8086的1 MB存儲(chǔ)空間實(shí)際上分為兩個(gè)512 KB的存儲(chǔ)體,又稱(chēng)存儲(chǔ)庫(kù),分別叫高位庫(kù)和低位庫(kù),如圖3.13所示低位庫(kù)與數(shù)據(jù)總線(xiàn)D,7,?,D,0,相連,該庫(kù)中每個(gè)存儲(chǔ)單元的地址為偶數(shù)地址;高位庫(kù)與數(shù)據(jù)總線(xiàn)D,15,?,D,8,相連,該庫(kù)中每個(gè)存儲(chǔ)單元的地址為奇數(shù)地址地址總線(xiàn)A,19,?,A,1,可同時(shí)對(duì)高、低位庫(kù)的存儲(chǔ)單元尋址,A,0,和BHE用于對(duì)庫(kù)的選擇,分別連接到庫(kù)選擇端SEL上當(dāng)A,0,=0時(shí),選擇偶數(shù)地址的低位庫(kù);當(dāng)BHE=0時(shí),選擇奇數(shù)地址的高位庫(kù);當(dāng)兩者均為0時(shí),則同時(shí)選中高低位庫(kù)利用A,0,和BHE這兩個(gè)控制信號(hào),。

    點(diǎn)擊閱讀更多內(nèi)容
    最新文檔
    傳統(tǒng)文化道德不是高懸的明月而是腳下的星光.pptx
    世界無(wú)煙日關(guān)注青少年成長(zhǎng)健康無(wú)煙為成長(zhǎng)護(hù)航.pptx
    五四青年節(jié)詩(shī)詞贊歌五四青年自強(qiáng)不息.pptx
    XX學(xué)校班主任培訓(xùn)用心管理慧做班主任.pptx
    拒絕熬夜健康養(yǎng)生規(guī)律作息遠(yuǎn)離亞健康.pptx
    兒童成長(zhǎng)手冊(cè)時(shí)光里的童真印記.pptx
    幼兒園夏季傳染病預(yù)防指南預(yù)見(jiàn)夏天健康童行夏季傳染病預(yù)防科普.pptx
    高中生心理健康教育主題班會(huì)快樂(lè)學(xué)習(xí)高效學(xué)習(xí)正視壓力學(xué)會(huì)減壓.pptx
    員工職業(yè)道德與職業(yè)素養(yǎng)培訓(xùn)遵守職業(yè)道德提高職業(yè)修養(yǎng).pptx
    2025職業(yè)病防治法宣傳周健康守護(hù)職防同行.pptx
    XX幼兒園防災(zāi)減災(zāi)安全教育臨災(zāi)不亂安全童行學(xué)會(huì)保護(hù)自己.pptx
    在2025年縣教育工作大會(huì)暨高考備考工作推進(jìn)會(huì)上的講話(huà)發(fā)言材料.docx
    在2025年縣全面從嚴(yán)治黨和黨風(fēng)廉政會(huì)議上的講話(huà)發(fā)言材料.docx
    在2025年全市慶?!拔逡弧濒邉趧?dòng)模范表彰大會(huì)上的講話(huà)發(fā)言材料多篇.docx
    2025年稅務(wù)局青年代表在五四青年座談會(huì)上的發(fā)言材料3篇.docx
    在2025年市委全體會(huì)議上的主持講話(huà)發(fā)言材料.docx
    2025年黨風(fēng)廉政建設(shè)工作要點(diǎn)材料.docx
    在2025年全市青年干部慶祝五四青年節(jié)大會(huì)上的講話(huà)發(fā)言材料多篇.docx
    在入黨積極分子培訓(xùn)班上的講話(huà)發(fā)言材料.docx
    縣文旅局黨組書(shū)記在五一假期及夏季旅游安全生產(chǎn)工作部署會(huì)議上的講話(huà)發(fā)言材料.docx
    賣(mài)家[上傳人]:tiantian1990
    資質(zhì):實(shí)名認(rèn)證