• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽(tīng)則明,偏聽(tīng)則暗。

            匯編語(yǔ)言--基礎(chǔ)知識(shí)

            知識(shí)點(diǎn):機(jī)器語(yǔ)言、匯編語(yǔ)言的產(chǎn)生、匯編語(yǔ)言的組成、存儲(chǔ)器、指令和數(shù)據(jù)、存儲(chǔ)單元、CPU對(duì)存儲(chǔ)器的讀寫(xiě)、地址總線、數(shù)據(jù)總線、控制總線、內(nèi)存地址空間(概述)、主板、接口卡、各類(lèi)存儲(chǔ)器芯片、內(nèi)存地址空間。


            匯編語(yǔ)言是直接在硬件之上工作的編程語(yǔ)言,首先要了解硬件系統(tǒng)的結(jié)構(gòu),才能有效地應(yīng)用匯編語(yǔ)言對(duì)其編程。

            機(jī)器語(yǔ)言
            說(shuō)到匯編語(yǔ)言的產(chǎn)生,首先要講一下機(jī)器語(yǔ)言。機(jī)器語(yǔ)言是機(jī)器指令的集合。機(jī)器指令展開(kāi)來(lái)講就是一臺(tái)機(jī)器可以正確執(zhí)行的命令。
            電子計(jì)算機(jī)的機(jī)器指令是一列二進(jìn)制數(shù)字計(jì)算機(jī)將之轉(zhuǎn)變?yōu)橐涣懈叩碗娖?,以使?jì)算機(jī)的電子器件受到驅(qū)動(dòng),進(jìn)行運(yùn)算。

            上面所說(shuō)的計(jì)算機(jī)指的是可以執(zhí)行機(jī)器指令,進(jìn)行運(yùn)算的機(jī)器。這是早期計(jì)算機(jī)的概念。現(xiàn)在,在常用的PC機(jī)中,有一個(gè)芯片來(lái)完成上面所說(shuō)的計(jì)算機(jī)的功能,這個(gè)芯片就是我們常說(shuō)的CPU(Central Processing Unit,中央處理器單元),CPU是一種微處理器。

            以后我們提到的計(jì)算機(jī)是指由CPU和其他受CPU直接或間接控制的芯片、器件、設(shè)備組成的計(jì)算機(jī)系統(tǒng),比如我們最常見(jiàn)的PC機(jī)。

            每一種微處理器,由于硬件設(shè)計(jì)和內(nèi)部結(jié)構(gòu)和不同,就需要用不同的電平脈沖來(lái)控制,使它工作。所以每一種微處理器都有自己的機(jī)器指令集,也就是機(jī)器語(yǔ)言。

            早期的程序設(shè)計(jì)均使用機(jī)器語(yǔ)言。程序員們將用0、1數(shù)字編成的程序代碼打在紙帶或卡片上,1打孔,0不打孔,再將程序通過(guò)紙帶機(jī)或卡片機(jī)輸入計(jì)算機(jī),進(jìn)行運(yùn)算。

            應(yīng)用8086CPU完成計(jì)算 s = 768 + 12288 - 1280,機(jī)器碼如下:
            1011000000000000000000000000011
            0000010100000000000000000110000
            0010110100000000000000000000101


            要書(shū)寫(xiě)和閱讀機(jī)器碼程序不是一件簡(jiǎn)單的工作,要記住所有抽象的二進(jìn)制碼。上面只是一個(gè)非常簡(jiǎn)單的小程序,就暴露了機(jī)器碼的晦澀難懂和不易查錯(cuò)。


            匯編語(yǔ)言的產(chǎn)生
            早期的程序員很快就發(fā)現(xiàn)了使用機(jī)器語(yǔ)言帶來(lái)的麻煩,它是如此難于辨別和記憶,給整個(gè)產(chǎn)業(yè)的發(fā)展帶來(lái)了障礙。于是匯編語(yǔ)言產(chǎn)生了。

            匯編語(yǔ)言的主體是匯編指令。
            匯編指令和機(jī)器指令的差別在于指令的表示方法上。
            匯編指令是機(jī)器指令便于記憶的書(shū)寫(xiě)格式。

            例如:機(jī)器指令 1000100111011000表示把寄存器BX的內(nèi)容送到AX中。匯編指令則寫(xiě)成mov ax, bx,這樣的寫(xiě)法與人類(lèi)語(yǔ)言接近,便于閱讀和記憶。

            操作:寄存器BX的內(nèi)容送到AX中
            機(jī)器指令:1000100111011000
            匯編指令:mov ax, bx

            (寄存器,簡(jiǎn)單地講是CPU中可以存儲(chǔ)數(shù)據(jù)的器件,一個(gè)CPU中有多個(gè)寄存器。AX是其中一個(gè)寄存器的代號(hào),BX是另一個(gè)寄存器的代號(hào)。)

            此后,程序員們就用匯編指令編寫(xiě)源程序。可是,計(jì)算機(jī)能讀懂的只有機(jī)器指令,那么如何讓計(jì)算機(jī)執(zhí)行程序員用匯編指令編寫(xiě)的程序呢?這時(shí),就需要有一個(gè)能夠將匯編指令轉(zhuǎn)換成機(jī)器指令的翻譯程序,這樣的程序被稱(chēng)為編譯器。程序員用匯編語(yǔ)言寫(xiě)出源程序,再用匯編編譯器將其編譯機(jī)器碼。由計(jì)算機(jī)最終執(zhí)行。


            用匯編語(yǔ)言編寫(xiě)程序的工作過(guò)程:
            (程序員)匯編指令   -->  編譯器   -->  機(jī)器碼  -->  計(jì)算機(jī)


            匯編語(yǔ)言的組成
            匯編語(yǔ)言發(fā)展至今,由以下3類(lèi)指令組成。
            匯編指令:機(jī)器碼的助記符,有對(duì)應(yīng)的機(jī)器碼。
            偽指令:沒(méi)有對(duì)應(yīng)的機(jī)器碼,由編譯器執(zhí)行,計(jì)算機(jī)并不執(zhí)行。
            其他符號(hào):如:+、-、*、/等,由編譯器識(shí)別,沒(méi)有對(duì)應(yīng)的機(jī)器碼。

            匯編語(yǔ)言的核心是匯編指令,它決定了匯編語(yǔ)言的特性。


            存儲(chǔ)器
            CPU是計(jì)算機(jī)的核心部件,它控制整個(gè)計(jì)算機(jī)的運(yùn)作并進(jìn)行運(yùn)算。
            要想讓一個(gè)CPU工作,就必須向它提供指令和數(shù)據(jù)。
            指令和數(shù)據(jù)在存儲(chǔ)器中存放,也就是平時(shí)所說(shuō)的內(nèi)存。

            在一臺(tái)PC機(jī)中內(nèi)在的作用僅次于CPU。離開(kāi)了內(nèi)存,性能再好的CPU也無(wú)法工作。
            這就像再聰明的大腦,沒(méi)有了記憶也無(wú)法進(jìn)行思考。

            磁盤(pán)不同于內(nèi)存,磁盤(pán)上的數(shù)據(jù)或程序如果不讀到內(nèi)存中,就無(wú)法被CPU使用。

            要靈活地利用匯編語(yǔ)言編程,首先要了解CPU是如何從內(nèi)存中讀取信息,以及向內(nèi)存中寫(xiě)入信息的。


            指令和數(shù)據(jù)
            指令和數(shù)據(jù)是應(yīng)用上的概念。在內(nèi)存或磁盤(pán)上,指令和數(shù)據(jù)沒(méi)有任何區(qū)別,都是二進(jìn)制信息。
            CPU在工作的時(shí)候把有的信息看作指令,有的信息看作數(shù)據(jù),為同樣的信息賦予了不同的意義。
            就像圍棋的棋子,在棋盒里的時(shí)候沒(méi)有任何區(qū)別,在對(duì)弈的時(shí)候就有了不同的意義。

            例如,內(nèi)存中的二進(jìn)制信息 1000100111011000,計(jì)算機(jī)可以把它看作大小為89D8H的數(shù)據(jù)來(lái)處理,也可以將基看作指令mov ax, bx來(lái)執(zhí)行。

            1000100111011000     -->    89D8H(數(shù)據(jù))
            1000100111011000     -->    mov ax, bx(指令)


            存儲(chǔ)單元
            存儲(chǔ)器被劃分成若干個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元從0開(kāi)始順序編號(hào),例如一個(gè)存儲(chǔ)器有128個(gè)存儲(chǔ)單元,編號(hào)從0~127。

            電子計(jì)算機(jī)的最小信息單位是bit(音譯為比特),也就是一個(gè)二進(jìn)制位。
            8個(gè)bit組成一個(gè)Byte,也就是通常講的一個(gè)字節(jié)。
            微型機(jī)存儲(chǔ)器的存儲(chǔ)單元可以存儲(chǔ)一個(gè)字節(jié),即8個(gè)二進(jìn)制位。
            一個(gè)存儲(chǔ)器有128個(gè)存儲(chǔ)單元,它可以存儲(chǔ)128個(gè)字節(jié)。

            微機(jī)存儲(chǔ)器的容量是以字節(jié)為最小單位來(lái)計(jì)算的。
            對(duì)于擁有128個(gè)存儲(chǔ)單元的存儲(chǔ)器,我們可以說(shuō),它的容量是128字節(jié)。

            對(duì)于大容量的存儲(chǔ)器一般還用以下單位計(jì)量容量(以下B來(lái)代表Byte):
            1KB = 1024B
            1MB = 1024KB
            1GB = 1024 MB
            1TB = 1024 GB

            磁盤(pán)的容量單位同內(nèi)存的一樣,以上單位是微機(jī)中常用的計(jì)量單位。



            CPU對(duì)存儲(chǔ)器的讀寫(xiě)
            存儲(chǔ)器被劃分成多個(gè)存儲(chǔ)單元,存儲(chǔ)單元從零開(kāi)始順序編號(hào)。這些編號(hào)可以看作存儲(chǔ)單元在存儲(chǔ)器中的地址。就像一條街,每個(gè)房子都有門(mén)牌號(hào)碼。

            CPU要從內(nèi)在中讀數(shù)據(jù),首先要指定存儲(chǔ)單元的地址。
            也就是說(shuō)它要先確定讀取哪一個(gè)存儲(chǔ)單元的數(shù)據(jù)。就像在一條街上找人,先要確定他住哪個(gè)房子里。

            另外,在一臺(tái)微機(jī)中,不只有存儲(chǔ)器這一種器件。CPU在讀寫(xiě)數(shù)據(jù)時(shí)還要指明,它要對(duì)哪一個(gè)器件進(jìn)行操作,進(jìn)行哪種操作,是從中讀出數(shù)據(jù),還是向里面寫(xiě)入數(shù)據(jù)。

            可見(jiàn),CPU要想進(jìn)行數(shù)據(jù)的讀寫(xiě),必須和外部器件(標(biāo)準(zhǔn)的說(shuō)法是芯片)進(jìn)行3類(lèi)信息的交互:
            *存儲(chǔ)單元的地址(地址信息)
            *器件的選擇,讀或?qū)懙拿睿刂菩畔ⅲ?br>*讀或?qū)懙臄?shù)據(jù)(數(shù)據(jù)信息)

            那么CPU是通過(guò)什么將地址、數(shù)據(jù)和控制信息傳到存儲(chǔ)器芯片中的呢?
            電子計(jì)算機(jī)能處理、傳輸?shù)男畔⒍际请娦盘?hào),電信號(hào)當(dāng)然要用導(dǎo)線傳送。在計(jì)算機(jī)中專(zhuān)門(mén)有連接CPU和其他芯片的導(dǎo)線,通常稱(chēng)為總線。
            總線從物理上來(lái)講,就是一根根導(dǎo)線的集合。
            根據(jù)傳送信息的不同,總線從邏輯上又分為3類(lèi),即地址總線、控制總線、和數(shù)據(jù)總線。

            CPU從3號(hào)單元中讀取數(shù)據(jù)的過(guò)程如下:

            CPU

            內(nèi)存

            地址線

            12     [0]
            3-----> 3B    [1]
            9C    [2]
            數(shù)據(jù)線 08     [3]
            8<----- 31     [4]
            23     [5]
            控制線 15     [6]
            內(nèi)存讀寫(xiě)命令---> 13     [7]
            18     [8]

            cpu從內(nèi)存中讀取數(shù)據(jù)的過(guò)程。

            (1)CPU通過(guò)地址線將地址信息3發(fā)出。
            (2)CPU通過(guò)控制線發(fā)出內(nèi)在讀命令,選中存儲(chǔ)器芯片,并通知它,將要從中讀取數(shù)據(jù)。
            (3)存儲(chǔ)器將3號(hào)單元中的數(shù)據(jù)08通過(guò)數(shù)據(jù)線送入CPU。

            寫(xiě)操作與讀操作的步驟相似。向3號(hào)單元寫(xiě)入數(shù)據(jù)26:
            (1)CPU通過(guò)地址線將地址信息3發(fā)出。
            (2)CPU通過(guò)控制線發(fā)出內(nèi)存寫(xiě)命令,選中存儲(chǔ)器芯片,并通知它,要向其中寫(xiě)入數(shù)據(jù)。
            (3)CPU通過(guò)數(shù)據(jù)線將數(shù)據(jù)26送入內(nèi)存的3號(hào)單元中。

            從上面的我們知道CPU是如何進(jìn)行數(shù)據(jù)讀寫(xiě)的??墒?,我們?nèi)绾蚊钣?jì)算機(jī)進(jìn)行數(shù)據(jù)的讀寫(xiě)呢?
            要讓一個(gè)計(jì)算機(jī)或微處理器工作,應(yīng)向它輸入能夠驅(qū)動(dòng)它進(jìn)行工作的電平信息(機(jī)器碼)。

            對(duì)于8086CPU,下面的機(jī)器碼能夠完成從3號(hào)單元讀數(shù)據(jù):
            機(jī)器碼:101000000000001100000000
            含義:從3號(hào)單元讀取數(shù)據(jù)送入寄存器AX

            CPU接收這條機(jī)器碼后將完成上面所述的讀寫(xiě)工作。

            機(jī)器碼難于記憶,用匯編指令來(lái)表示,情況如下:
            機(jī)器碼:101000000000001100000000
            對(duì)應(yīng)的匯編指令:MOV AX, [3]
            含義:傳送3號(hào)單元的內(nèi)容到AX


            地址總線
            CPU是通過(guò)地址總線來(lái)指定存儲(chǔ)器單元的。
            地址總線上能傳送多少個(gè)不同的信息,CPU就可以對(duì)多少個(gè)存儲(chǔ)單元進(jìn)行尋址。

            現(xiàn)假設(shè),一個(gè)CPU有10根地址線,讓我們來(lái)看一下它的尋址情況。
            在電子計(jì)算機(jī)中,一根導(dǎo)線可以傳送的穩(wěn)定狀態(tài)只有兩種,高電平或低電平。
            用二進(jìn)制表示就是1或0,10根導(dǎo)線可以傳送10位二進(jìn)制數(shù)據(jù)。
            而10位二進(jìn)制數(shù)可以表示多個(gè)不同的數(shù)據(jù)呢?
            2的10次方個(gè),最小數(shù)為0,最大數(shù)為1023。

            一個(gè)CPU有N根地址線,則可以說(shuō)這個(gè)CPU的地址總線的寬度為N。
            這樣的CPU最多可以尋找2的N次方個(gè)內(nèi)存單元。



            數(shù)據(jù)總線
            CPU與內(nèi)存或其他器件之間的數(shù)據(jù)傳送是通過(guò)數(shù)據(jù)總線來(lái)進(jìn)行的。
            數(shù)據(jù)總線的寬度決定了CPU和外界的數(shù)據(jù)傳送速度。
            8根數(shù)據(jù)總線一次可傳送一個(gè)8位二進(jìn)制數(shù)據(jù)(即一個(gè)字節(jié))。
            16根數(shù)據(jù)總線一次可傳送2個(gè)字節(jié)。


            控制總線
            CPU對(duì)外部器件的控制是通過(guò)總線來(lái)進(jìn)行的。在這里控制總線是個(gè)總稱(chēng),控制總線是一些不同控制線的集合。
            有多少根控制總線,就意味著這個(gè)CPU提供了對(duì)外部器件的多少種控制。
            所以,控制總線的寬度決定了CPU對(duì)外部器件的控制能力。

            內(nèi)存讀寫(xiě)命令是由幾根控制線綜合發(fā)出的,其中有一根名為讀信號(hào)輸出控制線負(fù)責(zé)由CPU向外傳送讀信號(hào),CPU向該控制線上輸出低電平表示將要讀取數(shù)據(jù);有一根名為寫(xiě)信號(hào)輸出的控制線則負(fù)責(zé)傳送寫(xiě)信號(hào)。


            小結(jié)
            1)匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對(duì)應(yīng)。
            2)每一種CPU都有自己的匯編指令集。
            3)CPU可以直接使用的信息在存儲(chǔ)器中存放。
            4)在存儲(chǔ)器中指令和數(shù)據(jù)沒(méi)有任何區(qū)別,都是二進(jìn)制信息。
            5)存儲(chǔ)單元從零開(kāi)始順序編號(hào)。
            6)一個(gè)存儲(chǔ)單元可以存儲(chǔ)8個(gè)bit(用作單位寫(xiě)成"b"),即8位二進(jìn)制數(shù)。
            7)1B=8b     1KB=1024B     1MB=1024KB     1GB=1024MB
            8)每一個(gè)CPU芯片都有許多管腳,這些管腳和總線相連。也可以說(shuō),這些管腳引出總線。
                  一個(gè)CPU可以引出三種總線的寬度標(biāo)志了這個(gè)CPU的不同方面的性能:
                           地址總線的寬度決定了CPU的尋址能力;
                           數(shù)據(jù)總線的寬度決定了CPU與其他器件進(jìn)行數(shù)據(jù)傳送時(shí)的一次數(shù)據(jù)傳送數(shù);
                           控制總線的寬度決定了CPU對(duì)系統(tǒng)中其他器件的控制能力。

                         
            習(xí)題:
            (1)1個(gè)CPU的尋址能力為8KB,那么它的地址總線的寬度為_(kāi)_______。
            (2)1KB的存儲(chǔ)器有________個(gè)存儲(chǔ)單元?存儲(chǔ)單元的編號(hào)從__________到__________。
            (3)1KB的存儲(chǔ)器可以存儲(chǔ)_________個(gè)bit,_________個(gè)byte。
            (4)1GB,1MB,1KB分別是_____________________________byte。
            (5)8080、8088、80286、80386的地址總線分別為16根、20根、24根、32根,則它們的尋址能力分別為:__________KB、________MB、__________MB、______________GB。
            (6)8080、8088、8086、80286、80386的數(shù)據(jù)總線寬度分別為8根、8根、16根、16根、32根。則它們一次可以傳送的數(shù)據(jù)為:_______B、________B、________B、__________B、_______B。
            (7)從內(nèi)存中讀取1024字節(jié)的數(shù)據(jù),8086至少要讀_______次,80386至少要讀__________次。
            (8)在存儲(chǔ)器中,數(shù)據(jù)和程序以________形式存放。


            答案:
            (1)13
                       解析:微型機(jī)的存儲(chǔ)單元可以存儲(chǔ)一個(gè)字節(jié),即8個(gè)二進(jìn)制位。8KB即8K字節(jié),即2的13次方個(gè)存儲(chǔ)單元。一個(gè)CPU有N根地址線,則可以說(shuō)這個(gè)CPU的地址總線的寬度為N,這樣的CPU最多可以尋找2的N次方個(gè)存儲(chǔ)單元。
            (2)1024,0,1023
                       解析:1KB,即1024字節(jié),一個(gè)存儲(chǔ)單元為一個(gè)字節(jié)。存儲(chǔ)單元從零開(kāi)始順序編號(hào)。
            (3)8192,1024
                       解析:1B=8b     1KB=1024B
            (4)2^30,   2^20, 2^10
            (5)64, 1, 16, 4
                      解析:一個(gè)CPU有N根地址線,表示這個(gè)CPU地址總線寬度為N,可以尋址2的N次方個(gè)存儲(chǔ)單元。
            (6)1,1,2,2,4
                     解析:一根數(shù)據(jù)線,只能傳送一位二進(jìn)制數(shù)(0或1,低電平或高電平)
            (7)512, 256
                    解析:8086的數(shù)據(jù)總線寬度為16,一次可以傳送2個(gè)字節(jié),80386的數(shù)據(jù)總線寬度為32,一次可以傳送4個(gè)字節(jié)。
            (8)二進(jìn)制(0或1)



            內(nèi)存地址空間(概述)
            什么是內(nèi)存地址空間呢?
            舉例來(lái)講,一個(gè)CPU的地址線寬度為10,那么可以尋址1024個(gè)內(nèi)存單元(存儲(chǔ)單元,一個(gè)存儲(chǔ)單元在微型機(jī)中表示一個(gè)字節(jié)),這1024個(gè)可尋到的內(nèi)存單元就構(gòu)成了這個(gè)CPU的內(nèi)存地址空間。



            主板
            在每一臺(tái)PC機(jī)中,都有一個(gè)主板,主板上有核心器件和一些主要器件,這些器件通過(guò)總線(地址總線、數(shù)據(jù)總線、控制總線)相連。
            這些器件有:CPU、存儲(chǔ)器、外圍芯片組、擴(kuò)展插槽等。
            擴(kuò)展插槽上一般插有RAM內(nèi)存條和各類(lèi)接口卡。

            接口卡
            計(jì)算機(jī)系統(tǒng)中,所有可用程序控制其工作的設(shè)備,必須受到CPU的控制。
            CPU對(duì)外部設(shè)備都不能直接控制,如顯示器、音箱、打印機(jī)等。
            直接控制這些設(shè)備進(jìn)行工作的是插在擴(kuò)展插槽上的接口卡。
            擴(kuò)展插槽通過(guò)總線和CPU相連,所以接口卡也通過(guò)總線同CPU相連。
            CPU可以直接控制這些接口卡,從而實(shí)現(xiàn)CPU對(duì)外設(shè)的間接控制。
            簡(jiǎn)單地講,就是CPU通過(guò)總線向接口卡發(fā)送命令,接口卡根據(jù)CPU的命令控制外設(shè)進(jìn)行工作。


            各類(lèi)存儲(chǔ)器芯片
            一臺(tái)PC機(jī)中,裝有多個(gè)存儲(chǔ)器芯片,這些存儲(chǔ)器芯片從物理連接上看是獨(dú)立的、不同的器件。
            從讀寫(xiě)屬性上看分為兩類(lèi):隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)。
            隨機(jī)存儲(chǔ)器可讀可寫(xiě),但必須帶電存儲(chǔ),關(guān)機(jī)后存儲(chǔ)的內(nèi)容丟失;
            只讀存儲(chǔ)只能讀取不能寫(xiě)入,關(guān)機(jī)后其中的內(nèi)容不丟失。
            這些存儲(chǔ)器從功能和連接上又可分為以下幾類(lèi):

            隨機(jī)存儲(chǔ)器
            用于存放供CPU使用的絕大部分程序和數(shù)據(jù),主隨機(jī)存儲(chǔ)器一般由兩個(gè)位置上的RAM組成,裝在主板上的RAM和插在擴(kuò)展插槽上的RAM。

            裝有BIOS(Basic Input/Output System,基本輸入輸出系統(tǒng))的ROM
            BIOS是由主板和各類(lèi)接口卡(如:顯卡、網(wǎng)卡等)廠商提供的軟件系統(tǒng),可能通過(guò)它利用該硬件設(shè)備進(jìn)行最基本的輸入輸出。
            在主板和某些接口卡上插有存儲(chǔ)相應(yīng)BIOS的ROM,例如:主板上的ROM中存儲(chǔ)著主板的BIOS(通常稱(chēng)為系統(tǒng)BIOS);顯卡上的ROM中存儲(chǔ)顯卡的BIOS;如果網(wǎng)卡上裝有ROM,那其中就可以存儲(chǔ)網(wǎng)卡的BIOS。

            接口卡上的RAM
            某些接口卡需要對(duì)大批量輸入、輸出數(shù)據(jù)進(jìn)行暫時(shí)存儲(chǔ),在其上裝有RAM。最典型的是顯示卡上的RAM,一般稱(chēng)為顯存。顯示卡隨時(shí)將顯存中的數(shù)據(jù)向顯示器上輸出。換句話說(shuō),我們將需要顯示的內(nèi)容寫(xiě)入顯存,就會(huì)出現(xiàn)在顯示器上。


            內(nèi)存地址空間
            上述的各種存儲(chǔ)器,它們?cè)谖锢砩鲜仟?dú)立的器件,但是它們?cè)谝韵聝牲c(diǎn)上相同:
            1)都和CPU的總線相連;
            2)CPU對(duì)它們進(jìn)行讀或?qū)懙臅r(shí)候都通過(guò)控制線發(fā)現(xiàn)內(nèi)在讀寫(xiě)命令。

            也就是說(shuō),CPU在操縱和控制它們的時(shí)候,把它們都當(dāng)作內(nèi)存來(lái)對(duì)待,把它們總的看作一個(gè)由若干存儲(chǔ)單元組成的存儲(chǔ)器。
            這個(gè)邏輯存儲(chǔ)器就是我們所說(shuō)的內(nèi)在地址空間。

            所有的物理存儲(chǔ)器被看作是一個(gè)由若干存儲(chǔ)單元組成的邏輯存儲(chǔ)器,每個(gè)物理存儲(chǔ)器在這個(gè)邏輯存儲(chǔ)器中占有一個(gè)地址段,即一段地址空間。
            CPU在這段地址空間中讀寫(xiě)數(shù)據(jù),實(shí)際上就是在相對(duì)應(yīng)的物理存儲(chǔ)器中讀寫(xiě)數(shù)據(jù)。

            內(nèi)存地址空間的大小受CPU地址總線寬度的限制。
            8086CPU的地址總線寬度為20,可以傳送2^20個(gè)不同的地址信息(大小從0至2^20-1)。即可以定位2^20個(gè)內(nèi)在單元,則8086PC的內(nèi)在地址空間大小為1MB。
            同理,80386CPU的地址總線寬度為32,則內(nèi)存地址空間最大為4GB。

            我們?cè)诨谝粋€(gè)計(jì)算機(jī)硬件系統(tǒng)編程的時(shí)候,必須得知道這個(gè)系統(tǒng)中的內(nèi)在地址空間分配情況。

            因?yàn)楫?dāng)讀者想在某類(lèi)存儲(chǔ)器中讀寫(xiě)數(shù)據(jù)的時(shí)候,讀者必須知道它的第一個(gè)單元的地址和最后一個(gè)單元的地址,才能保證讀寫(xiě)操作是在預(yù)期的存儲(chǔ)器中進(jìn)行。

            比如,讀者希望向顯示器輸出一段信息,那么讀者必須將這段信息寫(xiě)到顯存中,顯卡才能將它輸出到顯示器上。要向顯存中寫(xiě)入數(shù)據(jù),讀者必須知道顯存在內(nèi)存地址空間中的地址。

            不同的計(jì)算機(jī)系統(tǒng)的內(nèi)存地址空間的分配情況是不同的。

            內(nèi)存地址空間
            最終運(yùn)行程序的是CPU,我們用匯編編程的時(shí)候,必須要從CPU角度考慮問(wèn)題。
            對(duì)CPU來(lái)講,系統(tǒng)中的所有存儲(chǔ)器中的存儲(chǔ)單元都處于一個(gè)統(tǒng)一的邏輯存儲(chǔ)器中,它的容量受CPU尋址能力的限制。
            這個(gè)邏輯存儲(chǔ)器即是我們所說(shuō)的內(nèi)存地址空間。













            posted on 2010-07-11 14:50 luqingfei 閱讀(756) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 匯編語(yǔ)言基礎(chǔ)學(xué)習(xí)

            導(dǎo)航

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統(tǒng)計(jì)

            留言簿(6)

            隨筆分類(lèi)(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久亚洲AV无码西西人体| 伊人久久大香线蕉精品| 久久精品国产亚洲av影院 | 中文字幕无码久久久| 日韩乱码人妻无码中文字幕久久| 久久超乳爆乳中文字幕| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产精品久久永久免费| 美女写真久久影院| 久久亚洲欧美国产精品| 色偷偷88888欧美精品久久久| 久久久久久av无码免费看大片| 奇米综合四色77777久久| av色综合久久天堂av色综合在 | 亚洲AV日韩精品久久久久久久| 久久久久久国产a免费观看不卡| 青青青国产精品国产精品久久久久| 久久精品国产亚洲αv忘忧草| 久久乐国产综合亚洲精品| 久久天天躁狠狠躁夜夜不卡| 日韩十八禁一区二区久久| 久久国内免费视频| 99久久国产宗和精品1上映| 久久精品国产色蜜蜜麻豆| 99久久99久久| 久久久国产99久久国产一| 久久久一本精品99久久精品88 | 久久久人妻精品无码一区| 久久青青草原精品国产软件| 色妞色综合久久夜夜| 99久久精品免费| 久久国产高潮流白浆免费观看| 国产精品美女久久久网AV| 精品久久久久久亚洲精品| 久久久青草青青国产亚洲免观| 精品久久久久久国产潘金莲 | 天天综合久久久网| 一本一本久久A久久综合精品 | 亚洲午夜久久影院| 久久国产精品77777| 久久久久亚洲AV成人网人人网站 |