青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

luqingfei@C++

為中華之崛起而崛起!
兼聽則明,偏聽則暗。

匯編語言--基礎知識

知識點:機器語言、匯編語言的產生、匯編語言的組成、存儲器、指令和數據、存儲單元、CPU對存儲器的讀寫、地址總線、數據總線、控制總線、內存地址空間(概述)、主板、接口卡、各類存儲器芯片、內存地址空間。


匯編語言是直接在硬件之上工作的編程語言,首先要了解硬件系統的結構,才能有效地應用匯編語言對其編程。

機器語言
說到匯編語言的產生,首先要講一下機器語言。機器語言是機器指令的集合。機器指令展開來講就是一臺機器可以正確執行的命令。
電子計算機的機器指令是一列二進制數字計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。

上面所說的計算機指的是可以執行機器指令,進行運算的機器。這是早期計算機的概念。現在,在常用的PC機中,有一個芯片來完成上面所說的計算機的功能,這個芯片就是我們常說的CPU(Central Processing Unit,中央處理器單元),CPU是一種微處理器。

以后我們提到的計算機是指由CPU和其他受CPU直接或間接控制的芯片、器件、設備組成的計算機系統,比如我們最常見的PC機。

每一種微處理器,由于硬件設計和內部結構和不同,就需要用不同的電平脈沖來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。

早期的程序設計均使用機器語言。程序員們將用0、1數字編成的程序代碼打在紙帶或卡片上,1打孔,0不打孔,再將程序通過紙帶機或卡片機輸入計算機,進行運算。

應用8086CPU完成計算 s = 768 + 12288 - 1280,機器碼如下:
1011000000000000000000000000011
0000010100000000000000000110000
0010110100000000000000000000101


要書寫和閱讀機器碼程序不是一件簡單的工作,要記住所有抽象的二進制碼。上面只是一個非常簡單的小程序,就暴露了機器碼的晦澀難懂和不易查錯。


匯編語言的產生
早期的程序員很快就發現了使用機器語言帶來的麻煩,它是如此難于辨別和記憶,給整個產業的發展帶來了障礙。于是匯編語言產生了。

匯編語言的主體是匯編指令。
匯編指令和機器指令的差別在于指令的表示方法上。
匯編指令是機器指令便于記憶的書寫格式。

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

操作:寄存器BX的內容送到AX中
機器指令:1000100111011000
匯編指令:mov ax, bx

(寄存器,簡單地講是CPU中可以存儲數據的器件,一個CPU中有多個寄存器。AX是其中一個寄存器的代號,BX是另一個寄存器的代號。)

此后,程序員們就用匯編指令編寫源程序。可是,計算機能讀懂的只有機器指令,那么如何讓計算機執行程序員用匯編指令編寫的程序呢?這時,就需要有一個能夠將匯編指令轉換成機器指令的翻譯程序,這樣的程序被稱為編譯器。程序員用匯編語言寫出源程序,再用匯編編譯器將其編譯機器碼。由計算機最終執行。


用匯編語言編寫程序的工作過程:
(程序員)匯編指令   -->  編譯器   -->  機器碼  -->  計算機


匯編語言的組成
匯編語言發展至今,由以下3類指令組成。
匯編指令:機器碼的助記符,有對應的機器碼。
偽指令:沒有對應的機器碼,由編譯器執行,計算機并不執行。
其他符號:如:+、-、*、/等,由編譯器識別,沒有對應的機器碼。

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


存儲器
CPU是計算機的核心部件,它控制整個計算機的運作并進行運算。
要想讓一個CPU工作,就必須向它提供指令和數據。
指令和數據在存儲器中存放,也就是平時所說的內存。

在一臺PC機中內在的作用僅次于CPU。離開了內存,性能再好的CPU也無法工作。
這就像再聰明的大腦,沒有了記憶也無法進行思考。

磁盤不同于內存,磁盤上的數據或程序如果不讀到內存中,就無法被CPU使用。

要靈活地利用匯編語言編程,首先要了解CPU是如何從內存中讀取信息,以及向內存中寫入信息的。


指令和數據
指令和數據是應用上的概念。在內存或磁盤上,指令和數據沒有任何區別,都是二進制信息。
CPU在工作的時候把有的信息看作指令,有的信息看作數據,為同樣的信息賦予了不同的意義。
就像圍棋的棋子,在棋盒里的時候沒有任何區別,在對弈的時候就有了不同的意義。

例如,內存中的二進制信息 1000100111011000,計算機可以把它看作大小為89D8H的數據來處理,也可以將基看作指令mov ax, bx來執行。

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


存儲單元
存儲器被劃分成若干個存儲單元,每個存儲單元從0開始順序編號,例如一個存儲器有128個存儲單元,編號從0~127。

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

微機存儲器的容量是以字節為最小單位來計算的。
對于擁有128個存儲單元的存儲器,我們可以說,它的容量是128字節。

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

磁盤的容量單位同內存的一樣,以上單位是微機中常用的計量單位。



CPU對存儲器的讀寫
存儲器被劃分成多個存儲單元,存儲單元從零開始順序編號。這些編號可以看作存儲單元在存儲器中的地址。就像一條街,每個房子都有門牌號碼。

CPU要從內在中讀數據,首先要指定存儲單元的地址。
也就是說它要先確定讀取哪一個存儲單元的數據。就像在一條街上找人,先要確定他住哪個房子里。

另外,在一臺微機中,不只有存儲器這一種器件。CPU在讀寫數據時還要指明,它要對哪一個器件進行操作,進行哪種操作,是從中讀出數據,還是向里面寫入數據。

可見,CPU要想進行數據的讀寫,必須和外部器件(標準的說法是芯片)進行3類信息的交互:
*存儲單元的地址(地址信息)
*器件的選擇,讀或寫的命令(控制信息)
*讀或寫的數據(數據信息)

那么CPU是通過什么將地址、數據和控制信息傳到存儲器芯片中的呢?
電子計算機能處理、傳輸的信息都是電信號,電信號當然要用導線傳送。在計算機中專門有連接CPU和其他芯片的導線,通常稱為總線
總線從物理上來講,就是一根根導線的集合。
根據傳送信息的不同,總線從邏輯上又分為3類,即地址總線、控制總線、和數據總線

CPU從3號單元中讀取數據的過程如下:

CPU

內存

地址線

12     [0]
3-----> 3B    [1]
9C    [2]
數據線 08     [3]
8<----- 31     [4]
23     [5]
控制線 15     [6]
內存讀寫命令---> 13     [7]
18     [8]

cpu從內存中讀取數據的過程。

(1)CPU通過地址線將地址信息3發出。
(2)CPU通過控制線發出內在讀命令,選中存儲器芯片,并通知它,將要從中讀取數據。
(3)存儲器將3號單元中的數據08通過數據線送入CPU。

寫操作與讀操作的步驟相似。向3號單元寫入數據26:
(1)CPU通過地址線將地址信息3發出。
(2)CPU通過控制線發出內存寫命令,選中存儲器芯片,并通知它,要向其中寫入數據。
(3)CPU通過數據線將數據26送入內存的3號單元中。

從上面的我們知道CPU是如何進行數據讀寫的。可是,我們如何命令計算機進行數據的讀寫呢?
要讓一個計算機或微處理器工作,應向它輸入能夠驅動它進行工作的電平信息(機器碼)。

對于8086CPU,下面的機器碼能夠完成從3號單元讀數據:
機器碼:101000000000001100000000
含義:從3號單元讀取數據送入寄存器AX

CPU接收這條機器碼后將完成上面所述的讀寫工作。

機器碼難于記憶,用匯編指令來表示,情況如下:
機器碼:101000000000001100000000
對應的匯編指令:MOV AX, [3]
含義:傳送3號單元的內容到AX


地址總線
CPU是通過地址總線來指定存儲器單元的。
地址總線上能傳送多少個不同的信息,CPU就可以對多少個存儲單元進行尋址。

現假設,一個CPU有10根地址線,讓我們來看一下它的尋址情況。
在電子計算機中,一根導線可以傳送的穩定狀態只有兩種,高電平或低電平。
用二進制表示就是1或0,10根導線可以傳送10位二進制數據。
而10位二進制數可以表示多個不同的數據呢?
2的10次方個,最小數為0,最大數為1023。

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



數據總線
CPU與內存或其他器件之間的數據傳送是通過數據總線來進行的。
數據總線的寬度決定了CPU和外界的數據傳送速度。
8根數據總線一次可傳送一個8位二進制數據(即一個字節)。
16根數據總線一次可傳送2個字節。


控制總線
CPU對外部器件的控制是通過總線來進行的。在這里控制總線是個總稱,控制總線是一些不同控制線的集合。
有多少根控制總線,就意味著這個CPU提供了對外部器件的多少種控制。
所以,控制總線的寬度決定了CPU對外部器件的控制能力。

內存讀寫命令是由幾根控制線綜合發出的,其中有一根名為讀信號輸出控制線負責由CPU向外傳送讀信號,CPU向該控制線上輸出低電平表示將要讀取數據;有一根名為寫信號輸出的控制線則負責傳送寫信號。


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

             
習題:
(1)1個CPU的尋址能力為8KB,那么它的地址總線的寬度為________。
(2)1KB的存儲器有________個存儲單元?存儲單元的編號從__________到__________。
(3)1KB的存儲器可以存儲_________個bit,_________個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的數據總線寬度分別為8根、8根、16根、16根、32根。則它們一次可以傳送的數據為:_______B、________B、________B、__________B、_______B。
(7)從內存中讀取1024字節的數據,8086至少要讀_______次,80386至少要讀__________次。
(8)在存儲器中,數據和程序以________形式存放。


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



內存地址空間(概述)
什么是內存地址空間呢?
舉例來講,一個CPU的地址線寬度為10,那么可以尋址1024個內存單元(存儲單元,一個存儲單元在微型機中表示一個字節),這1024個可尋到的內存單元就構成了這個CPU的內存地址空間。



主板
在每一臺PC機中,都有一個主板,主板上有核心器件和一些主要器件,這些器件通過總線(地址總線、數據總線、控制總線)相連。
這些器件有:CPU、存儲器、外圍芯片組、擴展插槽等。
擴展插槽上一般插有RAM內存條和各類接口卡。

接口卡
計算機系統中,所有可用程序控制其工作的設備,必須受到CPU的控制。
CPU對外部設備都不能直接控制,如顯示器、音箱、打印機等。
直接控制這些設備進行工作的是插在擴展插槽上的接口卡。
擴展插槽通過總線和CPU相連,所以接口卡也通過總線同CPU相連。
CPU可以直接控制這些接口卡,從而實現CPU對外設的間接控制。
簡單地講,就是CPU通過總線向接口卡發送命令,接口卡根據CPU的命令控制外設進行工作


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

隨機存儲器
用于存放供CPU使用的絕大部分程序和數據,主隨機存儲器一般由兩個位置上的RAM組成,裝在主板上的RAM和插在擴展插槽上的RAM。

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

接口卡上的RAM
某些接口卡需要對大批量輸入、輸出數據進行暫時存儲,在其上裝有RAM。最典型的是顯示卡上的RAM,一般稱為顯存。顯示卡隨時將顯存中的數據向顯示器上輸出。換句話說,我們將需要顯示的內容寫入顯存,就會出現在顯示器上。


內存地址空間
上述的各種存儲器,它們在物理上是獨立的器件,但是它們在以下兩點上相同:
1)都和CPU的總線相連;
2)CPU對它們進行讀或寫的時候都通過控制線發現內在讀寫命令。

也就是說,CPU在操縱和控制它們的時候,把它們都當作內存來對待,把它們總的看作一個由若干存儲單元組成的存儲器。
這個邏輯存儲器就是我們所說的內在地址空間。

所有的物理存儲器被看作是一個由若干存儲單元組成的邏輯存儲器,每個物理存儲器在這個邏輯存儲器中占有一個地址段,即一段地址空間。
CPU在這段地址空間中讀寫數據,實際上就是在相對應的物理存儲器中讀寫數據。

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

我們在基于一個計算機硬件系統編程的時候,必須得知道這個系統中的內在地址空間分配情況。

因為當讀者想在某類存儲器中讀寫數據的時候,讀者必須知道它的第一個單元的地址和最后一個單元的地址,才能保證讀寫操作是在預期的存儲器中進行。

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

不同的計算機系統的內存地址空間的分配情況是不同的。

內存地址空間
最終運行程序的是CPU,我們用匯編編程的時候,必須要從CPU角度考慮問題。
對CPU來講,系統中的所有存儲器中的存儲單元都處于一個統一的邏輯存儲器中,它的容量受CPU尋址能力的限制。
這個邏輯存儲器即是我們所說的內存地址空間。













posted on 2010-07-11 14:50 luqingfei 閱讀(759) 評論(0)  編輯 收藏 引用 所屬分類: 匯編語言基礎學習

導航

<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統計

留言簿(6)

隨筆分類(109)

隨筆檔案(105)

Blogers

Game

Life

NodeJs

Python

Useful Webs

大牛

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品jvid在线观看蜜臀| 亚洲国产成人精品女人久久久| 国产精品丝袜久久久久久app | 香蕉久久夜色精品国产| 欧美在线不卡视频| 久久久久国产精品人| 久久精品一区二区三区四区| 久久天堂成人| 欧美国产欧美亚洲国产日韩mv天天看完整 | 性伦欧美刺激片在线观看| 久久爱www.| 欧美高清在线视频| 亚洲日本在线观看| 亚洲欧美国产三级| 另类尿喷潮videofree| 欧美日韩成人综合| 国产亚洲二区| 亚洲靠逼com| 久久久综合网站| 亚洲欧洲视频| 午夜精品一区二区三区电影天堂 | 亚洲欧美不卡| 久久中文在线| 国产精品视频内| 亚洲精品综合久久中文字幕| 羞羞答答国产精品www一本| 欧美 日韩 国产精品免费观看| av成人天堂| 女人色偷偷aa久久天堂| 国产美女一区二区| 夜夜嗨av一区二区三区网页| 久久亚裔精品欧美| 亚洲一区二区在线看| 欧美激情片在线观看| 一色屋精品视频免费看| 亚洲欧美在线另类| 日韩一区二区精品葵司在线| 久久嫩草精品久久久精品一| 国产欧美一区二区白浆黑人| 在线亚洲精品福利网址导航| 欧美激情片在线观看| 久久激情五月激情| 国产精品一区二区三区久久久| 亚洲美女免费精品视频在线观看| 久久亚洲精品伦理| 午夜欧美电影在线观看| 国产精品久久久久久亚洲毛片| 亚洲日本视频| 亚洲电影免费观看高清完整版在线观看| 性欧美精品高清| 国产精品一区二区久久精品| 亚洲午夜精品久久| aⅴ色国产欧美| 亚洲欧美怡红院| 另类综合日韩欧美亚洲| 久久夜色精品国产欧美乱| 欧美二区在线| 一区二区电影免费观看| 国产尤物精品| 999亚洲国产精| 国产专区一区| 亚洲欧洲在线视频| 欧美一级片一区| 亚洲激情一区二区三区| 久色成人在线| 亚洲第一在线综合网站| 美女91精品| 美女精品国产| 最新成人在线| 亚洲精品日韩久久| 国产精品红桃| 久久精品国产成人| 久久久免费精品| 日韩视频在线一区二区| 日韩午夜精品| 国产视频一区二区在线观看| 久久免费视频网站| 女仆av观看一区| 亚洲一区日韩在线| 欧美亚洲一区二区在线观看| 经典三级久久| 亚洲毛片在线| 国产日韩精品视频一区二区三区| 老司机精品久久| 欧美另类变人与禽xxxxx| 亚洲综合视频1区| 久久精品视频va| 日韩午夜三级在线| 亚洲欧美日韩精品久久久| 亚洲第一毛片| 亚洲色图制服丝袜| 怡红院精品视频| 一本色道久久综合亚洲精品不卡| 国产日韩免费| 亚洲精品乱码久久久久久久久| 国产精品夜夜夜一区二区三区尤| 嫩草成人www欧美| 国产精品二区在线| 欧美电影资源| 国产精品一级久久久| 欧美激情综合| 国产一区高清视频| 99精品欧美一区二区三区综合在线| 国产人成一区二区三区影院| 最新国产成人av网站网址麻豆| 国产日本欧美在线观看| 亚洲片区在线| 亚洲国产精品高清久久久| 亚洲资源在线观看| 亚洲私人黄色宅男| 欧美精品一区二区三区视频| 国产精品国产三级国产aⅴ入口| 久久久精品一品道一区| 国产精品成人午夜| 亚洲欧洲美洲综合色网| 国产在线视频欧美一区二区三区| 99综合精品| 一本色道久久综合| 欧美成人免费全部观看天天性色| 久久九九精品| 国产精品色在线| 在线视频一区观看| 亚洲视屏在线播放| 欧美日韩精品欧美日韩精品| 亚洲电影免费观看高清完整版| 一区二区视频免费在线观看| 午夜在线电影亚洲一区| 先锋亚洲精品| 国产精品欧美久久| 亚洲一级电影| 午夜在线精品偷拍| 国产精品女人久久久久久| 一个人看的www久久| 一本一道久久综合狠狠老精东影业| 老司机免费视频久久| 欧美r片在线| 亚洲国产精品久久人人爱蜜臀 | 亚洲欧美日韩精品久久久久| 欧美日韩极品在线观看一区| 日韩视频精品在线| 这里是久久伊人| 欧美图区在线视频| 亚洲一区二区三区午夜| 午夜在线不卡| 国产一区在线观看视频| 久久国产精品毛片| 牛牛影视久久网| 亚洲精品视频在线看| 欧美日本中文字幕| 中文欧美日韩| 久久久人成影片一区二区三区| 国内在线观看一区二区三区| 久久天堂成人| 亚洲久久成人| 欧美在线观看视频一区二区三区 | 欧美高清视频一二三区| 亚洲国产天堂久久综合| 一区二区三区国产精品| 国产精品每日更新| 久久久99国产精品免费| 亚洲国产精品一区二区www| 一本色道久久综合狠狠躁篇怎么玩 | 欧美在线一二三四区| 国模精品一区二区三区色天香| 久久久久久日产精品| 亚洲精品日韩欧美| 久久精品中文字幕一区| 91久久极品少妇xxxxⅹ软件| 欧美性视频网站| 男女av一区三区二区色多| 99re66热这里只有精品3直播 | 亚洲激情啪啪| 国产精品色午夜在线观看| 久久久久久久久久久久久9999| 亚洲三级色网| 久久嫩草精品久久久精品一| 亚洲美女免费精品视频在线观看| 国产日韩精品在线| 欧美激情一区二区三区成人| 亚洲欧美欧美一区二区三区| 欧美激情一区二区三区高清视频| 小辣椒精品导航| 一本大道久久a久久综合婷婷| 国产视频在线一区二区| 欧美日韩激情网| 免费亚洲电影在线| 久久电影一区| 制服丝袜亚洲播放| 亚洲韩国一区二区三区| 久久综合色8888| 欧美在线短视频| 亚洲天天影视| 日韩视频在线观看免费| 亚洲第一色中文字幕| 国产伦精品一区二区三区免费迷 | 欧美成人性网| 久久蜜桃精品| 久久久久成人精品| 久久爱91午夜羞羞| 先锋影院在线亚洲|