版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第一講微處理器的功能下面我們來(lái)學(xué)習(xí)微處理器的功能微處理器的功能微處理器就是我們說(shuō)的中央處理單元CPU,在這一章我們要學(xué)習(xí)CPU的引腳功能和內(nèi)部結(jié)構(gòu)中央處理單元CPUCPU的引腳功能和內(nèi)部結(jié)構(gòu)CPU是計(jì)算機(jī)系統(tǒng)的核心中央處理單元CPU計(jì)算機(jī)系統(tǒng)的核心它可以根據(jù)指令實(shí)現(xiàn)各種相應(yīng)的運(yùn)算,并且能實(shí)現(xiàn)數(shù)據(jù)的暫存,CPU還能夠與存儲(chǔ)器以及接口通信計(jì)算機(jī)系統(tǒng)的核心根據(jù)指令實(shí)現(xiàn)各種運(yùn)算實(shí)現(xiàn)暫存數(shù)據(jù)實(shí)現(xiàn)與存儲(chǔ)器和接口的信息通信大家看這里描述的信息說(shuō)的其實(shí)是CPU內(nèi)部和外部?jī)蓚€(gè)方面,計(jì)算機(jī)系統(tǒng)的核心根據(jù)指令實(shí)現(xiàn)各種運(yùn)算實(shí)現(xiàn)暫存數(shù)據(jù)實(shí)現(xiàn)與存儲(chǔ)器和接口的信息通信內(nèi)部外部在CPU內(nèi)部有運(yùn)算器和控制器,所以它可以進(jìn)行運(yùn)算和一些控制,但是CPU只在自己內(nèi)部處理還不行,它要去控制其他設(shè)備與它協(xié)同工作,所以CPU還要與其他的外圍的設(shè)備進(jìn)行一個(gè)數(shù)據(jù)的溝通,內(nèi)部外部運(yùn)算器控制器控制其他設(shè)備與其協(xié)同工作與其他外圍設(shè)備溝通數(shù)據(jù)這些外部設(shè)備就比如存儲(chǔ)器或接口內(nèi)部外部運(yùn)算器控制器存儲(chǔ)器接口CPU的內(nèi)部主要由運(yùn)算器,控制器和內(nèi)部寄存器組構(gòu)成,這是它的硬件方面,CPU的內(nèi)部主要由運(yùn)算器,控制器和內(nèi)部寄存器組構(gòu)成,這是它的硬件方面,運(yùn)算器控制器內(nèi)部寄存器組硬件方面在軟件方面,每一種CPU都會(huì)有自己的指令級(jí),那么8088、8086使用的指令集基本相同,所以我們不加區(qū)分。關(guān)于指令集我們會(huì)在后面的章節(jié)中給大家介紹指令級(jí)軟件方面8088、8086指令集基本相同不加區(qū)分運(yùn)算器控制器內(nèi)部寄存器組硬件方面在進(jìn)一步展開討論cpu之前,我們還是簡(jiǎn)單回顧一下CPU的三大硬件結(jié)構(gòu),算術(shù)邏輯單元(ALU)1控制器2寄存器3首先是ALU,它是算術(shù)邏輯單元,也稱運(yùn)算器,算術(shù)邏輯單元(ALU)1控制器2寄存器3算術(shù)邏輯單元運(yùn)算器它是算術(shù)邏輯單元,也稱運(yùn)算器,它是以加法器為基礎(chǔ),配合其他的邏輯電路可以完成加減乘除的基本運(yùn)算,并且基于這些基本運(yùn)算完成一些更復(fù)雜的運(yùn)算以及各種邏輯運(yùn)算,更高級(jí)的ALU還可以完成浮點(diǎn)運(yùn)算,以加法器為基配合其它邏輯電路完成加、減、乘、除和其他各種邏輯運(yùn)算ALU能完成浮點(diǎn)運(yùn)算關(guān)于這一點(diǎn)我們展示過(guò)奔騰系列CPU的內(nèi)部結(jié)構(gòu)圖,我們已經(jīng)看到了其中進(jìn)行浮點(diǎn)運(yùn)算的部分奔騰關(guān)于這一點(diǎn)我們展示過(guò)奔騰系列CPU的內(nèi)部結(jié)構(gòu)圖,我們已經(jīng)看到了其中進(jìn)行浮點(diǎn)運(yùn)算的部分奔騰下面一個(gè)是控制器,控制器2寄存器3算術(shù)邏輯單元(ALU)1指令寄存器IR存放從存儲(chǔ)器取出的、將要執(zhí)行的指令(實(shí)為其操作碼)控制器又包括三大部分,一個(gè)是指令寄存器,它是用來(lái)存放從存儲(chǔ)器中取出的將要執(zhí)行的指令然后是指令譯碼器,指令譯碼器是對(duì)指令寄存器中的指令進(jìn)行譯碼,然后確定這個(gè)指令應(yīng)該執(zhí)行什么樣的操作指令譯碼器ID對(duì)指令寄存器IR中的指令進(jìn)行譯碼,以確定該指令應(yīng)執(zhí)行什么操作最后一個(gè)是可編程邏輯陣列PLA,也稱為定時(shí)與控制電路,它會(huì)產(chǎn)生取指令和執(zhí)行指令所需要的各種微操作的控制信號(hào)。由于每一條指令要執(zhí)行的具體操作是不同的,所以每條指令會(huì)對(duì)應(yīng)控制信號(hào)的某一種組合,PLA就告訴我們的執(zhí)行這條指令究竟要執(zhí)行哪些操作可編程邏輯陣列PLA產(chǎn)生取指令和執(zhí)行指令所需的各種微操作控制信號(hào)。每條指令將對(duì)應(yīng)控制信號(hào)的某一種組合,以確定相應(yīng)的操作序列。定時(shí)與控制電路這是控制器的一個(gè)完整工作流程,我們有了指令以后,首先要把它取到這個(gè)指令寄存器中,然后再交給指令譯碼器,指令譯碼完畢以后就發(fā)送給可編程邏輯陣列,可編程邏輯陣列分析出要執(zhí)行這條指令需要哪些具體的微操作。如果微操作還需要存儲(chǔ)器或接口參與,那么可編程邏輯陣列會(huì)發(fā)送控制信號(hào)到控制總線上,例如發(fā)送讀或?qū)懙男盘?hào),讓存儲(chǔ)器或接口執(zhí)行讀或?qū)懙牟僮?,指令寄存器IR指令譯碼器ID指令代碼可編程邏輯陣列PLA這是控制器的一個(gè)完整工作流程,我們有了指令以后,首先要把它取到這個(gè)指令寄存器中,然后再交給指令譯碼器,指令譯碼完畢以后就發(fā)送給可編程邏輯陣列,可編程邏輯陣列分析出要執(zhí)行這條指令需要哪些具體的微操作。如果微操作還需要存儲(chǔ)器或接口參與,那么可編程邏輯陣列會(huì)發(fā)送控制信號(hào)到控制總線上,例如發(fā)送讀或?qū)懙男盘?hào),讓存儲(chǔ)器或接口執(zhí)行讀或?qū)懙牟僮?,操作控制信?hào)指令寄存器IR指令譯碼器ID指令代碼控制總線CB可編程邏輯陣列PLAI/O接口RAMROM存儲(chǔ)器或接口控制器2寄存器3算術(shù)邏輯單元(ALU)1寄存器寄存器是CPU內(nèi)部的存儲(chǔ)單元CPU內(nèi)部的存儲(chǔ)單元由于寄存器是在CPU內(nèi)部的,所以CPU去讀寫寄存器的速度是非常快的,相比于內(nèi)存儲(chǔ)器來(lái)說(shuō),內(nèi)存儲(chǔ)器它是在CPU外部的,所以CPU要讀寫存儲(chǔ)器要經(jīng)過(guò)各種總線,所以呢這個(gè)速度會(huì)比較慢,比較耗時(shí),CPU內(nèi)部寄存器速度快CPU外部?jī)?nèi)存儲(chǔ)器速度慢CPU訪問(wèn)寄存器更方便省時(shí)CPU內(nèi)部的寄存器分兩種,通用寄存器和專用寄存器,通用寄存器是由程序規(guī)定它的用途,專用寄存器是CPU在設(shè)計(jì)之初就已經(jīng)固定好的,比如說(shuō)堆棧指針寄存器和標(biāo)志寄存器等等,由程序員規(guī)定其用途通用寄存器專用寄存器用途固定專用如:堆棧指針寄存器、標(biāo)志寄存器等寄存器以上這些內(nèi)容我們?cè)谇懊嬉呀?jīng)提到過(guò),這里只是簡(jiǎn)單回顧一下,下面我們將會(huì)重點(diǎn)來(lái)介紹微處理器它的外部引腳和主要功能。謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第二講8088-8086CPU下面我們來(lái)學(xué)習(xí)80888086的CPU8088-8086CPU我們這門課程是以英特爾公司的80x八六的基礎(chǔ)產(chǎn)品,8088和8086為背景機(jī)展開學(xué)習(xí)的。由于8088和8086他們的差別比較小,英特爾公司80x86差別較小那我們就本節(jié)以8088為主進(jìn)行介紹,如果沒有特別的說(shuō)明的話,我們介紹的所有內(nèi)容對(duì)于8086都是適用的8086都適用8088和8086都屬于第三代CPU。之所以叫8088或8086,他們的區(qū)別主要在于芯片的引腳上。第三代CPU芯片引腳8086是英特爾發(fā)布的16位芯片,它的內(nèi)部數(shù)據(jù)線和外部數(shù)據(jù)線都是16位的,所以它是真正的16位機(jī)英特爾發(fā)布的16位芯片內(nèi)部和外部數(shù)據(jù)線為16位真正的16位機(jī)但是英特爾在發(fā)布了8086產(chǎn)品以后,發(fā)現(xiàn)市面上很多產(chǎn)品仍然是用八位數(shù)據(jù)進(jìn)行傳輸?shù)模谑且蛱貭柣谶@種情況,又發(fā)布了8088以兼容現(xiàn)有的產(chǎn)品。8088它的特點(diǎn)就是它的內(nèi)部數(shù)據(jù)線是16位的,但是它的外部數(shù)據(jù)總線是八位的,所以它是準(zhǔn)16位機(jī)無(wú)論8086還是8088,他們都被廣泛的應(yīng)用于各種智能控制系統(tǒng)中,在最小的配置下,只需要四片外圍的芯片就可以構(gòu)成一個(gè)應(yīng)用系統(tǒng),8088和8086都具有兩種工作方式,一種是最小模式,一種是最大模式內(nèi)部數(shù)據(jù)線是16位外部數(shù)據(jù)總線是8位準(zhǔn)16位機(jī)無(wú)論8086還是8088,他們都被廣泛的應(yīng)用于各種智能控制系統(tǒng)中,在最小的配置下,只需要四片外圍的芯片就可以構(gòu)成一個(gè)應(yīng)用系統(tǒng),四片外圍芯片應(yīng)用系統(tǒng)8088和8086都具有兩種工作方式,一種是最小模式,一種是最大模式最小模式最大模式下面我們來(lái)比較一下,8086和8088兩種芯片,8086和8088的地址引腳是20根,從A0~A19。所不同的是8086有16根數(shù)據(jù)引腳,就是D0~D15,而8088只有8根數(shù)據(jù)引腳,就是D0~D7地址引腳是20根,從A0~A1916根數(shù)據(jù)引腳8根數(shù)據(jù)引腳由于芯片空間有限,地址總線和數(shù)據(jù)總線是復(fù)用的引腳,地址總線和數(shù)據(jù)總線是復(fù)用的引腳空間有限對(duì)于8088來(lái)說(shuō),它只有八根地址線,所以大家可以看到這里是AD0~AD7,從A8開始就不再是ad了,因?yàn)閺腁8到A15就只有地址線不需要根數(shù)據(jù)線復(fù)用了八根地址線不再是AD只有地址線不需要根數(shù)據(jù)線復(fù)用但是,對(duì)于8086來(lái)說(shuō),它的數(shù)據(jù)線和地址線要從AD0復(fù)用到AD15,因它有20根地址線和16根數(shù)據(jù)線,所以大家可以看到它是從AD0一直復(fù)用到AD15,然后A16~19是沒有跟數(shù)據(jù)線復(fù)用,這是第一點(diǎn)大家要注意的區(qū)別,20根地址線16根數(shù)據(jù)線沒有跟數(shù)據(jù)線復(fù)用memory第2點(diǎn)就是M/IO這個(gè)引腳。這個(gè)引腳中M表示memory就是訪問(wèn)存儲(chǔ)器的意思。IO就是訪問(wèn)IO端口的意思。那么究竟訪問(wèn)存儲(chǔ)器還是IO端口,要看這個(gè)引腳是高電平還是低電平。還記得我們?cè)趯⒆g碼器的時(shí)候說(shuō)過(guò),對(duì)于引腳來(lái)說(shuō),引腳上方的小橫杠表示低電平有效,訪問(wèn)存儲(chǔ)器M訪問(wèn)IO端口IO引腳是高電平還是低電平引腳上方的小橫杠表示低電平有效我們來(lái)看8086,它是在io上有小橫杠,而8088是在m上有小橫杠,因此,同樣的電平接入到兩個(gè)芯片的這個(gè)引腳上表示的含義是不相同的。對(duì)于8086來(lái)說(shuō),如果是低電平,那么就是去訪問(wèn)io,但是對(duì)于8088來(lái)說(shuō)就是去訪問(wèn)內(nèi)存儲(chǔ)器,這是一個(gè)非常大的區(qū)別同樣的電平接入兩個(gè)芯片的引腳表示含義不相同對(duì)于8086來(lái)說(shuō),如果是低電平,那么就是去訪問(wèn)io,但是對(duì)于8088來(lái)說(shuō)就是去訪問(wèn)內(nèi)存儲(chǔ)器,這是一個(gè)非常大的區(qū)別低電平訪問(wèn)IO端口低電平訪問(wèn)存儲(chǔ)器8088和8086的特點(diǎn)我們?cè)賮?lái)看8088和8086的特點(diǎn),它們具有三個(gè)特點(diǎn),第一個(gè)是采用了并行流水線的工作方式,通過(guò)設(shè)置了指令預(yù)取隊(duì)列來(lái)實(shí)現(xiàn),關(guān)于指令預(yù)取隊(duì)列我們?cè)诤竺鏁?huì)詳細(xì)的介紹。第二個(gè)是對(duì)內(nèi)存空間實(shí)行了分段管理,將內(nèi)存分成了四個(gè)段,并設(shè)置了段寄存器,可以方便的實(shí)現(xiàn)對(duì)1M內(nèi)存空間的尋址,這是我們?cè)谙乱徽乱榻B的重點(diǎn)內(nèi)容。最后就是他們都支持多處理器系統(tǒng),也就是系統(tǒng)中可以有多個(gè)CPU,而不是只有一個(gè)采用并行流水線工作方式通過(guò)設(shè)置指令預(yù)取隊(duì)列實(shí)現(xiàn)01對(duì)內(nèi)存空間實(shí)行分段管理將內(nèi)存分為4個(gè)段并設(shè)置地址段寄存器,以實(shí)現(xiàn)對(duì)1MB空間的尋址02支持多處理器系統(tǒng)系統(tǒng)中可以有多個(gè)CPU,不只一個(gè)03重點(diǎn)內(nèi)容謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第三講8088-8086CPU工作模式下面我們來(lái)學(xué)習(xí)8088,8086CPU的工作模式8088-8086CPU工作模式8088和8086既可以工作在最大模式也可以工作在最小模式,最大模式最小模式那么我們要如何告訴8088、8086它現(xiàn)在的工作模式呢?如何告訴8088、8086現(xiàn)在的工作模式?就是通過(guò)mnmx這個(gè)引腳。這個(gè)引腳對(duì)于8088和8086來(lái)說(shuō)是相同的相同當(dāng)此引腳接高電平的時(shí)候,說(shuō)明8088或8086CPU是處于最小工作模式的,當(dāng)這個(gè)引腳是低電平的時(shí)候,說(shuō)明8088或8086CPU是處于最大工作模式的,引腳接高電平時(shí)8088或8086CPU最小工作模式引腳接低電平時(shí)8088或8086CPU最大工作模式最小工作模式的意思就是整個(gè)系統(tǒng)里邊只有一個(gè)CPU,他的控制信號(hào)比較少,都由這一個(gè)CPU說(shuō)了算,所以不存在總線爭(zhēng)用的問(wèn)題,因而也就不需要接總線控制器。最大工作模式的意思是說(shuō)整個(gè)系統(tǒng)中有多個(gè)CPU,每個(gè)CPU都可能正在使用總線,所以會(huì)出現(xiàn)控制信號(hào)的來(lái)源比較多,而且會(huì)存在多個(gè)CPU爭(zhēng)著使用總線問(wèn)題,單處理器模式,控制信號(hào)較少,一般可不必接總線控制器多處理器模式,控制信號(hào)較多,須通過(guò)總線控制器與總線相連MN/MX=1(接+5V)由MN/MX引線的狀態(tài)決定MN/MX=0(接地)最小工作模式最大工作模式這種情況下,就需要有一個(gè)專門管理總線的模塊,負(fù)責(zé)決定究竟總線給誰(shuí)使用,這就是總線控制器,總線控制器專門管理總線的模塊決定究竟總線給誰(shuí)使用最小工作模式最大工作模式因此我們?cè)趨^(qū)分最大模式和最小模式的電路時(shí),最簡(jiǎn)單的方法就是看系統(tǒng)中是否連接了總線控制器最小工作模式最大工作模式系統(tǒng)是否連接總線控制器下面我們來(lái)看最小工作模式。在最小工作模式的系統(tǒng)連接圖中只有一個(gè)CPU,這個(gè)CPU要連接信號(hào)發(fā)生器,以給CPU一個(gè)固定的工作節(jié)拍。還有地址鎖存器和數(shù)據(jù)收發(fā)器用來(lái)將CPU復(fù)用的地址和數(shù)據(jù)信號(hào)正確的發(fā)送到地址總線和數(shù)據(jù)總線上。最小工作模式時(shí)鐘發(fā)生器8088CPU??控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable給CPU一個(gè)固定的工作節(jié)拍數(shù)據(jù)收發(fā)地址鎖存其他的控制信號(hào)就直接發(fā)送到控制總線上就好了。這里,我們來(lái)重點(diǎn)說(shuō)明一下地址鎖存器和數(shù)據(jù)收發(fā)器最小工作模式時(shí)鐘發(fā)生器8088CPU控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable??數(shù)據(jù)收發(fā)地址鎖存地址鎖存數(shù)據(jù)收發(fā)在介紹引腳的時(shí)候,我們知道8088和8086,它們的地址引腳和數(shù)據(jù)引腳是復(fù)用的,也就是他們使用同樣的引腳發(fā)送地址和數(shù)據(jù)信息,地址引腳數(shù)據(jù)引腳復(fù)用使用同樣的引腳發(fā)送地址和數(shù)據(jù)信息那么如何區(qū)分這個(gè)引腳上究竟發(fā)送的是數(shù)據(jù)還是地址呢?其實(shí)是通過(guò)時(shí)間來(lái)區(qū)分的如何區(qū)分引腳上究竟發(fā)送的是數(shù)據(jù)還是地址?時(shí)間芯片我們知道芯片它不管是讀數(shù)據(jù)還是在寫數(shù)據(jù),都是有一定的操作流程的,讀數(shù)據(jù)寫數(shù)據(jù)有一定的操作流程它首先要把地址發(fā)送出來(lái),當(dāng)CPU將地址發(fā)送出來(lái)的時(shí)候,他還會(huì)配合著讓ALE這個(gè)引腳有效,這個(gè)引腳也叫做地址鎖存使能信號(hào)最小工作模式時(shí)鐘發(fā)生器8088CPU??控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable數(shù)據(jù)收發(fā)地址鎖存把地址發(fā)送出來(lái)地址鎖存使能信號(hào)當(dāng)這個(gè)信號(hào)有效的時(shí)候,地址鎖存器就是會(huì)像一把鎖頭一樣,將此時(shí)AD引腳上的數(shù)據(jù)鎖存到地址總線上,一旦鎖存地址總線上的值就不會(huì)因?yàn)锳D引腳的值發(fā)生變化而變化了。最小工作模式時(shí)鐘發(fā)生器8088CPU??控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable數(shù)據(jù)收發(fā)地址鎖存信號(hào)有效不因AD引腳的值發(fā)生變化當(dāng)CPU要開始發(fā)送數(shù)據(jù)的時(shí)候,AD引腳上的值從地址信息切換成了數(shù)據(jù)信息,這些數(shù)據(jù)信息不會(huì)通過(guò)地址鎖存器進(jìn)入地址總線,而是通過(guò)數(shù)據(jù)收發(fā)器進(jìn)入了數(shù)據(jù)總線最小工作模式時(shí)鐘發(fā)生器8088CPU??控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable數(shù)據(jù)收發(fā)地址鎖存開始發(fā)送數(shù)據(jù)時(shí)數(shù)據(jù)信息不通過(guò)地址鎖存器進(jìn)入地址總線,是通過(guò)數(shù)據(jù)收發(fā)器進(jìn)入數(shù)據(jù)總線這個(gè)時(shí)候再結(jié)合CPU發(fā)出的控制指令,存儲(chǔ)器或IO接口就知道CPU究竟是要讀數(shù)據(jù)還是寫數(shù)據(jù)了最小工作模式時(shí)鐘發(fā)生器8088CPU??控制總線數(shù)據(jù)總線地址總線ALEALE:AddressLockEnable數(shù)據(jù)收發(fā)地址鎖存開始發(fā)送數(shù)據(jù)時(shí)讀數(shù)據(jù)寫數(shù)據(jù)CPU發(fā)出控制指令I(lǐng)O接口存儲(chǔ)器這是8086處于最小模式組建的一個(gè)系統(tǒng)。我們可以看到這里有負(fù)責(zé)時(shí)鐘的芯片,有進(jìn)行地址鎖存的芯片,還有進(jìn)行數(shù)據(jù)收發(fā)的芯片。請(qǐng)大家注意,這里的控制信號(hào)都是直接進(jìn)入到了控制總線上的,所以這個(gè)8086它是處于最小工作模式的80868086最小模式組建系統(tǒng)注意控制信號(hào)都是直接進(jìn)入到控制總線上最小工作模式下面我們?cè)賮?lái)看一下最大工作模式,在最大工作模式下,系統(tǒng)中會(huì)有多個(gè)CPU,最大工作模式地址總線數(shù)據(jù)總線控制總線總線控制器地址鎖存8088CPUALE數(shù)據(jù)收發(fā)時(shí)鐘發(fā)生器系統(tǒng)有多個(gè)CPU這個(gè)時(shí)候需要吧控制信號(hào)接入到總線控制器中,由總線控制器負(fù)責(zé)指定現(xiàn)在總線上的控制信號(hào)是來(lái)自于哪一路CPU。最大工作模式地址總線數(shù)據(jù)總線控制總線總線控制器地址鎖存8088CPUALE數(shù)據(jù)收發(fā)時(shí)鐘發(fā)生器控制信號(hào)來(lái)自哪一路CPU同樣的,由于CPU它的地址和數(shù)據(jù)是復(fù)用的,仍然是需要通過(guò)進(jìn)行地址鎖存的控制才能保證引腳上的地址和數(shù)據(jù)是可以被準(zhǔn)確的進(jìn)行區(qū)分的最大工作模式地址總線數(shù)據(jù)總線控制總線總線控制器地址鎖存8088CPUALE數(shù)據(jù)收發(fā)時(shí)鐘發(fā)生器進(jìn)行地址鎖存的控制保證引腳上的地址和數(shù)據(jù)被準(zhǔn)確區(qū)分這就是我們說(shuō)的,最大模式和最小模式的主要區(qū)別,就是我們要看系統(tǒng)中有多少個(gè)CPU,以及系統(tǒng)中是否有總線控制器最小工作模式最大工作模式主要區(qū)別系統(tǒng)中有多少個(gè)CPU系統(tǒng)中是否有總線控制器這是8086連接的最大工作模式的示意圖。我們可以看到除了時(shí)鐘,地址鎖存和數(shù)據(jù)收發(fā)這些跟前面一樣的芯片以外,還有一個(gè)8288,它就是總線控制器,80868086最大工作模式示意圖總線控制器它也需要一個(gè)時(shí)鐘給他工作節(jié)拍,將8288連接到控制總線上,以實(shí)現(xiàn)對(duì)總線上的控制信號(hào)進(jìn)行監(jiān)控和管理需要一個(gè)時(shí)鐘給工作節(jié)拍將8288連接到控制總線上對(duì)總線上的控制信號(hào)進(jìn)行監(jiān)控和管理謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第四講8088CPU主要引腳(一)下面我們來(lái)學(xué)習(xí)8088CPU的主要引腳8088CPU主要引腳(一)8088和8086都有40個(gè)引腳,屬于雙列直插式的封裝,他們的工作電壓是5v40個(gè)引腳雙列直插式封裝工作電壓:5v在8088和8086中,有些引腳屬于雙重定義的,雙重定義比如我們前面介紹過(guò)的地址和數(shù)據(jù)引腳,他們采用分時(shí)復(fù)用的方式進(jìn)行工作地址引腳數(shù)據(jù)引腳分時(shí)復(fù)用可以通過(guò)ALE這個(gè)引腳加上分時(shí)工作一個(gè)特性,將AD引腳上的地址和數(shù)據(jù)區(qū)分開來(lái)區(qū)分AD引腳上的地址和數(shù)據(jù)由于地址信號(hào)和數(shù)據(jù)信號(hào)是復(fù)用的,就可以大大的減少芯片所需要的引腳數(shù)目,從這張圖上可以看到8088和8086的引腳是基本相同的,我們?cè)谇斑呉呀?jīng)給大家介紹了他們的主要差別減少了引腳數(shù)目8088與8086的引腳基本相同下面我們來(lái)詳細(xì)的了解一下各引腳的功能各引腳的功能首先來(lái)看一下A16到A19這四個(gè)引腳首先來(lái)看一下A16到A19這四個(gè)引腳,它們是地址的高四位,也是復(fù)用的引腳,是跟狀態(tài)引腳復(fù)用,狀態(tài)引腳是指S3到S6狀態(tài)引腳地址高四位復(fù)用引腳這四個(gè)引腳的輸出是三態(tài)輸出,包括低電平,高電平和高阻態(tài),也就是懸浮狀態(tài)低電平三態(tài)輸出狀態(tài)引腳地址高四位復(fù)用引腳高電平高阻態(tài)(懸浮狀態(tài))8088在執(zhí)行指令的過(guò)程中,在某一個(gè)時(shí)刻這四個(gè)引腳的輸出是地址總線的高四位,此時(shí)這四個(gè)引腳的信息可以用于CPU對(duì)外部設(shè)備尋址,在某些時(shí)刻,這四個(gè)引腳表示CPU處于某種狀態(tài),S3到S6是什么含義呢?低電平三態(tài)輸出高電平高阻態(tài)(懸浮狀態(tài))輸出是地址總線的高四位用于CPU對(duì)外部設(shè)備尋址S3到S6是什么含義?首先S6它是恒等于0的,S5是中斷標(biāo)志位,S4到S3的組合表示CPU當(dāng)前使用的段寄存器是哪一個(gè)?S6:恒等于0S5:中斷標(biāo)志位S4到S3的組合表示CPU當(dāng)前使用的段寄存器是哪一個(gè)?關(guān)于段寄存器的定義我們?cè)诤竺鏁?huì)給大家介紹,這里大家就知道S3到S4的不同組合表示CPU它正在使用不同的寄存器,這個(gè)寄存器跟尋址有關(guān)S6:恒等于0S5:中斷標(biāo)志位S3到S4的不同組合表示CPU在使用不同寄存器再來(lái)看A8到15,A8到A15是地址總線的引腳,地址總線的引腳由于8088沒有D8~D15的引腳,所以A8到A15也沒有跟數(shù)據(jù)總線復(fù)用,它們只進(jìn)行地址信號(hào)的輸出,沒有跟數(shù)據(jù)總線復(fù)用只進(jìn)行地址信號(hào)輸出地址總線的引腳再來(lái)看AD00到AD7,這些是地址線和數(shù)據(jù)線復(fù)用的引腳,也是三態(tài)的輸出,我們前面已經(jīng)給大家介紹了如何區(qū)分這些引腳究竟是地址還是數(shù)據(jù)?地址線和數(shù)據(jù)線復(fù)用的引腳三態(tài)的輸出如何區(qū)分引腳是地址還是數(shù)據(jù)?可以結(jié)合ALE以及DEN的狀態(tài)ALEDEN當(dāng)ALE有效的時(shí)候,說(shuō)明這些引腳上它發(fā)送的是地址信號(hào),地址鎖存器會(huì)將這些地址鎖存到地址總線上當(dāng)DEN這個(gè)引腳有效的時(shí)候,說(shuō)明這些引腳上發(fā)送的是數(shù)據(jù)信號(hào)ALEDEN鎖存在地址總線上地址信號(hào)數(shù)據(jù)信號(hào)再來(lái)看IO/M這個(gè)引腳,我們?cè)谇懊嬉呀?jīng)給大家介紹過(guò)了,他表示的是CPU要去存取內(nèi)存儲(chǔ)器的信息還是與IO接口進(jìn)行數(shù)據(jù)的傳輸,CPU存取內(nèi)存儲(chǔ)器的信息CPU與IO接口傳輸數(shù)據(jù)當(dāng)這個(gè)引腳是高電平時(shí),表示CPU要IO接口進(jìn)行信息的傳輸,當(dāng)這個(gè)引腳是低電平的時(shí)候,表示CPU要跟存儲(chǔ)器進(jìn)行信息的傳輸CPU和IO接口傳輸信息高電平CPU和存儲(chǔ)器傳輸信息低電平再來(lái)看WR和RD這兩個(gè)引腳這兩個(gè)引腳的頭上都是帶小橫杠的,那說(shuō)明這兩個(gè)引腳都是低電平有效的低電平有效WR是write的簡(jiǎn)寫,他表示寫信號(hào)RD是read的簡(jiǎn)寫,他就表示是讀信號(hào)低電平有效讀信號(hào)read寫信號(hào)write所以當(dāng)WR這個(gè)引腳是低電平時(shí),表示CPU要進(jìn)行寫操作CPU要寫操作低電平當(dāng)RD這個(gè)引腳是低電平時(shí),表示CPU要進(jìn)行讀操作,那究竟寫IO還是存儲(chǔ)器或者是讀IO還是存儲(chǔ)器呢?同學(xué)們想一下?對(duì),我們要將WR和RD的狀態(tài)與IO/m這個(gè)引腳的狀態(tài)結(jié)合起來(lái)一起看才能確定CPU要讀操作低電平是寫IO或存儲(chǔ)器還是讀IO或存儲(chǔ)器?當(dāng)RD這個(gè)引腳是低電平時(shí),表示CPU要進(jìn)行讀操作,那究竟寫IO還是存儲(chǔ)器或者是讀IO還是存儲(chǔ)器呢?同學(xué)們想一下?對(duì),我們要將WR和RD的狀態(tài)與IO/m這個(gè)引腳的狀態(tài)結(jié)合起來(lái)一起看才能確定CPU要讀操作低電平結(jié)合WR和RD的狀態(tài)與IO/m引腳的狀態(tài)謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第五講8088CPU主要引腳(二)下面我們來(lái)學(xué)習(xí)另外幾個(gè)比較重要的引腳8088CPU主要引腳(二)先來(lái)看一下DT/R這個(gè)引腳8088CPU主要引腳(二)DT是datatransmit的簡(jiǎn)寫,DR是datareceive的簡(jiǎn)寫DT:datatransmitDR:datareceive8088CPU主要引腳(二)DT/R是復(fù)用的引腳,它表示數(shù)據(jù)發(fā)送和接收的控制信號(hào)復(fù)用引腳數(shù)據(jù)發(fā)送接收控制信號(hào)8088CPU主要引腳(二)它輸出也是三態(tài),用于指示數(shù)據(jù)的傳送方向指示數(shù)據(jù)傳送方向輸出:三態(tài)8088CPU主要引腳(二)當(dāng)DT有效的時(shí)候,表示數(shù)據(jù)是從CPU送往外部的,當(dāng)DR有效的時(shí)候,表示數(shù)據(jù)是從外部進(jìn)入到CPU的,它可以用來(lái)控制總線收發(fā)器的傳送方向指示數(shù)據(jù)傳送方向輸出:三態(tài)數(shù)據(jù)從CPU送往外部DT有效數(shù)據(jù)從外部進(jìn)入CPUDR有效控制總線收發(fā)器的傳送方向下一個(gè)引腳是DEN,它是數(shù)據(jù)允許信號(hào)數(shù)據(jù)允許信號(hào)由于地址總線和數(shù)據(jù)總線是復(fù)用的,所以當(dāng)DEN有效的時(shí)候,表示復(fù)用的引腳上,實(shí)際傳送的是數(shù)據(jù)信息,也就是AD0~AD7引腳上正在發(fā)送D0~D7數(shù)據(jù)允許信號(hào)AD0~AD7引腳上正在發(fā)送D0~D7傳送數(shù)據(jù)信息而且數(shù)據(jù)信息會(huì)被鎖存在數(shù)據(jù)鎖存器中數(shù)據(jù)允許信號(hào)AD0~AD7引腳上正在發(fā)送D0~D7傳送數(shù)據(jù)信息鎖存在數(shù)據(jù)鎖存器下面再來(lái)看一下,地址鎖存使能信號(hào),地址鎖存使能信號(hào)它會(huì)將AD0到A19上的信息鎖存在地址總線上將AD0到A19上的信息鎖存在地址總線上當(dāng)它為高電平的時(shí)候,表示ad0~ad7上正在發(fā)送的是地址信號(hào)ad0~ad7上正在發(fā)送地址信號(hào)高電平Ready信號(hào)是輸入信號(hào),它是高電平有效的,表示準(zhǔn)備好了輸入信號(hào)準(zhǔn)備好了高電平被訪問(wèn)的內(nèi)存或者io會(huì)發(fā)出這樣的信號(hào)給CPU,當(dāng)這個(gè)信號(hào)有效時(shí),表示內(nèi)存或IO已經(jīng)準(zhǔn)備好了,CPU可以對(duì)其進(jìn)行數(shù)據(jù)訪問(wèn)輸入信號(hào)準(zhǔn)備好了高電平內(nèi)存或IO已準(zhǔn)備好,CPUa可以對(duì)其進(jìn)行數(shù)據(jù)訪問(wèn)信號(hào)有效當(dāng)這個(gè)信號(hào)無(wú)效的時(shí)候,表示內(nèi)存或IO還沒有準(zhǔn)備好,CPU就不能對(duì)其進(jìn)行讀寫操作和訪問(wèn)輸入信號(hào)準(zhǔn)備好了高電平內(nèi)存或IO未準(zhǔn)備好,CPUa不能對(duì)其進(jìn)行讀寫操作和訪問(wèn)信號(hào)無(wú)效所以這個(gè)信號(hào)其實(shí)是外部設(shè)備向CPU報(bào)告他們的狀態(tài)的信號(hào),當(dāng)CPU檢測(cè)到這個(gè)引腳從0變到1的時(shí)候,說(shuō)明內(nèi)存或io準(zhǔn)備好了,CPU才開始對(duì)這些設(shè)備進(jìn)行訪問(wèn)輸入信號(hào)向CPU報(bào)告狀態(tài)內(nèi)存或io已準(zhǔn)備好從0變到1下面介紹跟中斷相關(guān)的引腳,首先是INTR引腳,它的英文是interrupt,就是中斷,Interrupt:中斷它表示可屏蔽的中斷請(qǐng)求信號(hào),是輸入信號(hào),還記得屏蔽是什么意思嗎?屏蔽就是讓CPU感受不到Interrupt:中斷輸入信號(hào)可屏蔽的中斷請(qǐng)求信號(hào)屏蔽:讓CPU感受不到在沒有屏蔽的情況下,CPU在每條指令的最后一個(gè)機(jī)器周期的最后一個(gè)時(shí)鐘周期,會(huì)去看一下這個(gè)引腳,如果這個(gè)引腳為高電平,那就是有效的,那么CPU它就可能會(huì)去執(zhí)行外部設(shè)備的中斷請(qǐng)求引腳為高電平則有效,CPU執(zhí)行外部設(shè)備的中斷請(qǐng)求沒有屏蔽如果CPU屏蔽了外部中斷,那么這個(gè)引腳即使有效,CPU也不會(huì)去相應(yīng)這個(gè)中斷。CPU可以通過(guò)指令屏蔽掉外部中斷,這個(gè)操作也叫關(guān)中斷。引腳為高電平則有效,CPU執(zhí)行外部設(shè)備的中斷請(qǐng)求沒有屏蔽即使引腳有效,CPU也不會(huì)響應(yīng)中斷有屏蔽關(guān)中斷:CPU通過(guò)指令屏蔽掉外部中斷下面一個(gè)引腳是INTA,它的英文是interruptacknowledgement,意思是中斷響應(yīng),它是輸出信號(hào),中斷響應(yīng)interruptacknowledgement輸出信號(hào)當(dāng)CPU在INTR上收到的這個(gè)中斷請(qǐng)求信號(hào)后,如果他要響應(yīng)這個(gè)中斷就要將INTA這個(gè)引腳置成低電平,表示CPU要響應(yīng)INTR的請(qǐng)求了,它可用于外部中斷源的中斷類型碼的選通信號(hào)CPU收到中斷請(qǐng)求信號(hào)CPU響應(yīng)INTR的請(qǐng)求將INTA置成低電平可用于外部中斷源的中斷類型碼的選通信號(hào)再來(lái)看一下nonmaskableinterrupt,NMI,它是不可屏蔽的中斷請(qǐng)求信號(hào),也是輸入信號(hào)中斷請(qǐng)求信號(hào)輸入信號(hào)從這個(gè)引腳來(lái)的外部中斷請(qǐng)求,CPU是不能用軟件對(duì)它進(jìn)行屏蔽的,CPU在執(zhí)行完它當(dāng)前的指令以后,必須去響應(yīng)該中斷請(qǐng)求,這就是不可屏蔽的含義CPU不能用軟件屏蔽它CPU必須響應(yīng)中斷請(qǐng)求謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第六講8088CPU內(nèi)部結(jié)構(gòu)下面我們來(lái)學(xué)習(xí)一下8088的內(nèi)部結(jié)構(gòu)8088CPU內(nèi)部結(jié)構(gòu)8088的內(nèi)部結(jié)構(gòu)如這張圖所示。其實(shí)這張圖看起來(lái)并不復(fù)雜,對(duì)嗎?這是我們?yōu)槭裁匆?0X86為原型機(jī)來(lái)講解CPU的原因。就是因?yàn)樗麄兊慕Y(jié)構(gòu)比較簡(jiǎn)單,同學(xué)們?nèi)菀桌斫?,像其他更先進(jìn)的CPU,它的內(nèi)部結(jié)構(gòu)太復(fù)雜了,同學(xué)們學(xué)習(xí)起來(lái)會(huì)非常困難8088的內(nèi)部結(jié)構(gòu)圖并不復(fù)雜8088結(jié)構(gòu)較簡(jiǎn)單易理解更先進(jìn)的CPU內(nèi)部結(jié)構(gòu)復(fù)雜不易理解businterfaceunitexecutionunit在8088的內(nèi)部,其實(shí)我們可以把它從中間分開看成兩部分,左邊的叫執(zhí)行單元英文是executionunit,簡(jiǎn)寫成EU。右邊叫總線接口單元,英文是businterfaceunit,簡(jiǎn)寫成BIU執(zhí)行單元總線接口單元EUBIU從字面上我們可以這么理解。EU是CPU執(zhí)行各種指令的地方,而BIU是CPU跟外部設(shè)備進(jìn)行通信的通道EUBIUCPU執(zhí)行各種指令的地方CPU跟外部設(shè)備進(jìn)行通信的通道首先來(lái)看一下執(zhí)行單元,它里面包括了運(yùn)算器,就是像馬蹄形的這個(gè)部分。八個(gè)通用寄存器,就是這上面8個(gè)長(zhǎng)方形的框。一個(gè)標(biāo)志寄存器,它在ALU的下面,寫著FLAGS的這個(gè)地方和EU部分的控制電路,在跟BIU鄰近的這個(gè)地方。執(zhí)行單元的功能,我們可以跟它的內(nèi)部器件對(duì)應(yīng)著看。運(yùn)算器是進(jìn)行指令的計(jì)算和執(zhí)行的地方。八個(gè)通用寄存器可以用來(lái)暫存中間運(yùn)算結(jié)果。而標(biāo)志寄存器可以用來(lái)保存運(yùn)算的特征??刂齐娐肥怯脕?lái)控制究竟是要取指令還是去執(zhí)行指令等構(gòu)成執(zhí)行單元功能運(yùn)算器8個(gè)通用寄存器1個(gè)標(biāo)志寄存器EU部分控制電路指令的計(jì)算和執(zhí)行暫存中間運(yùn)算結(jié)果保存運(yùn)算的特征控制取或執(zhí)行指令總線接口單元的功能是從內(nèi)存中取出指令到指令預(yù)取隊(duì)列中,并且負(fù)責(zé)跟內(nèi)存或者是輸入輸出接口之間進(jìn)行數(shù)據(jù)的傳送。如果執(zhí)行到了轉(zhuǎn)移指令,那么意味著現(xiàn)在保存在指令預(yù)取隊(duì)列中的指令可能都不是將要執(zhí)行的治理,那么BIU會(huì)把指令預(yù)取隊(duì)列的內(nèi)容清空,也就是復(fù)位,然后再?gòu)霓D(zhuǎn)移指令指示的新的地址取指令。取到指令后傳給執(zhí)行指令的單元進(jìn)行執(zhí)行。指令預(yù)取隊(duì)列是80X86系列的創(chuàng)新,總線接口單元功能從內(nèi)存中取指令到指令預(yù)取隊(duì)列負(fù)責(zé)與內(nèi)存或輸入/輸出接口之間的數(shù)據(jù)傳送在執(zhí)行轉(zhuǎn)移程序時(shí),BIU使指令預(yù)取隊(duì)列復(fù)位,從指定的新地址取指令,并立即傳給執(zhí)行單元執(zhí)行80X86系列的創(chuàng)新功能在執(zhí)行轉(zhuǎn)移程序時(shí),BIU使指令預(yù)取隊(duì)列復(fù)位,從指定的新地址取指令,并立即傳給執(zhí)行單元執(zhí)行它是CPU能夠進(jìn)行并行流水線工作的非常重要的基礎(chǔ),我們?cè)谙乱还?jié)會(huì)給大家重點(diǎn)的介紹總線接口單元從內(nèi)存中取指令到指令預(yù)取隊(duì)列負(fù)責(zé)與內(nèi)存或輸入/輸出接口之間的數(shù)據(jù)傳送指令預(yù)取隊(duì)列是并行流水線工作的基礎(chǔ)功能在執(zhí)行轉(zhuǎn)移程序時(shí),BIU使指令預(yù)取隊(duì)列復(fù)位,從指定的新地址取指令,并立即傳給執(zhí)行單元執(zhí)行在BIU這個(gè)部分除了指令預(yù)取隊(duì)列以外,還有幾個(gè)長(zhǎng)方形的框,標(biāo)記著段寄存器,這些是專用寄存器,其中IP是指令指針寄存器,它告訴我們目標(biāo)指令的位置再跟著老師網(wǎng)上看,你可以看到一個(gè)倒的馬蹄形的模塊,它是地址加法器,究竟是怎么相加的我們?cè)谙乱徽聲?huì)給大家介紹,但是大家要知道,這個(gè)地址加法器它的輸出就是20位的地址信息,被傳輸?shù)降刂芬_上??偩€接口單元從內(nèi)存中取指令到指令預(yù)取隊(duì)列負(fù)責(zé)與內(nèi)存或輸入/輸出接口之間的數(shù)據(jù)傳送指令預(yù)取隊(duì)列是并行流水線工作的基礎(chǔ)指令指針寄存器目標(biāo)指令的位置功能在執(zhí)行轉(zhuǎn)移程序時(shí),BIU使指令預(yù)取隊(duì)列復(fù)位,從指定的新地址取指令,并立即傳給執(zhí)行單元執(zhí)行再跟著老師網(wǎng)上看,你可以看到一個(gè)倒的馬蹄形的模塊,它是地址加法器,總線接口單元從內(nèi)存中取指令到指令預(yù)取隊(duì)列負(fù)責(zé)與內(nèi)存或輸入/輸出接口之間的數(shù)據(jù)傳送指令預(yù)取隊(duì)列是并行流水線工作的基礎(chǔ)地址加法器究竟是怎么相加的我們?cè)谙乱徽聲?huì)給大家介紹,但是大家要知道,這個(gè)地址加法器它的輸出就是20位的地址信息,被傳輸?shù)降刂芬_上。地址加法器是怎么相加?地址加法器的輸出是20位的地址信息,被傳輸?shù)降刂芬_上。謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第七講指令預(yù)取隊(duì)列這一節(jié)我們來(lái)學(xué)習(xí)指令預(yù)取隊(duì)列指令預(yù)取隊(duì)列首先來(lái)了解一下為什么需要指令預(yù)取隊(duì)列,為什么需要指令預(yù)取隊(duì)列?因?yàn)檫@要涉及到傳送地址,數(shù)據(jù)這些信息,要使用地址總線和數(shù)據(jù)總線等,因此CPU和內(nèi)存之間通信的速度要遠(yuǎn)遠(yuǎn)低于CPU內(nèi)部處理的速度傳送地址傳送數(shù)據(jù)地址總線和數(shù)據(jù)總線CPU執(zhí)行完指令要等待很長(zhǎng)時(shí)間下一條指令到達(dá)才繼續(xù)工作拖慢運(yùn)行時(shí)間和工作效率這會(huì)導(dǎo)致CPU執(zhí)行完了指令要等待很長(zhǎng)時(shí)間,等下一條指令到達(dá)后才能繼續(xù)工作,這嚴(yán)重拖慢了CPU的運(yùn)行時(shí)間和工作效率。那要如何解決這個(gè)問(wèn)題呢?如何解決這個(gè)問(wèn)題?當(dāng)然,我們可以想辦法提升CPU與內(nèi)存之間通信的速率,但這會(huì)大幅度提升成本CPU內(nèi)存大幅度提升成本通信速率那么工程師們想到的辦法,就是用指令預(yù)取隊(duì)列,在EU和BIU之間做一個(gè)緩沖。工程師指令預(yù)取隊(duì)列EUBIUBIU可以預(yù)先將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放在指令預(yù)取隊(duì)列中。這個(gè)隊(duì)列執(zhí)行的規(guī)則是先進(jìn)先出。就是先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行。這樣EU就不必等待BIU讀取指令,而可以一直從隊(duì)列中取指令并執(zhí)行了BIUEU將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放指令預(yù)取隊(duì)列不必等待BIU讀取指令,從隊(duì)列中取指令并執(zhí)行先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行先進(jìn)先出因此,我們說(shuō)指令預(yù)取隊(duì)列保證EU和BIU兩個(gè)部分可以同時(shí)進(jìn)行工作。最重要的是有了指令預(yù)取隊(duì)列以后,我們才真正實(shí)現(xiàn)了指令的并行執(zhí)行BIUEU指令預(yù)取隊(duì)列同時(shí)進(jìn)行并行執(zhí)行我們?cè)谇懊嫣岬竭^(guò),要想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做在8088、8086出現(xiàn)之前,也就是在沒有指令預(yù)取隊(duì)列的時(shí)候,CPU是用串行的方式來(lái)進(jìn)行指令操作的,8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作取指指令流水線先取指令,然后如果需要取操作數(shù)的話,再去取操作數(shù),最后再執(zhí)行,執(zhí)行完了以后把數(shù)據(jù)存儲(chǔ)下來(lái),再去取下一條指令,這就是串行的方式。這種串行方式的工作效率會(huì)比較低8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作執(zhí)行存數(shù)取數(shù)串行方式工作效率會(huì)比較低有了指令預(yù)取隊(duì)列,EU和BIU各司其職,實(shí)現(xiàn)并行的執(zhí)行方式。這種方式可以大大提升CPU處理指令的效率BIUEU指令預(yù)取隊(duì)列各司其職并行執(zhí)行提升CPU處理指令的效率負(fù)責(zé)指令的執(zhí)行由于取指令是事先進(jìn)行,有時(shí)間差在并行執(zhí)行方式中,BIU是CPU跟外部通信的一個(gè)通道,他負(fù)責(zé)從內(nèi)存中取出指令,并送入到指令預(yù)取隊(duì)列中。如果需要的話它再?gòu)膬?nèi)存中取操作數(shù)再送到EU部分執(zhí)行。EU就負(fù)責(zé)指令的執(zhí)行。而且由于取指令是事先就進(jìn)行的,有個(gè)時(shí)間差的問(wèn)題,所以EU也不需要再等等BIU了EUBIU負(fù)責(zé)從內(nèi)存取指送入指令流隊(duì)列從內(nèi)存取操作數(shù)送至EU部份去執(zhí)行8086/8088CPU我們來(lái)看這張圖,BIU一直在取指令,EU一直在執(zhí)行指令,如果需要取操作數(shù)的話,BIU會(huì)再去取個(gè)操作數(shù)。所以總線可以一直處于繁忙的狀態(tài)如需取操作數(shù),BIU會(huì)再去取個(gè)操作數(shù)因?yàn)槿≈噶詈蛨?zhí)行指令由不同的模塊來(lái)負(fù)責(zé),所以我們說(shuō)他們?cè)诳臻g上是分開的。所以在時(shí)間上他們是可以被同時(shí)執(zhí)行的,也就是取指令和執(zhí)行指令可以同時(shí)進(jìn)行了,當(dāng)然取的指令和執(zhí)行的指令不是同一個(gè)指令哈。這就是指令的并行執(zhí)行BIU&EU取指令和執(zhí)行指令由不同模塊負(fù)責(zé)在空間上是分開的,故在時(shí)間上可采用重疊操作技術(shù)(取的指令和執(zhí)行的指令不是同一個(gè)指令)這就是指令的并行執(zhí)行BIU取指1取指2取指3取指4取指5得到數(shù)據(jù)取指6EU等待執(zhí)行1執(zhí)行2執(zhí)行3執(zhí)行4指令的并行執(zhí)行8088和8086首次在CPU中采用了指令流水線的結(jié)構(gòu),使他們成為了CPU發(fā)展史上的一個(gè)里程碑。采用指令流水線的結(jié)構(gòu)CPU發(fā)展史上的里程碑隨著技術(shù)的發(fā)展,現(xiàn)在我們使用的CPU為了加速,cpu中不止有指令預(yù)取隊(duì)列還加入了更多新的技術(shù)。請(qǐng)感興趣的同學(xué),自行了解一下?,F(xiàn)在使用的CPU為了加速,不止有指令預(yù)取隊(duì)列還加入更多新的技術(shù)。謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第七講指令預(yù)取隊(duì)列這一節(jié)我們來(lái)學(xué)習(xí)指令預(yù)取隊(duì)列指令預(yù)取隊(duì)列首先來(lái)了解一下為什么需要指令預(yù)取隊(duì)列,為什么需要指令預(yù)取隊(duì)列?因?yàn)檫@要涉及到傳送地址,數(shù)據(jù)這些信息,要使用地址總線和數(shù)據(jù)總線等,因此CPU和內(nèi)存之間通信的速度要遠(yuǎn)遠(yuǎn)低于CPU內(nèi)部處理的速度傳送地址傳送數(shù)據(jù)地址總線和數(shù)據(jù)總線CPU執(zhí)行完指令要等待很長(zhǎng)時(shí)間下一條指令到達(dá)才繼續(xù)工作拖慢運(yùn)行時(shí)間和工作效率這會(huì)導(dǎo)致CPU執(zhí)行完了指令要等待很長(zhǎng)時(shí)間,等下一條指令到達(dá)后才能繼續(xù)工作,這嚴(yán)重拖慢了CPU的運(yùn)行時(shí)間和工作效率。那要如何解決這個(gè)問(wèn)題呢?如何解決這個(gè)問(wèn)題?當(dāng)然,我們可以想辦法提升CPU與內(nèi)存之間通信的速率,但這會(huì)大幅度提升成本CPU內(nèi)存大幅度提升成本通信速率那么工程師們想到的辦法,就是用指令預(yù)取隊(duì)列,在EU和BIU之間做一個(gè)緩沖。工程師指令預(yù)取隊(duì)列EUBIUBIU可以預(yù)先將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放在指令預(yù)取隊(duì)列中。這個(gè)隊(duì)列執(zhí)行的規(guī)則是先進(jìn)先出。就是先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行。這樣EU就不必等待BIU讀取指令,而可以一直從隊(duì)列中取指令并執(zhí)行了BIUEU將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放指令預(yù)取隊(duì)列不必等待BIU讀取指令,從隊(duì)列中取指令并執(zhí)行先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行先進(jìn)先出因此,我們說(shuō)指令預(yù)取隊(duì)列保證EU和BIU兩個(gè)部分可以同時(shí)進(jìn)行工作。最重要的是有了指令預(yù)取隊(duì)列以后,我們才真正實(shí)現(xiàn)了指令的并行執(zhí)行BIUEU指令預(yù)取隊(duì)列同時(shí)進(jìn)行并行執(zhí)行我們?cè)谇懊嫣岬竭^(guò),要想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做在8088、8086出現(xiàn)之前,也就是在沒有指令預(yù)取隊(duì)列的時(shí)候,CPU是用串行的方式來(lái)進(jìn)行指令操作的,8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作取指指令流水線先取指令,然后如果需要取操作數(shù)的話,再去取操作數(shù),最后再執(zhí)行,執(zhí)行完了以后把數(shù)據(jù)存儲(chǔ)下來(lái),再去取下一條指令,這就是串行的方式。這種串行方式的工作效率會(huì)比較低8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作執(zhí)行存數(shù)取數(shù)串行方式工作效率會(huì)比較低有了指令預(yù)取隊(duì)列,EU和BIU各司其職,實(shí)現(xiàn)并行的執(zhí)行方式。這種方式可以大大提升CPU處理指令的效率BIUEU指令預(yù)取隊(duì)列各司其職并行執(zhí)行提升CPU處理指令的效率負(fù)責(zé)指令的執(zhí)行由于取指令是事先進(jìn)行,有時(shí)間差在并行執(zhí)行方式中,BIU是CPU跟外部通信的一個(gè)通道,他負(fù)責(zé)從內(nèi)存中取出指令,并送入到指令預(yù)取隊(duì)列中。如果需要的話它再?gòu)膬?nèi)存中取操作數(shù)再送到EU部分執(zhí)行。EU就負(fù)責(zé)指令的執(zhí)行。而且由于取指令是事先就進(jìn)行的,有個(gè)時(shí)間差的問(wèn)題,所以EU也不需要再等等BIU了EUBIU負(fù)責(zé)從內(nèi)存取指送入指令流隊(duì)列從內(nèi)存取操作數(shù)送至EU部份去執(zhí)行8086/8088CPU我們來(lái)看這張圖,BIU一直在取指令,EU一直在執(zhí)行指令,如果需要取操作數(shù)的話,BIU會(huì)再去取個(gè)操作數(shù)。所以總線可以一直處于繁忙的狀態(tài)如需取操作數(shù),BIU會(huì)再去取個(gè)操作數(shù)因?yàn)槿≈噶詈蛨?zhí)行指令由不同的模塊來(lái)負(fù)責(zé),所以我們說(shuō)他們?cè)诳臻g上是分開的。所以在時(shí)間上他們是可以被同時(shí)執(zhí)行的,也就是取指令和執(zhí)行指令可以同時(shí)進(jìn)行了,當(dāng)然取的指令和執(zhí)行的指令不是同一個(gè)指令哈。這就是指令的并行執(zhí)行BIU&EU取指令和執(zhí)行指令由不同模塊負(fù)責(zé)在空間上是分開的,故在時(shí)間上可采用重疊操作技術(shù)(取的指令和執(zhí)行的指令不是同一個(gè)指令)這就是指令的并行執(zhí)行BIU取指1取指2取指3取指4取指5得到數(shù)據(jù)取指6EU等待執(zhí)行1執(zhí)行2執(zhí)行3執(zhí)行4指令的并行執(zhí)行8088和8086首次在CPU中采用了指令流水線的結(jié)構(gòu),使他們成為了CPU發(fā)展史上的一個(gè)里程碑。采用指令流水線的結(jié)構(gòu)CPU發(fā)展史上的里程碑隨著技術(shù)的發(fā)展,現(xiàn)在我們使用的CPU為了加速,cpu中不止有指令預(yù)取隊(duì)列還加入了更多新的技術(shù)。請(qǐng)感興趣的同學(xué),自行了解一下?,F(xiàn)在使用的CPU為了加速,不止有指令預(yù)取隊(duì)列還加入更多新的技術(shù)。謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第七講指令預(yù)取隊(duì)列這一節(jié)我們來(lái)學(xué)習(xí)指令預(yù)取隊(duì)列指令預(yù)取隊(duì)列首先來(lái)了解一下為什么需要指令預(yù)取隊(duì)列,為什么需要指令預(yù)取隊(duì)列?主要的原因是CPU處理指令的速度比較快,但是從CPU從內(nèi)存取指令或操作數(shù)的速度比較慢,因?yàn)檫@要涉及到傳送地址,數(shù)據(jù)這些信息,要使用地址總線和數(shù)據(jù)總線等,因此CPU和內(nèi)存之間通信的速度要遠(yuǎn)遠(yuǎn)低于CPU內(nèi)部處理的速度傳送地址傳送數(shù)據(jù)地址總線和數(shù)據(jù)總線CPU執(zhí)行完指令要等待很長(zhǎng)時(shí)間下一條指令到達(dá)才繼續(xù)工作拖慢運(yùn)行時(shí)間和工作效率這會(huì)導(dǎo)致CPU執(zhí)行完了指令要等待很長(zhǎng)時(shí)間,等下一條指令到達(dá)后才能繼續(xù)工作,這嚴(yán)重拖慢了CPU的運(yùn)行時(shí)間和工作效率。那要如何解決這個(gè)問(wèn)題呢?如何解決這個(gè)問(wèn)題?當(dāng)然,我們可以想辦法提升CPU與內(nèi)存之間通信的速率,但這會(huì)大幅度提升成本CPU內(nèi)存大幅度提升成本通信速率那么工程師們想到的辦法,就是用指令預(yù)取隊(duì)列,在EU和BIU之間做一個(gè)緩沖。工程師指令預(yù)取隊(duì)列EUBIUBIU可以預(yù)先將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放在指令預(yù)取隊(duì)列中。這個(gè)隊(duì)列執(zhí)行的規(guī)則是先進(jìn)先出。就是先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行。這樣EU就不必等待BIU讀取指令,而可以一直從隊(duì)列中取指令并執(zhí)行了BIUEU將多條指令讀進(jìn)來(lái)按先來(lái)后到的順序存放指令預(yù)取隊(duì)列不必等待BIU讀取指令,從隊(duì)列中取指令并執(zhí)行先進(jìn)來(lái)的指令先從隊(duì)列中拿出去執(zhí)行先進(jìn)先出因此,我們說(shuō)指令預(yù)取隊(duì)列保證EU和BIU兩個(gè)部分可以同時(shí)進(jìn)行工作。最重要的是有了指令預(yù)取隊(duì)列以后,我們才真正實(shí)現(xiàn)了指令的并行執(zhí)行BIUEU指令預(yù)取隊(duì)列同時(shí)進(jìn)行并行執(zhí)行我們?cè)谇懊嫣岬竭^(guò),要想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做想實(shí)現(xiàn)指令的并行執(zhí)行,要把取指令,分析指令和執(zhí)行指令交給不同的人去做在8088、8086出現(xiàn)之前,也就是在沒有指令預(yù)取隊(duì)列的時(shí)候,CPU是用串行的方式來(lái)進(jìn)行指令操作的,8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作取指指令流水線先取指令,然后如果需要取操作數(shù)的話,再去取操作數(shù),最后再執(zhí)行,執(zhí)行完了以后把數(shù)據(jù)存儲(chǔ)下來(lái),再去取下一條指令,這就是串行的方式。這種串行方式的工作效率會(huì)比較低8088、8086出現(xiàn)前,沒有指令預(yù)取隊(duì)列時(shí)CPU用串行的方式進(jìn)行指令操作執(zhí)行存數(shù)取數(shù)串行方式工作效率會(huì)比較低有了指令預(yù)取隊(duì)列,EU和BIU各司其職,實(shí)現(xiàn)并行的執(zhí)行方式。這種方式可以大大提升CPU處理指令的效率BIUEU指令預(yù)取隊(duì)列各司其職并行執(zhí)行提升CPU處理指令的效率負(fù)責(zé)指令的執(zhí)行由于取指令是事先進(jìn)行,有時(shí)間差在并行執(zhí)行方式中,BIU是CPU跟外部通信的一個(gè)通道,他負(fù)責(zé)從內(nèi)存中取出指令,并送入到指令預(yù)取隊(duì)列中。如果需要的話它再?gòu)膬?nèi)存中取操作數(shù)再送到EU部分執(zhí)行。EU就負(fù)責(zé)指令的執(zhí)行。而且由于取指令是事先就進(jìn)行的,有個(gè)時(shí)間差的問(wèn)題,所以EU也不需要再等等BIU了EUBIU負(fù)責(zé)從內(nèi)存取指送入指令流隊(duì)列從內(nèi)存取操作數(shù)送至EU部份去執(zhí)行8086/8088CPU我們來(lái)看這張圖,BIU一直在取指令,EU一直在執(zhí)行指令,如果需要取操作數(shù)的話,BIU會(huì)再去取個(gè)操作數(shù)。所以總線可以一直處于繁忙的狀態(tài)如需取操作數(shù),BIU會(huì)再去取個(gè)操作數(shù)因?yàn)槿≈噶詈蛨?zhí)行指令由不同的模塊來(lái)負(fù)責(zé),所以我們說(shuō)他們?cè)诳臻g上是分開的。所以在時(shí)間上他們是可以被同時(shí)執(zhí)行的,也就是取指令和執(zhí)行指令可以同時(shí)進(jìn)行了,當(dāng)然取的指令和執(zhí)行的指令不是同一個(gè)指令哈。這就是指令的并行執(zhí)行BIU&EU取指令和執(zhí)行指令由不同模塊負(fù)責(zé)在空間上是分開的,故在時(shí)間上可采用重疊操作技術(shù)(取的指令和執(zhí)行的指令不是同一個(gè)指令)這就是指令的并行執(zhí)行BIU取指1取指2取指3取指4取指5得到數(shù)據(jù)取指6EU等待執(zhí)行1執(zhí)行2執(zhí)行3執(zhí)行4指令的并行執(zhí)行8088和8086首次在CPU中采用了指令流水線的結(jié)構(gòu),使他們成為了CPU發(fā)展史上的一個(gè)里程碑。采用指令流水線的結(jié)構(gòu)CPU發(fā)展史上的里程碑隨著技術(shù)的發(fā)展,現(xiàn)在我們使用的CPU為了加速,cpu中不止有指令預(yù)取隊(duì)列還加入了更多新的技術(shù)。請(qǐng)感興趣的同學(xué),自行了解一下?,F(xiàn)在使用的CPU為了加速,不止有指令預(yù)取隊(duì)列還加入更多新的技術(shù)。謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第八講8088CPU的通用寄存器下面我們來(lái)學(xué)習(xí)8088CPU的通用寄存器8088CPU的通用寄存器在8088的內(nèi)部有14個(gè),16位的寄存器,我們把它們分成兩類,一類是通用寄存器,一類是專用寄存器,左邊是通用寄存器,一共有八個(gè),這八個(gè)通用寄存器都在8088內(nèi)部的EU這個(gè)部分中,我們可以把這八個(gè)通用寄存器再細(xì)分成三類,包括數(shù)據(jù)寄存器AX、BX、CX和DX共4個(gè),兩個(gè)指針寄存器SP和BP,還有兩個(gè)變址寄存器SI和DI14個(gè)16位的寄存器通用寄存器專用寄存器AHALBHBLCHCLDHDLAXBXCXDX堆棧指針寄存器基址指針寄存器SPBP指針寄存器SIDI源變址寄存器目的變址寄存器變址寄存器數(shù)據(jù)寄存器IP指令指針FLAGS狀態(tài)標(biāo)志控制寄存器CSDSSSES段寄存器代碼段寄存器數(shù)據(jù)段寄存器堆棧段寄存器附加段寄存器首先我們來(lái)看一下數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是用來(lái)存放參與運(yùn)算的數(shù)據(jù)或者運(yùn)算的結(jié)果,這里的每一個(gè)數(shù)據(jù)寄存器都是16位的,但是每一個(gè)16位的寄存器又可以分成兩個(gè)獨(dú)立的八位寄存器來(lái)使用數(shù)據(jù)寄存器用于存放運(yùn)算數(shù)據(jù)或運(yùn)算結(jié)果每個(gè)16位寄存器均可分別作為2個(gè)獨(dú)立的8位寄存器使用比如AX,我們可以把它分成兩個(gè)八位的寄存器,其中它的低八位,我們把它叫做AL寄存器,它的高八位,我們把它叫做AH寄存器。所以當(dāng)AX用來(lái)存儲(chǔ)一個(gè)16位的數(shù)據(jù)的時(shí)候,它是作為一個(gè)整體來(lái)看待的,但是如果把它分開,用來(lái)存放8位的數(shù)據(jù),那你就要注意數(shù)據(jù)是存放在了AL還是AH中,除此以外,我們?cè)趤?lái)看看這些寄存器的名字,其實(shí)他們的名字跟他們的功能是直接相關(guān)的AX16AH8AL8低八位高八位存儲(chǔ)時(shí)作為整體注意數(shù)據(jù)存放于AL或AH中寄存器的名字與其功能直接相關(guān)AX是累加器,常用在加、減乘除等各種運(yùn)算中AX16AH8AL8累加器
Accumulator用于各種運(yùn)算中BX是基址寄存器,它通??梢杂脕?lái)存放跟地址相關(guān)的信息AX16AH8AL8累加器
Accumulator基址寄存器BaseBXBHBL用于存放跟地址相關(guān)的信息CX是計(jì)數(shù)寄存器,CX可以用來(lái)計(jì)數(shù)AX16AH8AL8累加器
Accumulator基址寄存器BaseBXBHBL計(jì)數(shù)寄存器CountCXCHCL用于計(jì)數(shù)DX是數(shù)據(jù)寄存器,常用于存放數(shù)據(jù)AX16AH8AL8累加器
Accumulator基址寄存器BaseBXBHBL計(jì)數(shù)寄存器CountCXCHCL數(shù)據(jù)寄存器DataDXDHDL用于存放數(shù)據(jù)四個(gè)數(shù)據(jù)寄存器除了存放算術(shù)或邏輯單元的操作數(shù)以外,他們還有各自特有的用途,也就是在某一種場(chǎng)景下,我們只能使用這個(gè)寄存器,使用其他的寄存器會(huì)出錯(cuò)四個(gè)數(shù)據(jù)寄存器除存放算術(shù)或邏輯單元操作數(shù)外,還有各自用途比如說(shuō)AX可以存放算術(shù)或邏輯運(yùn)算的操作數(shù),它的一個(gè)特殊的應(yīng)用場(chǎng)景就是在輸入輸出指令中,也就是In或者out指令中,我們只能用AX跟外部接口進(jìn)行信息的傳輸,Bx它常用于存放訪問(wèn)內(nèi)存的基地址,Cx是在循環(huán)或者串操作的時(shí)候用做計(jì)數(shù)器,在使用寄存器間接尋址的輸入輸出指令中,我們使用dx來(lái)存放輸入輸出端口的端口號(hào)或者端口地址AXBXDXCX存放算術(shù)或邏輯運(yùn)算的操作數(shù)寄存器間接尋址的I/O指令中,用來(lái)存放輸入輸出端口的端口號(hào)或端口地址常用于存放訪問(wèn)內(nèi)存時(shí)的基地址在循環(huán)或串操作時(shí)用做計(jì)數(shù)器凡IN或OUT指令均必須用累加器與外部接口傳送信息再來(lái)看兩個(gè)指針寄存器,SP和BP指針寄存器SPBP首先來(lái)看SP,SP的英文是stackpointer,它的中文含義是堆棧指針寄存器,它主要用于在堆棧中做指針指針寄存器SP堆棧指針寄存器stackpointer用于在堆棧中做指針我們首先來(lái)看一下堆棧,堆棧是我們?cè)趦?nèi)存中開辟的一個(gè)特定區(qū)域●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)這個(gè)區(qū)域是用來(lái)臨時(shí)存放數(shù)據(jù)的,堆棧的一個(gè)特點(diǎn)就是他是先進(jìn)后出的結(jié)構(gòu)●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)用于臨時(shí)存放數(shù)據(jù)結(jié)構(gòu):先進(jìn)后出如果這個(gè)堆棧它是空的話,那么它的棧頂和它的棧底是重合的●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)棧頂棧底重合堆棧:空當(dāng)這個(gè)堆棧滿的時(shí)候,它的棧頂就會(huì)指向他這個(gè)堆棧段的首地址,至于堆棧的首地址,我們可以通過(guò)特定的方式來(lái)計(jì)算,關(guān)于這一點(diǎn)我們?cè)诮榻B段基址的再詳細(xì)說(shuō)明●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)棧頂棧底重合堆棧:空棧頂指向堆棧段的首地址堆棧:滿堆棧的首地址可通過(guò)特定方式計(jì)算現(xiàn)在我們知道SP是指向這個(gè)堆棧段的棧頂?shù)?,那么sp的值究竟是多少呢?●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)sp的值是多少?它的值其實(shí)就是它當(dāng)前指向的堆棧最上面的這個(gè)數(shù)據(jù),到堆棧的起始地址的距離,我們也跟這個(gè)距離叫偏移量,●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)偏移量舉個(gè)例子大家會(huì)比較好理解,我們把堆??闯墒且粋€(gè)裝衣服的整理箱,這個(gè)整理箱有個(gè)蓋子,這個(gè)蓋子指向的就是這個(gè)堆棧段的起始地址,●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)這個(gè)整理箱的底部就是這個(gè)堆棧段的棧底●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)當(dāng)我們往這個(gè)箱子里面放衣服的時(shí)候,最上面的這件衣服就是堆棧的棧頂?shù)奈恢?,SP就指向這個(gè)位置●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)基址指針寄存器,BP,base,pointer,它可以指向堆棧的任何一個(gè)單元BPbasepointer可指向堆棧的任何一個(gè)單元基址指針寄存器在這張圖中是1000h,而BP就要靈活得多,●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)它可以指向堆棧里面存放的任何一個(gè)數(shù)據(jù),比如它指向的這個(gè)數(shù)據(jù)的地址是23000h那么BP的值就是3000h●
●●●
●●●
●●●
●●●
●●●
●●SP1000HSS20000H1000HBP3000H堆棧段起始地址棧底棧頂21000H棧中某單元23000H堆棧RAM區(qū)指向堆棧里存放的任何一個(gè)數(shù)據(jù)最后看一下變址寄存器,變址寄存器包括SI和DI,變址寄存器SIDISI是sourceindex就是源索引變址寄存器SIDI源索引源索引sourceindexsourceindexDI是destinationindex就是目標(biāo)索引變址寄存器目標(biāo)索引destinationindexSIDI所以這兩個(gè)寄存器,他們當(dāng)然可以用于存儲(chǔ)數(shù)據(jù),但是它們更常用在串操作指令中。變址寄存器SIDI用于存儲(chǔ)數(shù)據(jù)用于串操作指令中通常,我們只能用SI指向源串,用DI指向目的串變址寄存器SIDI指向源串指向目的串然后我們就可以在源和目的之間傳輸信息,這是變址寄存器比較特殊的用法變址寄存器SIDI指向源串指向目的串在源和目的之間傳輸信息謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第九講8088CPU的專用寄存器14個(gè)16位的寄存器8088CPU的專用寄存器8088內(nèi)部有14個(gè),16位寄存器其中有六個(gè)專用寄存器我們還可以將這六個(gè)專用寄存器細(xì)分成兩個(gè)控制寄存器和四個(gè)段寄存器這里的控制寄存器包括指令指針寄存器和狀態(tài)標(biāo)志寄存器四個(gè)段寄存器分別是代碼段,數(shù)據(jù)段,堆棧段和附加段寄存器通用寄存器專用寄存器AHALBHBLCHCLDHDLAXBXCXDX堆棧指針寄存器基址指針寄存器SPBPSIDI源變址寄存器目的變址寄存器IP指令指針FLAGS狀態(tài)標(biāo)志控制寄存器CSDSSSES代碼段寄存器數(shù)據(jù)段寄存器堆棧段寄存器附加段寄存器段寄存器代碼段寄存器數(shù)據(jù)段寄存器堆棧段寄存器附加段寄存器指令指針狀態(tài)標(biāo)志指針寄存器變址寄存器數(shù)據(jù)寄存器代碼段寄存器CodeSegment首先來(lái)看一下段寄存器,段寄存器包括代碼段,數(shù)據(jù)段,堆棧段和附加段。段寄存器數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegment他們的簡(jiǎn)寫分別是CS,ds、ss和es。CS段寄存器代碼段寄存器CodeSegment數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegmentDSSSES這些英文簡(jiǎn)寫同學(xué)們要記清楚,因?yàn)樵诤罄m(xù)提到段基址的時(shí)候都是這樣的寫法寫的CS段寄存器代碼段寄存器CodeSegment數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegmentDSSSES縮寫與段基址的寫法一致段寄存器是用來(lái)干嘛的呢?它們是用來(lái)存放段基址的,段寄存器用于存放段基址什么叫段基址?大家可以把它理解成一個(gè)內(nèi)存空間段的起始地址段寄存器用于存放段基址內(nèi)存空間段的起始地址那么顧名思義,我們知道內(nèi)存中至少有四種不同的段,分別是代碼段,數(shù)據(jù)段,堆棧段和附加段。代碼段寄存器CodeSegment段寄存器數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegment代碼段寄存器數(shù)據(jù)段寄存器堆棧段寄存器附加段寄存器再顧名思義一下,代碼段應(yīng)該是用來(lái)存放代碼的,數(shù)據(jù)段應(yīng)該是用來(lái)存放數(shù)據(jù)的,堆棧段是用來(lái)存放堆棧的。段寄存器存放代碼代碼段寄存器CodeSegment數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegment存放數(shù)據(jù)存放堆棧CS那么CS存放的就是代碼段的基地址,它告訴我們了代碼段的起始地址在哪里,因此CS,DS,SS和ES是專用寄存器段寄存器存放代碼代碼段寄存器CodeSegmentCS存放代碼段的基地址代碼段的起始地址在哪里數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegment存放數(shù)據(jù)存放堆棧DSSSES那么CS存放的就是代碼段的基地址,它告訴我們了代碼段的起始地址在哪里,因此CS,DS,SS和ES是專用寄存器段寄存器CS數(shù)據(jù)段寄存器DateSegment堆棧段寄存器StackSegment附加段寄存器ExtraSegment存放數(shù)據(jù)存放堆棧DSSSES專用寄存器再來(lái)看一下控制寄存器,首先來(lái)看一下指令指針寄存器IP,IP我們?cè)谇懊嬉呀?jīng)提到過(guò)多次了,它是用來(lái)存放待取的下一條指令的第一個(gè)操作碼的偏移量控制寄存器指令指針寄存器InstructionPointerIP存放待取的下一條指令第一個(gè)操作碼的偏移量這句話不太好理解,老師把它翻譯一下,IP其實(shí)就是指向下一條指令的地址。下一條指令一定是存放在代碼段里的,那么IP告訴我們從代碼段的段基址開始要走多少個(gè)存儲(chǔ)空間的距離才能到達(dá)下一條指令,這個(gè)距離也叫偏移量IP指向下一條指令的地址,下一條指令一定存放在代碼段里從代碼段的段基址開始要走多少個(gè)存儲(chǔ)空間的距離到達(dá)下一條指令(這個(gè)距離也叫偏移量)那我們?cè)谌≈噶畹臅r(shí)候,既要知道CS的值,又要知道IP的值,我們才能通過(guò)CS和IP計(jì)算出來(lái)下一條指令的準(zhǔn)確地址,然后去那個(gè)位置把它取出來(lái),取指令時(shí)CSIP計(jì)算出下一條指令的準(zhǔn)確地址去那個(gè)位置把它取出來(lái)我們用戶程序是不能訪問(wèn)IP這個(gè)值的,IP的值會(huì)基于程序的運(yùn)行進(jìn)行自動(dòng)修改。我們?cè)谥v解指令的時(shí)候,請(qǐng)同學(xué)們注意IP值是如何自動(dòng)修改的用戶程序不得直接訪問(wèn)IPIp的值會(huì)基于程序的運(yùn)行進(jìn)行自動(dòng)修改我們?cè)谥v解指令的時(shí)候,請(qǐng)同學(xué)們注意IP值是如何自動(dòng)修改的注意IP值是如何自動(dòng)修改還有一個(gè)控制寄存器是標(biāo)志寄存器flagregister,也有人把它寫成FLAG,這里我們把它簡(jiǎn)寫成FR,控制寄存器標(biāo)志寄存器FlagRegisterFLAGFR它不是我們通常意義下的寄存器,不是通常意義下的寄存器我們通常意義下的寄存器就是把這個(gè)寄存器看成是一個(gè)16位的存儲(chǔ)空間,用它來(lái)存儲(chǔ)數(shù)據(jù)的,但是FR它比較特殊的是,它是按位,來(lái)存儲(chǔ)的,也就是說(shuō),寄存器把這個(gè)寄存器看成16位的存儲(chǔ)空間,用之存儲(chǔ)數(shù)據(jù)FR比較特殊,是按位存儲(chǔ)它里面其實(shí)定義了16個(gè)位,也叫標(biāo)志位,這16個(gè)標(biāo)志位之間是沒有相互關(guān)系的,每個(gè)位都有自己特定的含義,這是標(biāo)志寄存器它比較特殊的一點(diǎn),F(xiàn)R定義16個(gè)位標(biāo)志位標(biāo)志位之間無(wú)相互關(guān)系每個(gè)位有自己特定含義具體來(lái)說(shuō),在16個(gè)位中,英特爾只定義了其中的九位,其他的位它并沒有公開告訴我們?cè)趺词褂茫@九位里邊有六位狀態(tài)位和三位控制位,它們反映了我們剛剛完成的算數(shù)運(yùn)算或者邏輯運(yùn)算的結(jié)果的狀態(tài),英特爾97這九位里邊有六位狀態(tài)位和三位控制位,它們反映了我們剛剛完成的算數(shù)運(yùn)算或者邏輯運(yùn)算的結(jié)果的狀態(tài),英特爾9六位狀態(tài)位三位控制位反映算數(shù)運(yùn)算或邏輯運(yùn)算結(jié)果的狀態(tài)我們?cè)谙乱还?jié)中的會(huì)給大家詳細(xì)的介紹這個(gè)標(biāo)志寄存器里的各位標(biāo)志寄存器里的各位標(biāo)志寄存器里的各位謝謝觀看!微機(jī)原理及應(yīng)用第三章認(rèn)識(shí)微處理器第十講8088CPU的標(biāo)志寄存器下面我們來(lái)學(xué)習(xí)8088CPU的標(biāo)志寄存器8088CPU的標(biāo)志寄存器我們?cè)谇懊嬉呀?jīng)提到標(biāo)志寄存器中有九個(gè)位已經(jīng)定義了,下面我們來(lái)學(xué)習(xí)一下各個(gè)位的含義…OFDFIFTFSFZFAFPFCF151143210控制位1-溢出Overflow1-減量Direction1-允許Interrupt1-單步Trap1-負(fù)Sign1-零Zero1-有AuxiliaryCarry/Borrow1-偶Parity1-有Carry/Borrow首先來(lái)看第一個(gè)cf標(biāo)志位cf標(biāo)志位是進(jìn)位標(biāo)志位它表示我們剛剛計(jì)算的結(jié)果是否有進(jìn)位或者借位產(chǎn)生如果有進(jìn)位或借位,CF就為1,如果沒有,cf就為0在執(zhí)行循環(huán)移位指令的時(shí)候,也會(huì)影響到CF的狀態(tài),請(qǐng)大家注意…1531控制位11OF1-溢出OverflowDF1-減量DirectionIF1-允許InterruptTF1-單步TrapSF1-負(fù)SignZF1-零Zero4AF1-有AuxiliaryCarry/Borrow2PF1-偶Parity0CF1-有Carry/Borrow首先來(lái)看第一個(gè)cf標(biāo)志位,cf標(biāo)志位是進(jìn)位標(biāo)志位,它表示我們剛剛計(jì)算的結(jié)果是否有進(jìn)位或者借位產(chǎn)生,如果有進(jìn)位或借位,CF就為1,如果沒有,cf就為0,在執(zhí)行循環(huán)移位指令的時(shí)候,也會(huì)影響到CF的狀態(tài),請(qǐng)大家注意…1531控制位11OF1-溢出OverflowDF1-減量DirectionIF1-允許InterruptTF1-單步TrapSF1-負(fù)SignZF1-零Zero4AF1-有AuxiliaryCarry/Borrow2PF1-偶Parity0CF1-有Car
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流服務(wù)師創(chuàng)新思維強(qiáng)化考核試卷含答案
- 2025年三明學(xué)院馬克思主義基本原理概論期末考試模擬題附答案
- 口腔修復(fù)體制作師安全生產(chǎn)基礎(chǔ)知識(shí)能力考核試卷含答案
- 搪瓷瓷釉制作工QC管理能力考核試卷含答案
- 燃?xì)饩咧圃旃徍蟾?jìng)賽考核試卷含答案
- 纖維板原料制備工安全教育競(jìng)賽考核試卷含答案
- 軋管工崗前創(chuàng)新應(yīng)用考核試卷含答案
- 2024年湖北大學(xué)輔導(dǎo)員招聘?jìng)淇碱}庫(kù)附答案
- 2024年貴州輕工職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試筆試題庫(kù)附答案
- 2024年萊蕪市特崗教師招聘考試真題題庫(kù)附答案
- 2025年金蝶AI蒼穹平臺(tái)新一代企業(yè)級(jí)AI平臺(tái)報(bào)告-
- 2025中國(guó)機(jī)械工業(yè)集團(tuán)有限公司(國(guó)機(jī)集團(tuán))社會(huì)招聘19人筆試參考題庫(kù)附答案
- 淺析煤礦巷道快速掘進(jìn)技術(shù)
- 成人留置導(dǎo)尿標(biāo)準(zhǔn)化護(hù)理與并發(fā)癥防控指南
- 2025年勞動(dòng)關(guān)系協(xié)調(diào)師綜合評(píng)審試卷及答案
- CIM城市信息模型技術(shù)創(chuàng)新中心建設(shè)實(shí)施方案
- 班級(jí)互動(dòng)小游戲-課件共30張課件-小學(xué)生主題班會(huì)版
- 2025至2030全球及中國(guó)智慧機(jī)場(chǎng)建設(shè)行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025年二級(jí)造價(jià)師《土建工程實(shí)務(wù)》真題卷(附解析)
- 智慧農(nóng)業(yè)管理中的信息安全對(duì)策
- 2025年河南省康養(yǎng)行業(yè)職業(yè)技能競(jìng)賽健康管理師賽項(xiàng)技術(shù)工作文件
評(píng)論
0/150
提交評(píng)論