天天看點

彙編學習筆記:基礎知識,CPU對存儲器的讀寫

CPU(central processing unit):中央處理單元。

每一種微處理器,由于硬體設計和内部結構的不同,就需要用不同的電平脈沖來控制,使它工作。

是以,每一種微處理器都有自己的機器指令集,也就是機器語言。

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

程式員用彙編語言寫出的源程式,再用彙編編譯器将其編譯為機器碼,由計算機最終執行。

彙編語言的組成:

1:彙編指令:機器碼的助記符,有對應的機器碼。

2:僞指令:沒有對應的機器碼,由編譯器執行,計算機并不執行。

3:其他符号:如+、-、*、/等,由編譯器識别,沒有對應的機器碼。

bit(位) byte(位元組) kb(千位元組) mb(兆) gb(千兆位元組) 

B即Byte,音譯拜特,位元組的意思,一般以位元組作為計算機存儲容量基本機關。1個位元組是8個二進制位(8個二進制位組成1個位元組),即1Byte=8bit(八個位的組合,共有256種電路狀态)。1個數字=1個英文字母(字元)=1位元組(Byte),即一個标準英文字母就是一個位元組,它有8個比特(bit),(如A為10D,用00001010來表示,8個二進制位)。1個漢字=2個位元組,即一個标準漢字有2個位元組,8個bit一個位元組,也就是說在計算機裡1個漢字要用16個bit來表示。另外中文标點符号占2個位元組,英文标點符号(,.?!%&+-*/),占1個位元組,中文省略号(……)和括(破折)号(——)各占4個位元組。

==============基礎知識,CPU對存儲器的讀寫===========================

存儲器被劃分為若幹個存儲單元,每個單元從0開始順序編号;

一個存儲單元能存儲1個byte,即8個二進制位!

位元組(Byte)是計算機資訊技術用于計量存儲容量和傳輸容量的一種計量機關,一個位元組等于8位二進制數。

CPU要想進行資料的讀寫,必須和外部器件進行下面3類資訊的互動:

1:存儲單元的位址(位址資訊)

2:器件的選擇,讀或寫的指令(控制資訊)

3:讀或寫的資料(資料資訊)

CPU通過總線實作對存儲器的讀寫操作!!!!!

【位址總線】

位址總線的寬度決定了CPU的尋址能力;(通俗的講就是能尋找多少個存儲單元)

一個CPU有N跟位址總線,則這個CPU的位址總線的寬度就為N,那麼CPU最多可以尋找2的N次方個記憶體單元(byte);

問題一:比如說一個CPU的尋址能力是8kb,那麼這個CPU的位址總線的寬度是?

解答:現在尋址能力為8kb,1kb=1024byte,8kb也就是8×1024byte = 8192byte,也就是能尋找8192個存儲單元!

2的X次方等于8192;那麼求出X=13,位址總線的寬度就是13.(怎麼求的我也不知道,我是用電腦直接算的log2函數)

問題二:計算尋址能力(注意是尋址能力,而不是傳輸能力!!!)

有16跟位址總線,2^16=65536(byte,這的byte機關是存儲器的機關,為了友善表示,就轉換成kb,千位元組) / 1024 = 64kb;

有20跟位址總線,2^20=1048576(byte) / 1024 / 1024 =  1mb;

有24跟位址總線,2^24=16777216(byte) / 1024 / 1024 = 16mb;

有32跟位址總線,2^32=4294967296(byte) / 1024 / 1024 / 1024 = 4GB

補充:一個存儲單元能存儲一個byte,那麼65536個byte就等于64kb。

【資料總線】

資料總線的寬度決定了CPU與外界的資料傳輸速度;

CPU與記憶體或者其他部件之間的資料傳輸是通過資料總線來進行的。

一根線能傳輸一個比特(bit),八根線一次就能傳輸8位二進制資料(即一個位元組,Byte),16跟一次可以傳輸兩個位元組!

【控制總線】

CPU對外部器件的控制是通過控制總線來完成的。控制總線的寬度決定了CPU對外部器件的控制能力;

控制總線主要用來傳送控制信号和時序信号。

控制信号中,有的是CPU送往存儲器和輸入輸出裝置接口電路的,如讀/寫信号,片選信号、中斷響應信号等;

也有是其它部件回報給CPU的,比如:中斷申請信号、複位信号、總線請求信号、裝置就緒信号等。

是以,控制總線的傳送方向由具體控制信号而定,一般是雙向的,控制總線的位數要根據系統的實際控制需要而定。

實際上控制總線的具體情況主要取決于CPU。

從記憶體中讀取1024位元組的資料,8086至少要讀幾次?

解讀:讀寫資料,通過資料總線傳輸,8086有16跟位址總線,一次可以傳輸2位元組(byte)。

1024/2=512. 是以,至少要讀取512次。

繼續閱讀