日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-下

發(fā)布時(shí)間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-下 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2.2 ?IA-32處理器體系結(jié)構(gòu)

? ? 如前所述,IA-32是指始于Intel386直到當(dāng)前最新的奔騰4的系列的處理器(額...這本書(shū)是什么時(shí)候?qū)懙陌?#xff0c;表示現(xiàn)在應(yīng)該是I7啊),在IA-32的發(fā)展過(guò)程中,Intel處理器的內(nèi)部體系結(jié)構(gòu)已經(jīng)做出了無(wú)數(shù)的改進(jìn),如流水線、超標(biāo)量、分支預(yù)測(cè)以及超線程等。不過(guò)就編程而言。可見(jiàn)的變化只有用于多媒體處理以及用于圖形計(jì)算的指令集擴(kuò)展。

2.2.1 ?操作模式

? ? IA-32處理器有三種基本的操作模式:保護(hù)模式、實(shí)地址模式和系統(tǒng)管理模式。另外一種模式稱為虛擬8086模式,是保護(hù)模式的一個(gè)特例。

保護(hù)模式(Protected Mode:保護(hù)模式是處理器的基本模式,在保護(hù)模式下,所有指令和特性都是可用的,程序被賦予了獨(dú)立的內(nèi)存區(qū)域(稱為段),處理器阻止程序訪問(wèn)已分配段之外的其他內(nèi)存。

虛擬8086模式(Virtual-8086 Mode:在保護(hù)模式下,處理器可以在安全的多任務(wù)環(huán)境中執(zhí)行地址模式的軟件,如MS-DOS程序。換句話說(shuō),即使一個(gè)MS-DOS

程序崩潰了或試圖想系統(tǒng)內(nèi)存區(qū)寫(xiě)入數(shù)據(jù),也不會(huì)影響同時(shí)運(yùn)行的其他程序。Windows XP 可以同時(shí)執(zhí)行多個(gè)虛擬8086任務(wù)。

實(shí)地址模式(Real-address Mode:實(shí)地址模式實(shí)現(xiàn)了Intel8086處理器的程序設(shè)計(jì)環(huán)境以及其他一些新增的特性,如卻換到其他兩種模式的能力等。該模式在WIndows98下是被支持的,可用于運(yùn)行那些需要直接訪問(wèn)系統(tǒng)內(nèi)存和硬件設(shè)備的MS-DOS程序。實(shí)地址模式下運(yùn)行的程序有可能導(dǎo)致操作系統(tǒng)掛起(停止響應(yīng)命令)。

系統(tǒng)管理模式(SSM ,System Management Mode:系統(tǒng)管理模式為操作系統(tǒng)提供了用以實(shí)現(xiàn)電源管理和系統(tǒng)安全等功能的機(jī)制。這些功能通常是由那些想自定義特定系統(tǒng)啟動(dòng)過(guò)程的計(jì)算機(jī)制造商實(shí)現(xiàn)的。

2.2.2 ?基本執(zhí)行環(huán)境

地址空間

? ? 在保護(hù)模式下。IA-32處理器可訪問(wèn)高達(dá)4GB的內(nèi)存,這是32位無(wú)符號(hào)二進(jìn)制整數(shù)地址的能夠?qū)ぶ返纳舷蕖?shí)地址模式程序只能訪問(wèn)1MB的內(nèi)存。如果處理器處于保護(hù)模式并在虛擬8086模式下運(yùn)行多個(gè)程序,每個(gè)程序都能訪問(wèn)獨(dú)立的1MB內(nèi)存區(qū)域。

基本寄存器

? ??寄存器是CPU內(nèi)部的高速存儲(chǔ)單元,訪問(wèn)速度比常規(guī)內(nèi)存快很多。例如

當(dāng)循環(huán)進(jìn)行速度優(yōu)化時(shí),就可以把循環(huán)計(jì)數(shù)存放在寄存器而不是(內(nèi)存)變量中。

下圖列出了所有的用于程序執(zhí)行的基本寄存器,其中有8個(gè)通用寄存器,6個(gè)段寄存器,一個(gè)處理器狀態(tài)標(biāo)志寄存器(EFLAGS)和一個(gè)指令指針(EIP)寄存器。

通用寄存器:通用寄存器主要用于算術(shù)運(yùn)算和數(shù)據(jù)的傳輸。如下圖所示,每個(gè)寄存器都可以作為一個(gè)32位值或兩個(gè)16位值來(lái)尋址使用。

?

? ?某些16位的寄存器能按8位尋址使用。例如,32位的EAX寄存器的低16位稱為AXAX寄存器的高8位稱為AH,地8位稱為AL。EAXEBXECXEDX寄存器都有存在這種交迭的關(guān)系:


? ? 其余通用寄存器只有低16位有特別的名字,但是不能再進(jìn)一步細(xì)分了。這里列出的16位寄存器通常在編寫(xiě)實(shí)地址模式程序時(shí)使用:


特殊用法:某些通用寄存器有些特殊用法。

1.EAX在乘法和除法指令中被自動(dòng)使用。通常稱為擴(kuò)展累加寄存器。

2.在某些指令中,CPU自動(dòng)使用ECX作為循環(huán)計(jì)數(shù)器。

3.ESP尋址堆棧(一種系統(tǒng)內(nèi)存結(jié)構(gòu))上的數(shù)據(jù),極少用于普通的算術(shù)和數(shù)據(jù)傳輸,通常被稱之為擴(kuò)展堆棧指針寄存器。

4.ESIEDI由高速內(nèi)存數(shù)據(jù)傳送指令使用,通常稱為擴(kuò)展源指針和擴(kuò)展目的指針寄存器。

5.高級(jí)語(yǔ)言使用EBP引用堆棧上的函數(shù)參數(shù)和局部變量。除非用于高級(jí)程序設(shè)計(jì)技巧中EBP一般不應(yīng)該用于普通算術(shù)和數(shù)據(jù)傳送。通常稱為擴(kuò)展幀指針寄存器。

...之后是每個(gè)寄存器都有介紹,不寫(xiě)了。需要的時(shí)候再查。

2.2.3 ??浮點(diǎn)單元

? ? IA-32浮點(diǎn)單元(FPU)執(zhí)行高速浮點(diǎn)算術(shù)運(yùn)算。過(guò)去浮點(diǎn)單元需要一塊獨(dú)立的協(xié)處理器芯片。但從Intel486以后,FPU被繼承了主處理器芯片中。FPU內(nèi)有8個(gè)浮點(diǎn)數(shù)據(jù)寄存器,名為ST0),ST1...ST7),其余的控制和指針寄存器如圖。


2.2.4 ?Intel微處理器的歷史

Intel8086 ??Intel體系開(kāi)端

Intel80286 ?...

Intel80386 IA-32 引入32位寄存器、32位地址總線以及32位外部擴(kuò)展數(shù)據(jù)通道。

Intel486 ??指令集的微結(jié)構(gòu)采用流水線技術(shù)

奔騰 ?????引入了MMX技術(shù)

P6處理器系列 Pro加入了提升指令執(zhí)行速度的高級(jí)技術(shù),奔騰2加入了MMX,奔騰3引入了SIMD(流擴(kuò)展)技術(shù),128寄存器。

奔騰4和至強(qiáng)(Xeon)系列 ??NetBurst微架構(gòu)

2.3 ?IA-32的內(nèi)存管理

? ? IA-32處理器根據(jù)2.2.1節(jié)討論的幾種不同的基本操作模式對(duì)內(nèi)存進(jìn)行不同方式的管理。保護(hù)模式是最簡(jiǎn)單也是最強(qiáng)大的,其他模式通常僅在程序需要直接訪問(wèn)系統(tǒng)硬件是才使用。

在實(shí)地址模式下,處理器只能尋址1MB的內(nèi)存空間,地址是從十六進(jìn)制數(shù)的00000-FFFFF處理器一次只能運(yùn)行一個(gè)程序,但可以隨時(shí)打斷(稱為中斷)程序的執(zhí)行以便處理器來(lái)自外圍設(shè)備的請(qǐng)求。應(yīng)用程序能夠讀取和修改RAM(隨機(jī)訪問(wèn)存儲(chǔ)器)的任何區(qū)域,能夠讀取ROM(只讀存儲(chǔ)器)的任何區(qū)域但不能修改。MS-DOS操作系統(tǒng)運(yùn)行于實(shí)地址模式下,Windows95/98可以啟動(dòng)或切換到該模式。

在保護(hù)模式下,處理器可同時(shí)運(yùn)行多個(gè)程序,并為每個(gè)進(jìn)程(運(yùn)行的程序)分配4GB的內(nèi)存。可以為每個(gè)程序分配屬于自己的保留內(nèi)存區(qū)域,一個(gè)程序不能訪問(wèn)其他程序的代碼和數(shù)據(jù)。MS-WindowsLinux都運(yùn)行于保護(hù)模式下。

在虛擬8086模式下,實(shí)際上是處理器在保護(hù)模式下創(chuàng)建了一個(gè)有1MB地址空間的虛擬機(jī),虛擬機(jī)對(duì)運(yùn)行于實(shí)地址模式下的80X86計(jì)算機(jī)進(jìn)行模擬。例如,在Windows NT Windows2000下,打開(kāi)一個(gè)命令行窗口時(shí)就會(huì)創(chuàng)建一個(gè)8086虛擬機(jī)。可以同時(shí)運(yùn)行很多這樣的窗口,它們之間的行為不會(huì)相互影響。有一些直接訪問(wèn)計(jì)算機(jī)硬件的MS-DOS程序不能在Windows NT Windows2000的虛擬8086模式下運(yùn)行。

2.4 ?IA-32微機(jī)構(gòu)成

2.4.1 ?主板

主板是微型計(jì)算機(jī)心臟,主板是一塊印刷制電路板,上面安裝了計(jì)算機(jī)的CPU、更能支持芯片組、住存儲(chǔ)器、輸入輸出接口、電源插口以及擴(kuò)展槽。這些不同的組件通過(guò)總線相互連接,總線是印制在主板上的一組電線。雖然主板種類很多。但是下面的一些部件是各個(gè)主板都具有的:

1.CPU插座。

2.內(nèi)存插槽。

3.基本輸入輸出系統(tǒng)(BIOS)芯片,存放著系統(tǒng)軟件。

4.CMOS內(nèi)存,帶一塊可充電電池供電。

5.海量存儲(chǔ)設(shè)備(如硬盤(pán)和CD-ROM等)的接口。

6.外部設(shè)備de USB接口。

7.鍵盤(pán)和鼠標(biāo)接口。

8.PCI插槽,用于安裝聲卡、圖形卡、數(shù)據(jù)采集器卡和其他輸入輸出設(shè)備。

下面是可選的

9.集成的聲卡處理器。

10.并口和串口。

11.集成網(wǎng)卡。

12.告訴視頻卡使用的AGP總線接口。

? ? 面是一個(gè)典型的IA-32系統(tǒng)中的一些重要的功能支持處理芯片:

1.浮點(diǎn)單元(FPU),處理浮點(diǎn)和擴(kuò)展數(shù)運(yùn)算。

2.8284/82C284時(shí)鐘發(fā)生器,簡(jiǎn)稱時(shí)鐘,它以固定的頻率產(chǎn)生脈沖。時(shí)鐘發(fā)生器用于在CPU和計(jì)算機(jī)其余部件之間進(jìn)行同步。

3.8259A可編程中斷控制器(PIC,處理來(lái)自外部設(shè)備的中斷。

4.8255可編程并口。

2.4.2 ?視頻輸出

? ? 略

2.4.3 ?存儲(chǔ)器

? ? 基于Intel的系統(tǒng)使用集中基本類型的存儲(chǔ)器:只讀存儲(chǔ)器(ROM,可擦寫(xiě)可編程只讀存儲(chǔ)器(EPROM),動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM),靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM,視頻隨機(jī)訪問(wèn)存儲(chǔ)器(VRAM)以及互補(bǔ)金屬氧化物半導(dǎo)體隨機(jī)訪問(wèn)存儲(chǔ)器(CMOS RAM: 詳細(xì)介紹 略。

2.4.4 ?輸入輸出接口

? ? 通用串行總線(USBUniversal Serial Bus:通用串行總線接口為計(jì)算機(jī)和其他支持USB之間提供了智能、告訴的連接。USB2.0支持480MB/s的數(shù)據(jù)傳輸速率。USB接口可以連接單功能設(shè)備或多個(gè)共享同一USB接口的復(fù)合設(shè)備。

?

? ? 當(dāng)設(shè)備通過(guò)USB與計(jì)算機(jī)相連時(shí),計(jì)算機(jī)詢問(wèn)(枚舉)設(shè)備以獲取其設(shè)備名、設(shè)備類型以及其支持的驅(qū)動(dòng)程序類型,這個(gè)過(guò)程稱為美劇。計(jì)算機(jī)可以切斷單個(gè)設(shè)備的電源,使設(shè)備處于掛起狀態(tài)。

并口:大多數(shù)打印機(jī)都通過(guò)并行端口與計(jì)算機(jī)相連。術(shù)語(yǔ)“并行”意味著字節(jié)數(shù)據(jù)或字?jǐn)?shù)據(jù)的所有位可以同時(shí)從計(jì)算機(jī)傳送到設(shè)備,在通常不超過(guò)10英尺的較短距離內(nèi),數(shù)據(jù)可以非常快速(1MB/s)地傳送、并行端口可以雙向的,盡管目前打印機(jī)都使用USB接口了,告訴連接許多實(shí)驗(yàn)儀器和定制設(shè)備時(shí)并口依然很有用。

IDE通常為智能驅(qū)動(dòng)設(shè)備接口或驅(qū)動(dòng)設(shè)備。IDE接口連接計(jì)算機(jī)和海量存儲(chǔ)設(shè)備如硬盤(pán)、DVD以及CD-ROM等。計(jì)算機(jī)內(nèi)幾乎總是存在IDE接口。 當(dāng)今的大部分設(shè)備實(shí)際上是并行ATA設(shè)備,這類設(shè)備的驅(qū)動(dòng)控制器在設(shè)備內(nèi)。帶內(nèi)奸控制邏輯的設(shè)備把CPU從內(nèi)部邏輯的控制工作中解放出來(lái)了。另外一個(gè)相關(guān)的接口是SATA(串行ATA,提供了比并行ATA更高的數(shù)據(jù)傳輸速率。

FireWire:火線是一種高速外部總線標(biāo)準(zhǔn),支持最高800MB/s的數(shù)據(jù)傳輸速率。

串口:RS-232串行端口每次發(fā)送一個(gè)二進(jìn)制位,這導(dǎo)致其速度較并口和USB接口慢,但是這樣使數(shù)據(jù)進(jìn)行較遠(yuǎn)距離的傳送成為可能。實(shí)驗(yàn)采集設(shè)備通常使用串口,調(diào)制解調(diào)器也是。

2.5 輸入輸出系統(tǒng)

2.5.1 ?所有這一切如何工作

? ? 應(yīng)用程序通常從鍵盤(pán)和文件讀取輸入,并將輸出寫(xiě)到屏幕或文件中。輸入輸出(I/O)不必通過(guò)直接訪問(wèn)硬件就能完成-相反,通過(guò)調(diào)用操作系統(tǒng)的功能函數(shù)就能完成。在不同的訪問(wèn)層次都可以進(jìn)行I/O操作,這點(diǎn)類似于1章中簡(jiǎn)述的虛擬機(jī)的概念。有三種基本的訪問(wèn)層次:

高級(jí)語(yǔ)言功能函數(shù):諸如C++JAVA之類的高級(jí)程序設(shè)計(jì)語(yǔ)言包含了執(zhí)行輸入輸出的函數(shù)。這些功能函數(shù)是可移植的,能夠在多種不同的計(jì)算機(jī)系統(tǒng)上工作并且不依賴于任何一個(gè)操作系統(tǒng)。

操作系統(tǒng):程序員可以通過(guò)API調(diào)用操作系統(tǒng)的功能函數(shù)。才做系統(tǒng)提供了一些高級(jí)操作,如寫(xiě)字符串到文件、從磁盤(pán)讀取字符串以及分配內(nèi)存塊等。

BIOS(基本輸入輸出系統(tǒng)):是直接同硬件交互的子程序的集合。BIOS是由計(jì)算機(jī)制造商安裝的,統(tǒng)計(jì)算機(jī)硬件相匹配。操作系統(tǒng)通常同BIOS通信。

設(shè)備驅(qū)動(dòng)程序:如果計(jì)算機(jī)安裝了BIOS不能識(shí)別的新設(shè)備,會(huì)發(fā)生什么?當(dāng)操作系統(tǒng)引導(dǎo)的時(shí)候,它加載一個(gè)設(shè)備驅(qū)動(dòng)程序,設(shè)備驅(qū)動(dòng)程序中包含了同設(shè)備通信的功能函數(shù)。設(shè)備驅(qū)動(dòng)程序工作起來(lái)與BIOS非常相似,它為特定的設(shè)備或一類設(shè)備提供了輸入輸出的功能。

應(yīng)用程序在屏幕上顯示一個(gè)字符串步驟如下:

?

1.一條應(yīng)用程序語(yǔ)句調(diào)用一個(gè)高級(jí)語(yǔ)言庫(kù)函數(shù)向標(biāo)準(zhǔn)輸出上寫(xiě)字符串。

2.庫(kù)函數(shù)(層次3)調(diào)用一個(gè)操作系統(tǒng)函數(shù),傳遞一個(gè)字符串指針。

3.操作系統(tǒng)函數(shù)(層次2)接入一個(gè)循環(huán),循環(huán)中調(diào)用BIOS的某個(gè)子例程,向它傳遞每個(gè)字符的ASCII碼及其顏色,操作系統(tǒng)調(diào)用另外一個(gè)BIOS子程序把光標(biāo)前前進(jìn)到屏幕的下一個(gè)字符要顯示的位置。

4.BIOS子例程(層次1)接收每個(gè)字符,映射特定的系統(tǒng)字體,然后把字符送至與視頻控制卡相連的硬件端口。

5.視頻控制卡(層次0)定時(shí)產(chǎn)生硬件信號(hào)給視頻顯示以控制光柵掃描和像素顯示。

在多個(gè)層次上進(jìn)行編程:在輸入輸出程序設(shè)計(jì)領(lǐng)域,匯編語(yǔ)言的能力和靈活性更大,匯編語(yǔ)言可以從下面的訪問(wèn)層次中進(jìn)行選擇。

層次3:調(diào)用庫(kù)函數(shù)執(zhí)行通用的文本I/O和基于文件的I/O

層次2:調(diào)用操作系統(tǒng)函數(shù)執(zhí)行文本I/O和基于文件的I/O

層次1:調(diào)用BIOS功能控制與設(shè)備相關(guān)的特性。

層次0:在硬件層次上接收和發(fā)送數(shù)據(jù),能夠完全控制特定的設(shè)備。



本章小結(jié)(依舊是直接粘貼過(guò)來(lái))

?

?

?


總結(jié)

以上是生活随笔為你收集整理的Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-下的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。