《匯編語言知識(shí)講解》PPT課件.ppt
《《匯編語言知識(shí)講解》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《匯編語言知識(shí)講解》PPT課件.ppt(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
復(fù)習(xí)提問,什么是機(jī)器數(shù),有哪三種機(jī)器數(shù)?(11110011)補(bǔ)的真值是多少?,本章要點(diǎn),了解80 x86計(jì)算機(jī)系統(tǒng)的基本結(jié)構(gòu):CPU、內(nèi)存、I/O與系統(tǒng)總線了解80 x86CPU的3種工作模式掌握80 x86CPU的寄存器組掌握實(shí)模式下的內(nèi)存分段與編程要點(diǎn)熟練掌握4個(gè)常用標(biāo)志位(CF、OF、SF和ZF)的含義及判斷方法,第2章80 x86計(jì)算機(jī)系統(tǒng)組織,2.180 x86計(jì)算機(jī)的基本結(jié)構(gòu),80 x86計(jì)算機(jī)的組成:CPU內(nèi)存I/O子系統(tǒng)各部分以系統(tǒng)總線相連,主要由算術(shù)邏輯部件,控制部件和寄存器組構(gòu)成。任務(wù):執(zhí)行內(nèi)存中的指令序列。CPU的作用:執(zhí)行算術(shù)與邏輯運(yùn)算??刂浦噶畹膱?zhí)行。通常,將Intel公司生產(chǎn)的8086/8088、80286、80386、80486、Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4及其兼容的CPU,統(tǒng)稱為80 x86CPU或x86CPU,將基于這些CPU的計(jì)算機(jī),稱為80 x86計(jì)算機(jī)或x86計(jì)算機(jī)。,2.1.1CPU,圖2-18086的功能結(jié)構(gòu),BIU,EU,8086CPU從功能上分成兩大部分:總線接口單元BIU和執(zhí)行單元EU。,BIU(總線接口部件)負(fù)責(zé)與存儲(chǔ)器接口,即8086CPU與存儲(chǔ)器之間的信息傳送,都是由BIU進(jìn)行的。BIU負(fù)責(zé)從內(nèi)存的指定部分取出指令和操作數(shù),傳送給EU部分去執(zhí)行。EU(指令執(zhí)行部件)部分負(fù)責(zé)指令的執(zhí)行,取指部分與執(zhí)行指令部分是分開的,于是在一條指令的執(zhí)行過程中,就可以取出下一條(或多條)指令,在指令流隊(duì)列中排隊(duì)。在一條指令執(zhí)行完以后就可以立即執(zhí)行下一條指令,減少了CPU為取指令而等待的時(shí)間,提高了CPU的利用率和執(zhí)行速度,降低了與之相配的存儲(chǔ)器對(duì)采樣速度的要求。,圖2-28086的執(zhí)行方式,BIU和EU分開,取指和執(zhí)行可以重疊。,圖2-3一般8位機(jī)的執(zhí)行方式,總線是用來系統(tǒng)各部件的一組公共導(dǎo)線,是部件之間進(jìn)行數(shù)據(jù)交換的通道。(1)數(shù)據(jù)總線DB數(shù)據(jù)總線是用來傳遞數(shù)據(jù)的,定義了CPU在每個(gè)內(nèi)存周期所能存取數(shù)據(jù)的位數(shù)。80 x86系列CPU的數(shù)據(jù)總線為8位、16位、32位或64位。這就是“為什么通常的數(shù)據(jù)存取是以8位、16位、32位或64位進(jìn)行的”。數(shù)據(jù)總線越寬,處理能力越強(qiáng)。具有N位數(shù)據(jù)總線并不意味著CPU只能處理N位數(shù)據(jù)。,2.1.2.系統(tǒng)總線,(2)地址總線AB地址總線用來指出數(shù)據(jù)的地址(內(nèi)存或I/O)。地址總線的位數(shù)決定了最大可編址的內(nèi)存與I/O空間。對(duì)于N位地址總線,CPU可以提供2N個(gè)不同地址:0~2N-1。如8086的地址總線為20位,可尋址的最大內(nèi)在空間是220MB,即1MB地址總線由內(nèi)存與I/O子系統(tǒng)共享使用(I/O只用低16位)。,(3)控制總線控制CPU與內(nèi)存和I/O設(shè)備之間的數(shù)據(jù)傳送方式(如傳送方向)。,內(nèi)存是存放指令和數(shù)據(jù)的部件,由若干內(nèi)存單元構(gòu)成。內(nèi)存單元的2個(gè)要素:地址(編號(hào))與值(內(nèi)容)。為了正確區(qū)分不同的內(nèi)存單元,給每個(gè)單元分配一個(gè)存儲(chǔ)器地址,可存放1個(gè)字節(jié)。地址從0開始編號(hào),順序遞增1。機(jī)器中的地址是用無符號(hào)二進(jìn)制數(shù)表示,可簡(jiǎn)寫為十六進(jìn)制數(shù)形式。一個(gè)存儲(chǔ)單元中存放的信息稱為該單元的值(內(nèi)容)。例如,2號(hào)單元中存放了一個(gè)數(shù)字8,則表示為:(2)=8。,2.1.3內(nèi)存,對(duì)內(nèi)存單元可以讀/寫操作。對(duì)某個(gè)內(nèi)存單元進(jìn)行讀操作后,該單元的值保持不變;對(duì)其進(jìn)行寫操作后,原來的值就被新的數(shù)據(jù)所覆蓋。對(duì)于字、雙字、四字?jǐn)?shù)據(jù)類型,由于它們每個(gè)數(shù)據(jù)都要占用連續(xù)多個(gè)單元,訪問時(shí)只需給出最低單元的地址號(hào)即可,然后依次存取后續(xù)字節(jié)。習(xí)慣上,對(duì)于字、雙字、四字?jǐn)?shù)據(jù)類型,其低地址中存放低位字節(jié)數(shù)據(jù),高地址中存放高位字節(jié)數(shù)據(jù),這就是所謂的數(shù)據(jù)“逆序存放”。字的地址由其低地址來表示。同一地址可以看作是字節(jié)、字或雙字單元的地址,取決于具體的使用方式。,例:內(nèi)存現(xiàn)有以下數(shù)據(jù):地址:012345數(shù)據(jù):12H34H45H67H89H0AH則對(duì)于不同的數(shù)據(jù)類型,取到1號(hào)單元的數(shù)據(jù)是:(1)字節(jié)=34H(1)字=4534H(1)雙字=89674534H要遵守“數(shù)據(jù)對(duì)齊規(guī)則”:字存放在偶地址,雙字存放在4倍地址。,012345,每個(gè)I/O設(shè)備必須通過專門的I/O接口電路與主機(jī)(CPU和內(nèi)存)相連。1.I/O接口:由一組寄存器組成,分為以下三種類型:(1)數(shù)據(jù)寄存器(2)狀態(tài)寄存器(3)命令寄存器2.I/O端口:將各個(gè)I/O接口中的所有寄存器統(tǒng)一編號(hào),就形成了I/O地址,也稱為80 x86的I/O端口號(hào)。大多數(shù)設(shè)備使用多個(gè)I/O端口(數(shù)據(jù)端口、狀態(tài)端口等)。CPU是通過端口與I/O設(shè)備通信的。80X86系統(tǒng)有兩個(gè)獨(dú)立的地址空間:內(nèi)存空間和I/O空間。,2.1.4I/O子系統(tǒng),2.280 x86CPU的寄存器組,8位通用寄存器8個(gè):AL、AH、BL、BH、CL、CH、DL、DH。16位通用寄存器8個(gè):AX、BX、CX、DX、SI、DI、BP、SP。32位通用寄存器8個(gè):EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。AL與AH、BL與BH、CL與CH、DL與DH分別對(duì)應(yīng)于AX、BX、CX和DX的低8位與高8位。AX、BX、CX、DX、SI、DI、BP和SP分別對(duì)應(yīng)于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP的低16位。,1.通用寄存器,寄存器分為四類:通用寄存器、段寄存器、專用寄存器、其他寄存器。,圖2-98086的寄存器結(jié)構(gòu),記!,,,,,2.段寄存器段寄存器有6個(gè),每個(gè)16位,其中CS、DS、SS分別作為指令代碼段、數(shù)據(jù)段和堆棧段寄存器,ES、FS和GS作為附加數(shù)據(jù)段寄存器。,指令指針寄存器:EIP(32位)、IP(16位)。IP是EIP的低16位。用來存放當(dāng)前代碼段中下一條要執(zhí)行指令的偏移量(或稱偏移地址)。標(biāo)志寄存器:EFLAGS(32位)、FLAGS(16位)。FLAGS是EFLAGS的低16位。用來反映指令執(zhí)行結(jié)果或控制指令的執(zhí)行方式。,3.專用寄存器,4.其他寄存器(略),2.380 x86CPU的工作模式,(1)實(shí)模式與8086兼容的工作模式,只有低20位地址線起作用,僅能尋址第一個(gè)1MB的內(nèi)存空間,該空間內(nèi)的地址稱為實(shí)地址。MSDOS運(yùn)行在實(shí)模式下。內(nèi)存采用分段管理機(jī)制。(一個(gè)段64KB)(2)保護(hù)模式32位80 x86CPU的主要工作模式,提供對(duì)程序和數(shù)據(jù)進(jìn)行安全檢查的保護(hù)機(jī)制。全部地址線都能尋址。內(nèi)存采用分段和分頁(yè)管理機(jī)制。但分段尋址與實(shí)模式不同。(一個(gè)段4GB)(3)虛擬8086模式虛擬生成多個(gè)8086處理器,以便運(yùn)行DOS程序。分段尋址方式與實(shí)模式相同,分頁(yè)尋址與保護(hù)模式相同。,3種工作模式:,(1)內(nèi)存分段采用分段內(nèi)存管理機(jī)制,主要包括下列幾種類型的段:代碼段:用來存放程序的指令序列。數(shù)據(jù)段:用來存放程序的數(shù)據(jù)。堆棧段:作為堆棧使用的內(nèi)存區(qū)域,用來存放過程返回地址、過程參數(shù)等。一個(gè)程序可以有多個(gè)代碼段、多個(gè)數(shù)據(jù)段甚至多個(gè)堆棧段。采用分段管理后,一個(gè)內(nèi)存單元地址要用段基地址和偏移量所形成的邏輯地址來描述,表示為段基址:偏移量,2.3.1實(shí)模式,8086內(nèi)部的ALU能進(jìn)行16位運(yùn)算,有關(guān)地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086對(duì)地址的運(yùn)算也只能是16位。對(duì)于8086,各種尋址方式,尋找操作數(shù)的范圍最多只能是64KB。所以,整個(gè)1MB存儲(chǔ)器以64KB為范圍分為若干段。在尋址一個(gè)具體物理單元時(shí),必須要由一個(gè)基地址再加上由SP、IP、BP、SI或DI等可由CPU處理的16位偏移量來形成實(shí)際的20位物理地址?;刂酚?086中的段寄存器,即CS、SS、DS以及ES中的一個(gè)來形成的。在形成20位物理地址時(shí),段寄存器中的16位數(shù)會(huì)自動(dòng)左移4位,然后與16位偏移量相加。,段地址:偏移量,1200H:0000H,1200H:347CH,1200H:0FFFFH,,64KB,圖2-208086實(shí)地址模式物理地址的形成,邏輯地址=段基址:偏移地址物理地址=段基址10H+偏移地址,20位,0000,段寄存器指示的段基址16位,每次在需要產(chǎn)生一個(gè)20位物理地址的時(shí),一個(gè)段寄存器會(huì)自動(dòng)被選擇,且能自動(dòng)左移4位再與一個(gè)16位的地址偏移量相加,以產(chǎn)生所需要的20位物理地址。段寄存器與偏移量的搭配:取指時(shí):物理地址=CS10H+IP堆棧操作時(shí):物理地址=SS10H+SP。取操作數(shù)時(shí):物理地址=DS10H+16位偏移量或物理地址=ES10H+16位偏移量,在不改變段寄存器值的情況下,尋址的最大范圍是64KB,所以,若有一個(gè)任務(wù),它的程序長(zhǎng)度、堆棧長(zhǎng)度以及數(shù)據(jù)區(qū)長(zhǎng)度都不超過64KB,則可在程序開始時(shí),分別給DS、SS、ES置值,然后在程序中就可以不再考慮這些段寄存器,程序就可以在各自的區(qū)域中正常地進(jìn)行工作,若某一個(gè)任務(wù)所需的總的存儲(chǔ)器長(zhǎng)度(包括程序長(zhǎng)度、堆棧長(zhǎng)度和數(shù)據(jù)長(zhǎng)度等)不超過64KB,則可在程序開始時(shí)使CS、SS、DS相等,程序也能正常工作。,圖2-218086的存儲(chǔ)器結(jié)構(gòu),實(shí)地址模式,存儲(chǔ)器采用分段管理后其物理地址的計(jì)算方法為10H段基址+偏移量(其中H表示是十六進(jìn)制數(shù))段基址和偏移量一般用十六進(jìn)制數(shù)表示,簡(jiǎn)便的計(jì)算方法是在段基址的最低位補(bǔ)以0H,再加上偏移量。,例2-2某內(nèi)存單元的地址用十六進(jìn)制數(shù)表示為1234H∶5678H,其物理地址是多少?12340(10H段基址)+5678(偏移量)179B8(物理地址)則其物理地址為179B8H,如圖2-29所示。,,圖2-29物理地址的形成,實(shí)地址模式,:,程序執(zhí)行時(shí),其當(dāng)前段的段基址存放在相應(yīng)的段寄存器中,偏移量視訪問內(nèi)存的操作類型決定,可能放在寄存器中或通過操作數(shù)尋址方式得到。例2-3若(CS)=1234H,(DS)=2000H,(IP)=0010H,(SS)=4000H,則下一條要執(zhí)行指令的地址是多少?10H(CS)+(IP)=12340H+0010H=12350H所以,下一條要執(zhí)行指令的地址是12350H??梢杂貌煌亩位罚浩屏勘硎就粋€(gè)物理地址。例如可以用1000∶1F00、11F0∶0000、1100∶0F00和1080∶1700表示同一個(gè)物理地址,其物理地址都是11F00H。因這幾個(gè)邏輯地址的段基址不同,所以這個(gè)單元屬于不同的段(段發(fā)了部分重疊現(xiàn)象)。如下圖:,,,,,,,,,,,段164KB,段264KB,,此單元就會(huì)兩個(gè)邏輯地址:1000H:1F00H1100H:0F00H但物理地址是唯一的,為:11F00H,段1起始地址:10000H,段2起始地址:11000H,…...,……,……,…..,狀態(tài)標(biāo)志通常由CPU根據(jù)指令執(zhí)行結(jié)果自動(dòng)設(shè)置,以反映指令執(zhí)行結(jié)果的特征。80 x86CPU將狀態(tài)標(biāo)志作為條件判斷的依據(jù),以控制程序的執(zhí)行流程。最常用的狀態(tài)標(biāo)志是CF、OF、SF和ZF,應(yīng)熟練掌握。,2.4.1狀態(tài)標(biāo)志,2.4標(biāo)志位,標(biāo)志寄存器EFLAGS中有若干標(biāo)志位,用來表示CPU當(dāng)前的操作方式和狀態(tài)信息,與普通應(yīng)用程序有關(guān)的主要是FLAGS中的9個(gè)標(biāo)志位,包括6個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志。,各個(gè)標(biāo)志位的功能分述如下:(1)輔助進(jìn)位標(biāo)志AF(AuxitiaryCarryFlag)。在字節(jié)操作時(shí),由低半字節(jié)(一個(gè)字節(jié)的低4位)向高半字節(jié)(一個(gè)字節(jié)的高4位)進(jìn)位或借位;在字操作時(shí),低位字節(jié)向高位字節(jié)有進(jìn)位或借位,則AF=1,否則為0。這個(gè)標(biāo)志用于十進(jìn)制算術(shù)運(yùn)算指令中。(2)進(jìn)位標(biāo)志CF(CarryFlag)。當(dāng)結(jié)果的最高位(字節(jié)操作時(shí)的D7或字操作時(shí)的D15)產(chǎn)生一個(gè)進(jìn)位或借位,則CF=1,否則CF=0。這個(gè)標(biāo)志主要用于多字節(jié)數(shù)的加、減法運(yùn)算。移位和循環(huán)移位指令也能夠把存儲(chǔ)器或寄存器中的最高位(左移時(shí))或最低位(右移時(shí))放入標(biāo)志CF中。(3)溢出標(biāo)志OF(OverflowFlag)。在算術(shù)運(yùn)算中,帶符號(hào)數(shù)的運(yùn)算結(jié)果超出了8位或16位(帶符號(hào)數(shù)能表達(dá)的范圍),即在字節(jié)運(yùn)算時(shí)結(jié)果大于+127或結(jié)果小于-128,在字運(yùn)算時(shí)結(jié)果大于32767或結(jié)果小于-32768,OF=1,溢出和進(jìn)位是兩個(gè)不同性質(zhì)的標(biāo)志,千萬不能混淆了。例如,在字節(jié)運(yùn)算中MOVAL,64HADDAL,64H即01100100+0110010011001000D7位向前無進(jìn)位,故運(yùn)算后CF=0;但運(yùn)算結(jié)果超過了+127,此時(shí),溢出標(biāo)志OF=1。又例如,在字節(jié)運(yùn)算中MOVAL,0ABHADDAL,0FFH即10101011(-85)+11111111(-1)110101010D7位向前有進(jìn)位,故運(yùn)算后CF=1;但運(yùn)算的結(jié)果又不小于-128,此時(shí),溢出標(biāo)志OF=0。,,,在字運(yùn)算中MOVAX,0064HADDAX,0064H即0000000001100100+00000000011001000000000011001000D15位未產(chǎn)生進(jìn)位,故CF=0;運(yùn)算結(jié)果未超過+32767,故OF=0。,,又例如:MOVAX,0AB00HADDAX,0FFFFH即:1010101100000000+111111111111111111010101011111111D15位產(chǎn)生進(jìn)位,故CF=1,但運(yùn)算結(jié)果不小于-32768,故OF=0。,,(4)符號(hào)標(biāo)志SF(SignFlag)。它的值與運(yùn)算結(jié)果的最高位相同。即結(jié)果的最高位(字節(jié)操作時(shí)為D7,字操作時(shí)為D15)為1,則SF=1;否則SF=0。由于在80X86中符號(hào)數(shù)是用補(bǔ)碼表示的,所以SF表示了結(jié)果的符號(hào),SF=0為正,SF=1為負(fù)。(5)奇偶標(biāo)志PF(ParityF1ag)。若操作結(jié)果中“1”的個(gè)數(shù)為偶數(shù),則PF=1,否則PF=0。這個(gè)標(biāo)志可用于檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯(cuò)誤。(6)零標(biāo)志ZF(ZeroFlag)。若運(yùn)算的結(jié)果為0,則ZF=1,否則ZF=0。,(1)方向標(biāo)志DF(DirectionFlag)。若用指令置DF=1,則引起串操作指令為自動(dòng)減量指令,也就是從高地址到低地址處理字符串;若使DF=0,則串操作指令就為自動(dòng)增量指令,也就是從低地址到高地址處理字符串。(2)中斷允許標(biāo)志IF(Interrupt-enableFlag)。若指令中置IF=1,則允許CPU去接收外部的可屏蔽中斷請(qǐng)求;若使IF=0,則屏蔽上述的中斷請(qǐng)求,對(duì)內(nèi)部產(chǎn)生的中斷不起作用。(3)追蹤標(biāo)志TF(TrapFlag)。置TF標(biāo)志,使處理進(jìn)入單步方式,以便于調(diào)試。在這個(gè)方式中,CPU在每條指令執(zhí)行以后,產(chǎn)生一個(gè)內(nèi)部中斷,允許程序在每條指令執(zhí)行以后進(jìn)行檢查。,2.4.3控制標(biāo)志,小結(jié),80 x86計(jì)算機(jī)由CPU、內(nèi)存和I/O子系統(tǒng)三部分組成,各部分之間由系統(tǒng)總線相連。數(shù)據(jù)總線決定了CPU每次存取數(shù)據(jù)的最大寬度(位數(shù));地址總線決定了最大可編址空間;控制總線控制CPU與內(nèi)存和I/O設(shè)備之間的數(shù)據(jù)傳送方式。80 x86系統(tǒng)的I/O地址為16位,可尋址65536個(gè)不同的I/O端口。80 x86程序可以存取的最小數(shù)據(jù)單位是字節(jié)。例如,若要讀取的位數(shù)不足8位,則只能先讀出一個(gè)完整字節(jié),再屏蔽掉其它位。字的存儲(chǔ)采取“低字節(jié)在低地址,高字節(jié)在高地址,字的地址由低地址表示”的小端方式,雙字也類似。,要正確理解內(nèi)存單元的地址和值,地址表示位置,值是相應(yīng)位置處的內(nèi)容。同一地址既可以看作字節(jié)單元地址,也可以看作字甚至雙字單元地址,取決于具體的使用方式。80 x86CPU具有8位、16位和32位寄存器,主要包括:8位通用寄存器8個(gè):AH、AL、BH、BL、CH、CL、DH、DL。16位通用寄存器8個(gè):AX、BX、CX、DX、SI、DI、BP、SP。32位通用寄存器8個(gè):EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。16位段寄存器6個(gè):CS、DS、SS、ES、FS、GS。32位/16位指令指針1個(gè):EIP/IP。32位/16位標(biāo)志寄存器1個(gè):EFLAGS/FLAGS。其中,32位寄存器是80386CPU開始引入的。,80 x86CPU有3種工作模式:實(shí)模式、保護(hù)模式和虛擬8086模式。在實(shí)模式下,段地址和偏移地址均為16位。20位物理地址由16位段地址左移4位加16位偏移地址得到,只能尋址1MB的內(nèi)存空間,且每段≤64KB。在實(shí)模式下,32位CPU下的程序可以使用32位寄存器和32位操作數(shù),但采用32位寄存器表示偏移地址時(shí),只使用低16位,高16位為0。CS:IP總是指向下一條要執(zhí)行的指令,EIP的高16位為0。SS:SP指向堆棧段的棧頂,ESP的高16位為0。狀態(tài)標(biāo)志是CPU進(jìn)行條件判斷和控制程序執(zhí)行流程的依據(jù),最常用的是4個(gè):CF、OF、SF和ZF。其中,CF表示無符號(hào)溢出,OF表示帶符號(hào)溢出。,作業(yè):習(xí)題(P27頁(yè))2-3,2-7,2-8,2-9補(bǔ)充:1.寫出下列邏輯地址對(duì)應(yīng)的物理地址:(1)2314H:0035H(2)1FD0H:000AH2.若代碼段寄存器CS中內(nèi)容為0C018H,則該代碼段的第一個(gè)存儲(chǔ)單元和最后一個(gè)存儲(chǔ)單元的物理地址是多少?,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 匯編語言知識(shí)講解 匯編語言 知識(shí) 講解 PPT 課件
鏈接地址:http://www.hcyjhs8.com/p-11509721.html