版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1匯編語言基礎知識匯編語言是直接在硬件之上工作的編程語言,首先要了解硬件系統(tǒng)的結構,才能有效地應用匯編語言對其編程,因此,本章對硬件系統(tǒng)結構的問題進行部分探討,首先介紹了計算機的基本結構、 Intel 公司微處理器的發(fā)展、計算機的語言以及匯編語言的特點,在此基礎上重點介紹寄存器、內存組織等匯編語言所涉及到的基本知識。1.1 微型計算機概述微型計算機由中央處理器( Central Processing Unit ,CPU)、存儲器、輸入輸出接口電路和總線構成。 CPU如同微型計算機的心臟,它的性能決定了整個微型計算機的各項關鍵指標。存儲器包括隨機存儲器( Random Access Memory
2、,RAM)和只讀存儲器(Read Only Memory,ROM)。輸入輸出接口電路用來連接外部設備和微型計算機??偩€為 CPU和其他部件之間提供數(shù)據(jù)、 地址和控制信息的傳輸通道。 如圖 1.1 所示為微型計算機的基本結構。地址總線輸入輸出 外部 存儲器 設備中央處理器 接口電路CPU數(shù) 據(jù) 總 線控 制 總 線圖 1.1 微型計算機基本結構特別要提到的是微型計算機的總線結構,它使系統(tǒng)中各功能部件之間的相互關系變?yōu)楦鱾€部件面向總線的單一關系。 一個部件只要符合總線結構標準, 就可以連接到采用這種總線結構的系統(tǒng)中,使系統(tǒng)功能得到擴展。數(shù)據(jù)總線用來在 CPU與內存或其他部件之間進行數(shù)據(jù)傳送。它是雙
3、向的,數(shù)據(jù)總線的位寬決定了 CPU和外界的數(shù)據(jù)傳送速度, 8 位數(shù)據(jù)總線一次可傳送一個 8位二進制數(shù)據(jù)(即一個字節(jié)),16 位數(shù)據(jù)總線一次可傳送兩個字節(jié)。在微型計算機中,數(shù)據(jù)的含義是廣義的,數(shù)據(jù)總線上傳送的不一定是真正的數(shù)據(jù),而可能是指令代碼、狀態(tài)量或控制量。地址總線專門用來傳送地址信息,它是單向的,地址總線的位數(shù)決定了 CPU可以直接尋址的內存范圍。如 CPU的地址總線的寬度為 N,則 CPU最多可以尋找 2N個內存單元。12控制總線用來傳輸控制信號,其中包括 CPU送往存儲器和輸入輸出接口電路的控制信號,如讀信號、寫信號和中斷響應信號等;也包括其他部件送到 CPU的信號,如時鐘信號、中斷請
4、求信號和準備就緒信號等。1.2 Intel 公司微處理器簡介自20 世紀 70 年代開始出現(xiàn)微型計算機以來, CPU經(jīng)歷了飛速的發(fā)展。1971 年,Intel設計成功了第一片 4 位微處理器 Intel 4004 ;隨之又設計生產了 8 位微處理器 8008;1973年推出了 8080;1974 年基于 8080的個人計算機( Personal Computer,PC)問世,Microsoft 公司的創(chuàng)始人 Bill Gates 為PC開發(fā)了 BASIC語言解釋程序; 1977 年 Intel推出了 8085。自此之后, Intel 又陸續(xù)推出了 8086、80386、Pentium 等 80
5、x86 系列微處理器。各種微處理器的主要區(qū)別在于處理速度、寄存器位數(shù)、數(shù)據(jù)總線寬度和地址總線寬度。 下面簡要介紹不同時期 Intel 公司制造的幾種主要型號的微處理器, 這些微處理器都曾經(jīng)或正在廣為流行。180x86 系列微處理器1)8088 微處理器具有多個 16 位的寄存器、 8 位數(shù)據(jù)總線和 20 位地址總線,可以尋址 1MB的內存。雖然這些寄存器一次可以處理 2 個字節(jié), 但數(shù)據(jù)總線一次只能傳送 1 個字節(jié)。 該處理器只能工作在實模式。2)8086 微處理器指令系統(tǒng)與 8088 完全相同,具有多個 16 位的寄存器、 16 位數(shù)據(jù)總線和 20 位地址總線,可以尋址 1MB的內存,一次可
6、以傳送 2 個字節(jié)。該處理器只能工作在實模式。3)80286微處理器比 8086運行更快,具有多個 16 位的寄存器、 16 位數(shù)據(jù)總線和 24 位地址總線,可以尋址 16MB內存。它既可以工作在實模式,也可以工作在保護模式。4)80386微處理器具有多個 32 位的寄存器、 32位數(shù)據(jù)總線和 32 位地址總線,可以尋址 4GB內存。它提供了較高的時鐘速度,增加了存儲器管理和相應的硬件電路,減少了軟件開銷,提高了效率。它既可以工作在實模式,也可以工作在保護模式。5)80486微處理器具有多個 32 位的寄存器、 32位數(shù)據(jù)總線和 32 位地址總線。 它比 80386 增加了數(shù)字協(xié)處理器和 8K
7、B的高速緩存,提高了處理速度。它既可以工作在實模式,也可以工作在保護模式。6)Pentium(奔騰)具有多個 32 位的寄存器、 64位數(shù)據(jù)總線和 36 位地址總線。 因為它采用了超標量體23系結構,所以每個時鐘周期允許同時執(zhí)行兩條指令,處理速度得到了進一步提高,性能比 80486優(yōu)越得多。它既可以工作在實模式,也可以工作在保護模式。以上介紹了 Intel80x86 系列的一些主要微處理器,表 1.1 給出了該系列部分微處理器的數(shù)據(jù)總線和地址總線寬度。 實際上 80x86 系列的功能還在不斷改進和增強, 它們的速度將會更快,性能將會更優(yōu)越。但無論怎樣變化,它們總會被設計成是完全向下兼容的,就像
8、在 8086 上設計和運行的軟件可以不加任何改變地在 Pentium 4 機上運行一樣。對于匯編語言編程人員來講,掌握 16 位計算機的編程十分重要,它是學習高檔計算機及保護模式編程的基礎,也是掌握實模式程序設計的唯一方法。2CPU的主要性能指標1)機器字長機器字長和 CPU內部寄存器、運算器、內部數(shù)據(jù)總線的位寬相一致。如 8086CPU,它的內部寄存器是 16 位的、運算器能完成兩個 16 位二進制數(shù)的并行運算、 數(shù)據(jù)總線的位寬為 16位,則它的機器字長為 16 位,也稱其為 16 位計算機。通常,機器字長越長,計算機的運算能力越強,其運算精度也越高。2)速度CPU的速度是指單位時間內能夠執(zhí)
9、行指令的條數(shù)。速度的計算單位不一,若以單字長定點指令的平均執(zhí)行時間計算,用每秒百萬條指令( Million Istructions PerSecond,MIPS)作為單位;若以單字長浮點指令的平均執(zhí)行時間計算,則用每秒百萬條浮點運算指令( Million Floating-point Operations Per Second ,MFLOP)S表示?,F(xiàn)在,采用計算機中各種指令的平均執(zhí)行時間和相應的指令運行權重的加權平均法求出等效速度作為計算機運算速度。3)主頻主頻又稱為主時鐘頻率,是指 CPU在單位時間內產生的時鐘脈沖數(shù),以 MHz/s(兆赫茲每秒)為單位。由于計算機中的一切操作都是在時鐘控制
10、下完成的,因此,對于機器結構相同或相近的計算機, CPU的時鐘頻率越高,運算速度越快。表 1.1 Inte l80x86 系列微處理器總線寬度CPU 數(shù)據(jù)總線寬度 地址總線寬度 CPU 數(shù)據(jù)總線寬地址總線寬度 度8086 16 20 Pentium 64 368088 8 20 Pentium 64 3680286 16 24 Pentium 64 3680386SX 16 24 Pentium 4 64 3680386DX 32 32 Itanium 64 4480486 32 32341.2 計算機語言及匯編語言特點1.3.1 計算機語言概述計算機語言的發(fā)展經(jīng)歷了由機器語言、匯編語言到高級
11、語言這樣一個由低級到高級的發(fā)展過程。1機器語言機器語言是計算機唯一能直接識別和執(zhí)行的計算機語言。由于計算機硬件本身只能識別二進制代碼,在計算機發(fā)展的初期, 人們使用二進制代碼構成機器指令來編寫程序,這種二進制編碼的計算機語言就是機器語言。 機器語言描述的程序稱為目標程序, 只有目標程序才能被 CPU直接執(zhí)行。指令用于指出計算機所進行的操作和操作對象的代碼,一條指令通常由操作碼和操作數(shù)兩部分組成。 其中,操作碼指出計算機所進行的具體操作,如加法、減法等;操作數(shù)說明操作的對象。操作碼比較簡單,只需對每一種操作指定確定的二進制代碼就可以了;操作數(shù)比較復雜,首先它可以有一個、兩個或三個,分別稱為單操作
12、數(shù)、雙操作數(shù)或三操作數(shù),其次,操作數(shù)可能存放在不同的地方,既可以存放在寄存器中,也可以存放在存儲器中,甚至直接存放在指令中,通常要用尋址方式來說明。一臺計算機全部指令的集合構成該計算機的指令系統(tǒng)。指令系統(tǒng)是計算機基本功能的體現(xiàn),不同的機器指令對應的二進制代碼序列各不相同。機器語言是面向機器的,不同機器之間的語言是不通用的,這也是機器語言是“低級”語言的含義所在。用二進制代碼編寫程序相當麻煩,寫出的程序也難以閱讀和調試。2匯編語言早期的程序員們很快就發(fā)現(xiàn)了使用機器語言帶來的麻煩,它是如此難于辨別和記憶,給整個產業(yè)的發(fā)展帶來了障礙,于是產生了匯編語言。匯編語言是一種采用指令助記符、符號地址、標號等
13、符號書寫程序的語言,它便于人們書寫、閱讀和檢查。匯編語言指令與計算機指令基本上是一一對應的, 匯編語言與計算機有著密不可分的關系, 處理器不同,匯編語言就不同,因此它是一種低級語言,同時它也是唯一能夠充分利用計算機硬件特性并直接控制硬件設備的語言。 利用匯編語言進行程序設計體現(xiàn)了計算機硬件和軟件的結合。用匯編語言編寫的程序稱為匯編源程序(或稱匯編語言程序) ,計算機不能直接識別,必須將其翻譯成由計算機指令組成的程序后, CPU才能執(zhí)行, 這一過程稱為 “匯編”。用于將匯編源程序翻譯成計算機語言的程序稱為匯編程序, 這種由源程序經(jīng)過計算機翻譯轉換成的計算機語言程序也稱為目標程序。 目標程序還不能
14、直接交給 CPU執(zhí)行,它還需要通過連接程序裝配成可執(zhí)行程序才能被執(zhí)行。 連接程序具有將多個目標程序裝配在一起的功能,它也可以將目標程序與預先編寫好的一些放在子程序庫中的子程序連接在45一起,構成較大的可執(zhí)行程序。它們之間的關系如圖 1.2 所示。圖 1.2 匯編程序與目標程序、可執(zhí)行程序之間的關系3高級語言高級語言是一種與具體的計算機硬件無關,獨立于計算機類型的通用語言,比較接近人類自然語言的語法, 用高級語言編程不必了解和熟悉計算機的指令系統(tǒng), 更容易掌握和使用。高級語言采用接近自然語言的詞匯,其程序的通用性強,易學易用,這些語言面向求解問題的過程, 不依賴具體計算機。 高級語言也要翻譯成機
15、器語言才能在計算機上執(zhí)行。其翻譯有兩種方式,一種是把高級語言程序翻譯成機器語言程序,然后經(jīng)過連接程序連接成可執(zhí)行文件,再在計算機上執(zhí)行,這種翻譯方式稱為編譯方式,大多數(shù)高級語言如 PASCAL語言、C 語言等都是采用這種方式;另一種是直接把高級語言程序在計算機上運行,一邊解釋一邊執(zhí)行,這種翻譯方式稱為解釋方式,如 BASIC語言就采用這種方式。高級語言源程序是在未考慮計算機結構特點情況下編寫的,經(jīng)過翻譯后的目標程序往往不夠精練, 過于冗長, 加大了目標程序的長度, 占用較大存儲空間, 執(zhí)行時間較長。1.3.2 匯編語言的特點匯編語言使用助記符和符號地址,所以它要比機器語言易于掌握,與高級語言相
16、比較,匯編語言有以下特點。1)匯編語言與計算機關系密切匯編語言中的指令是機器指令的符號表示,與機器指令是一一對應的,因此它與計算機有著密切的關系, 不同類型的 CPU有不同的匯編語言, 也就有各種不同的匯編程序。匯編語言源程序與高級語言源程序相比,其通用性和可移植性要差得多。2)匯編語言程序效率高由于構成匯編語言主體的指令是用機器指令的符號表示的,每一條指令都對應一條機器指令, 且匯編語言程序能直接利用計算機硬件系統(tǒng)的許多特性, 如它允許程序員利用寄存器、標志位等編程。用匯編語言編寫的源程序在編譯后得到的目標程序效率高,主要體現(xiàn)在空間效率和時間效率上,即目標程序短、運行速度快這兩個方面,在采用
17、相同算法的前提下,任何高級語言程序在這兩個方面的效率與匯編語言相比都望塵莫及。3)特殊的使用場合56匯編語言可以實現(xiàn)高級語言難以勝任甚至不能完成的任務。匯編語言具有直接和簡捷的特點,用它編制程序能精確地描述算法, 充分發(fā)揮計算機硬件的功能。 在過程控制、多媒體接口、設備通信、內存管理、硬件控制等方面的程序設計中,用匯編語言直接方便,執(zhí)行速度快,效率高。匯編語言提供了一些模塊間相互連接的方法,一個大的任務可以分解成若干模塊,將其中執(zhí)行頻率高的模塊用匯編語言編寫,可以大大提高大型軟件的性能。1.4 程序可見寄存器組80386(含 80386)以上型號的 CPU能夠處理 32 位數(shù)據(jù),其寄存器長度是
18、 32 位的,但為了與早期的 8086 等 16 位機 CPU保持良好的兼容性, 80386 以上型號的 CPU中程序可見寄存器組包括多個 8 位、16位和 32 位寄存器,如圖 1.3 所示。1通用寄存器808680286 CPU各有 8 個 16 位通用寄存器 AX、BX、CX、DX、SP、BP、SI、DI。對于 4 個 16 位數(shù)據(jù)寄存器 AX、BX、CX、DX,其每個又可以作為 2 個獨立的 8 位寄存器使用,它們被分別命名為 AH、AL、BH、BL、CH、CL、DH、DL。80386 以上型號的 CPU各有 8 個 32 位通用寄存器,它們是相應 16 位寄存器的擴展,被分別命名為
19、EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI。在程序中每個 8 位、16 位、32 位寄存器都可以獨立使用。圖 1.3 8086 Pentium CPU程序可見寄存器組67SP、ESP叫做堆棧指針寄存器,其中存放當前堆棧段棧頂?shù)钠屏?,它們總是與 SS堆棧段寄存器配合存取堆棧中的數(shù)據(jù)。在實模式方式下使用 SP,在 80386 以上的保護模式下使用 ESP。除SP、ESP堆棧指針不能隨意修改、需要慎用外,其他通用寄存器都可以直接在指令中使用,用以存放操作數(shù),這是它們的通用之處。在后邊討論指令系統(tǒng)時,可以看到某些通用寄存器在具體的指令中還有其他用途,例如 EAX、AX、AL(通常
20、分別被稱為 32位、16 位、8 位累加器),它們在乘除法、十進制運算、輸入輸出指令中有專門用途。另外有些通用寄存器也可以存放地址用以間接尋址內存單元,例如在實模式中 BX、BP、SI、DI 可以作為間接尋址的寄存器, 用以尋址 64KB以內的內存單元。 在保護模式中 EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI 可以作為間接尋址的寄存器,用以尋址 4GB以內的內存單元,詳細內容見 3.1 節(jié)和 6.3 節(jié)。2段寄存器在 IBM PC 機中存儲器采用分段管理的方法,因此一個物理地址需要用段基地址和偏移量表示。一個程序可以由多個段組成,但對于 808680286 CPU,由于只
21、有 4 個段寄存器, 所以在某一時刻正在運行的程序只可以訪問 4 個當前段, 而對于 80386及其以上的計算機,由于有 6 個段寄存器,則可以訪問 6 個當前段。在實模式下段寄存器存放當前正在運行程序的段基地址的高 16 位,在保護模式下存放當前正在運行程序的段選擇子,段選擇子用以選擇描述符表中的一個描述符,描述符描述段的基地址、長度和訪問權限等, 顯然在保護模式下段寄存器仍然是選擇一個內存段, 只是不像實模式那樣直接存放段基址罷了。代碼段寄存器 CS指定當前代碼段,代碼段中存放當前正在運行的程序段。堆棧段寄存器 SS指定當前堆棧段,堆棧段是在內存開辟的一塊特殊區(qū)域,其中的數(shù)據(jù)訪問按照后進先
22、出( Last in First out ,LIFO)的原則進行,允許插入和刪除的一端叫做棧頂。IBMPC機中 SP(或 ESP)指向棧頂, SS指向堆棧段基地址。數(shù)據(jù)段寄存器 DS指定當前運行程序所使用的數(shù)據(jù)段。附加數(shù)據(jù)段寄存器 ES指定當前運行程序所使用的附加數(shù)據(jù)段。段寄存器 FS和GS只對 80386以上 CPU有效,它們沒有對應的中文名稱,用于指定當前運行程序的另外兩個存放數(shù)據(jù)的存儲段。雖然 DS、ES、FS、GS(甚至于 CS、SS)所指定的段中都可以存放數(shù)據(jù),但 DS是主數(shù)據(jù)段寄存器,在默認情況下使用 DS所指向段的數(shù)據(jù)。若要引用其他段中的數(shù)據(jù),需要顯式地說明。3控制寄存器控制寄存
23、器包括指令指針寄存器和標志寄存器。在程序中不能直接引用控制寄存器名。1)IP、EIP78IP、EIP 叫做指令指針寄存器, 它總是與 CS段寄存器配合指出下一條要執(zhí)行指令的地址,其中存放偏移量部分。在實模式方式下使用 IP,在 80386 以上的保護模式下使用 EIP。2)標志寄存器( FLAGS)標志寄存器也被稱為狀態(tài)寄存器,由運算結果特征標志和控制標志組成。 808680286 CPU為 16 位,80386 以上為 32 位。如圖 1.4 所示,可以看出它們完全向下兼容。空白位為將來保留,暫未定義。圖 1.4 標志寄存器(1)運算結果特征標志:用于記錄程序中運行結果的特征, 8086Pe
24、ntium CPU 的標志寄存器均含有這 6 位標志。CF(Carry Flag ):進位標志,記錄運算結果的最高位向前產生的進位或借位。若有進位或借位則置 CF=1,否則清零??捎糜跈z測無符號數(shù)二進制加減法運算時是否發(fā)生溢出(溢出時 CF=1)。PF(Parity Flag ):奇偶標志,記錄運算結果中含 1 的個數(shù)。若個數(shù)為偶數(shù)則置 PF=1,否則清零??捎糜跈z測數(shù)據(jù)傳送過程中是否發(fā)生錯誤。AF(Auxiliary carry Flag ):輔助進位標志,記錄運算結果最低 4 位(低半字節(jié))向前產生的進位或借位。若有進位或借位則置 AF=1,否則清零。只有在執(zhí)行十進制運算指令時才關心此位。
25、ZF(Zero Flag ):零標志,記錄運算結果是否為零,若結果為零則置 1,否則清零。SF(Sign Flag ):符號標志,記錄運算結果的符號,若結果為負則置 1,否則清零。OF(Overflow Flag ):溢出標志,記錄運算結果是否超出了操作數(shù)所能表示的范圍。若超出則置 1,否則清零??捎糜跈z測帶符號數(shù)運算時是否發(fā)生溢出。(2)控制標志:控制標志控制處理器的操作,要通過專門的指令才能使控制標志發(fā)生變化。 以下控制標志對 8086Pentium CPU均有效。IF (Interrupt Flag ):中斷允許標志,當 IF=1 時允許 CPU響應外部可屏蔽中斷請89求(INTR);當
26、 IF=0 時禁止響應 INTR。IF 的控制只對 INTR起作用。DF(Direction Flag ):方向標志,專門服務于字符串操作指令。當 DF=1時,表示串操作指令中操作數(shù)地址為自動減量, 這樣使得對字符串的處理是從高地址向低地址方向進行;當 DF=0時,表示串操作指令中操作數(shù)地址為自動增量。TF(Trap Flag ):陷阱標志,用于程序調試。當 TF=1時,CPU處于單步方式; TF=0時,CPU處于連續(xù)方式。狀態(tài)標志位的符號表示見表 1.2 。表 1.2 狀態(tài)標志位的符號表示標志位 標志為 1 標志為 0CF進位(有/ 否) CY NCPF奇偶(偶/ 奇) PE POAF半進位
27、 AC NAZF全零(是/ 否) ZR NZSF符號(負/ 正) NG PLIF 中斷(允許 / 禁止) EI DIDF方向(增量 / 減量) DN UPOF溢出(是/ 否) OV NV 以下控制標志只對 80286以上 CPU有效。IOPL(I/O Privilege Level ):特權標志,占 D13和 D12兩位。當在保護模式下工作時,IOPL指定要求執(zhí)行 I/O 指令的特權級。若當前任務的特權級比 IOPL高(級數(shù)越小特權級越高,OO級是最高級),則執(zhí)行 I/O 指令;否則會檢查該任務的 I/O 許可位圖,若位圖中的值為 1 則發(fā)生一個保護異常,導致執(zhí)行程序被掛起。NT(Nested
28、 Task):嵌套任務標志,用于保護模式操作,在執(zhí)行中斷返回指令 IRET時要測試 NT值。當 NT=1時,表示當前執(zhí)行的任務嵌套于另一任務之中,執(zhí)行完該任務后要返回到另一任務, IRET指令的執(zhí)行是通過任務切換實現(xiàn)的。當 NT=0時,用堆棧中保存的值恢復標志寄存器、 代碼段寄存器和指令指針寄存器的內容, 以執(zhí)行常規(guī)的 IRET中斷返回操作。 以下控制標志只對 80386以上 CPU有效。RF(Resume Flag):重啟動標志,該標志控制是否接受調試故障,它與調試寄存器一起使用。當 RF=0時接受, RF=1時忽略。VM(Virtual 8086 Model ):虛擬方式標志,當 CPU處
29、于保護模式時,若 VM=1則切換到虛擬方式,以允許執(zhí)行多個 DOS程序,否則 CPU工作在實模式或保護模式。 以下控制標志只對 80486 SX以上 CPU有效。AC(Alignment Check ):地址對齊檢查標志,若 AC=1時進行地址對齊檢查,當出現(xiàn)地址不對齊時會引起地址對齊異常, 只有在特權級 3 運行的應用程序才檢查引起地址對齊故障。若 AC=0時不進行地址對齊檢查。只有 80486 SX微處理器使用該位,主要用910來同它配套的協(xié)處理器 80487 SX 同步工作。所謂地址不對齊是指以下情形: 1 個字從奇地址開始,或 1 個雙字不是從 4 的倍數(shù)的地址開始。 以下控制標志只對
30、 Pentium 以上 CPU有效。ID(Identification ):標識標志, 若 ID=1,則表示 Pentium 支持 CPUID指令,CPUID指令給系統(tǒng)提供 Pentium 微處理器有關版本號及制造商等信息。VIP(Virtual Interrupt Pending ):虛擬中斷掛起標志,與 VIF 配合,用于多任務環(huán)境下,給操作系統(tǒng)提供虛擬中斷掛起信息。VIF(Virtual Interrupt Flag ):虛擬中斷標志,是虛擬方式下中斷標志位的映像。1.3 存 儲 器1.3.2 基本概念計算機中存儲信息的基本單位是 1 個二進制位,簡稱位( bit ),可用小寫字母 b
31、表示,一位可存儲一位二進制數(shù)。IBM PC機中常用的數(shù)據(jù)類型如下。字節(jié)(byte ):IBM PC 機中存取信息的基本單位,可用大寫字母 B 表示。1 個字節(jié)由 8 位二進制數(shù)組成,其位編號自左至右為 b7、b6、b5、b4、b3、b2、b1、b0。1 個字節(jié)占用 1 個存儲單元。字:1 個字 16 位,其位編號為 b15b0。1 個字占用 2 個存儲單元。雙字:1 個雙字 32 位,其位編號為 b31b0。1 個雙字占用 4 個存儲單元。四字:1 個四字 64 位,其位編號為 b63b0。1 個四字占用 8 個存儲單元。為了正確地區(qū)分不同的內存單元,給每個單元分配一個存儲器地址,地址從 0
32、開始編號,順序遞增 1。在計算機中地址用無符號二進制數(shù)表示, 可簡寫為十六進制數(shù)形式。一個存儲單元中存放的信息稱為該單元的內容。例如 2 號單元中存放了一個數(shù)字 8,則表示為:(2)=8。對于字、雙字、四字數(shù)據(jù)類型,由于它們每個數(shù)據(jù)都要占用多個單元,訪問時只需給出最低單元的地址號即可,然后依次存取后續(xù)字節(jié)。注意按照 Intel 公司的習慣,對于字、雙字、四字數(shù)據(jù)類型,其低地址中存放低位字節(jié)數(shù)據(jù),高地址中存放高位字節(jié)數(shù)據(jù),這就是有些資料中稱為“逆序存放”的含義。例如內存現(xiàn)有以下數(shù)據(jù)(后綴 H表示是十六進制數(shù))。地址:0 1 2 3 4 5 ,內容:12H 34H 45H 67H 89H 0AH
33、,存儲情況如圖 1.5 所示,則對于不同的數(shù)據(jù)類圖 1.5 存儲單元的地址和內容型,從 1 號單元取到的數(shù)據(jù)是:1011(1)字節(jié)=34H(1)字=4534H(1)雙字=89674534H1.5.2 實模式存儲器尋址IBMPC機的存儲器采用分段管理的方法。存儲器采用分段管理后,一個內存單元地址要用段基地址和偏移量兩個邏輯地址來描述,表示為段地址 : 偏移量,其段地址和偏移量的限定、物理地址的形成要視 CPU工作模式?jīng)Q定。80386以上型號的 CPU有3 種工作模式:實模式、保護模式和虛擬 86 模式。在實模式下,這些 CPU就相當于一個快速的 8086 處理器, DOS操作系統(tǒng)運行在實模式。計
34、算機在啟動時,也自動進入實模式。保護模式是它們的主要工作模式,提供了 4GB的段尺寸、多任務、內存分段分頁管理和特權級保護等功能, Windows和 Linux 等操作系統(tǒng)都需要在保護模式下運行。 為了既能充分發(fā)揮處理器的功能, 又能繼續(xù)運行原有的 DOS和DOS應用程序(向下兼容),還提供了一種虛擬 86 模式(Virtual86 模式),它實際上是保護模式下的一種工作方式。在 V86 模式下,存儲器尋址類似于 8086,可以運行 DOS及其應用 程序。顯然,實模式是 80x86 CPU工作的基礎,本節(jié)討論實模式存儲器尋址。 8086和 8088微處理器只能工作在實模式, 80286以上的微
35、處理器既可以工作在實模式也可以工作在保護模式。在實模式下微處理器只可以尋址最低的 1MB內存,即使計算機實際有 64MB或更多的內存也是如此。在實模式下存儲器的物理地址由段基址和偏移量給出。由于 8086、8088、80286 的寄存器均為 16 位,為了與它們兼容,無論是哪一種微處理器,其段基址必須定位在地址為 16 的整數(shù)倍上,這種段起始邊界通常稱做節(jié)或小段,其特征是:在十六進制表示的地址中,最低位為 0。有了這樣的規(guī)定,1MB空間的 20位地址的低 4 位可以不表示出,而高 16 位就可以放入段寄存器了。 同樣由于 16 位長的原因, 在實模式下段長不能超過64KB,但是對最小的段并沒有限制,因此可以定義只包含 1 個字節(jié)的段。段間位置可以相鄰、不相鄰或重疊。存儲器采用分段管理后,其物理地址的計算方法為:10H 段基址+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 導游帶團勞動合同范例
- 義診合作合同范例
- 工地清包工外架合同范例
- 安裝鋁合金護欄合同模板
- 小區(qū)投放充電樁合同范例
- 辦公標簽銷售合同范例范例
- 建筑材料居間協(xié)議合同模板
- 律師審查股權合同模板
- 寄售車銷售合同模板
- 公墓合作協(xié)議合同范例
- GB/T 25217.5-2019沖擊地壓測定、監(jiān)測與防治方法第5部分:地音監(jiān)測方法
- GB/T 17644-1998紡織纖維白度色度試驗方法
- 第五單元寫作《如何突出中心》課件 【新教材備課精研】部編版語文七年級上冊
- GB 24500-2020工業(yè)鍋爐能效限定值及能效等級
- GB 19173-2003桑樹種子和苗木
- GA/T 1147-2014車輛駕駛人員血液酒精含量檢驗實驗室規(guī)范
- 精細化工概論-05洗滌劑
- 報聯(lián)商有效溝通課件
- 速賣通介紹課件
- 腦梗死PPT教學講解課件
- 腦卒中患者語言康復訓練課件
評論
0/150
提交評論