寄存器(CPU工作原理)03 - 零基礎入門學習匯編語言08

第二章:寄存器(CPU工作原理)03

?

讓編程改變世界

Change the world by program


?

物理地址

CPU訪問內存單元時要給出內存單元的地址。所有的內存單元構成的存儲空間是一個一維的線性空間。 我們將這個唯一的地址稱為物理地址。 ?

16位結構的CPU

概括的講,16位結構描述了一個CPU具有以下幾個方面特征: 1、運算器一次最多可以處理16位的數據。 2、寄存器的最大寬度為16位。 3、寄存器和運算器之間的通路是16位的。 ?

8086CPU給出物理地址的方法

8086有20位地址總線,可傳送20位地址,尋址能力為1M。 8086內部為16位結構,它只能傳送16位的地址,表現出的尋址能力卻只有64K。 ?

問題:那么,8086CPU如何用內部16位的數據轉換成20位的地址呢?

自問自答:8086CPU采用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址~ [caption id="attachment_257" align="aligncenter" width="300"] 8086CPU如何用內部16位的數據轉換成20位的地址[/caption] ?

8086CPU讀寫內存時,發生了這么一些事:

CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;

段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件;

地址加法器將兩個16位地址合并成一個20位的地址;

?

地址加法器工作原理

? 地址加法器合成物理地址的方法:物理地址=段地址×16+偏移地址 例如:8086CPU訪問地址為123C8H的內存單元 [caption id="attachment_258" align="aligncenter" width="300"] 8086CPU訪問地址為123C8H的內存單元[/caption] ? 由段地址×16引發的血案…… “段地址×16”有一個更為常用的說法就是數據左移4位。(二進制位) [caption id="attachment_259" align="aligncenter" width="300"] 進制轉換[/caption] ? 我們通過觀察移位次數和各種形式數據的關系:

一個數據的二進制形式左移1位,相當于該數據乘以2;

一個數據的二進制形式左移N位,相當于該數據乘以2的N次方;

地址加法器如何完成段地址×16的運算?沒錯,以二進制形式存放的段地址左移4位。

? 一個饅頭引發的分析…… 經過進一步的思考,我們可以看出:

一個數據的十六進制形式左移1位,相當于乘以16;

一個數據的十進制形式左移1位,相當于乘以10;

一個數據的X進制形式左移1位,相當于乘以X。

?

“段地址×16+偏移地址=物理地址”的本質含義

?

兩個比喻說明:

說明“基礎地址+偏移地址 = 物理地址” 的思想:第一個比喻 比如說,學校、體育館同在一條筆直的單行路上(學校位于路的起點0米處)。 讀者在學校,要去圖書館,問我那里的地址,我可以用幾種方式描述這個地址? [caption id="attachment_260" align="aligncenter" width="300"] 段地址×16+偏移地址=物理地址[/caption] (1)從學校走2826m到圖書館。這2826可以認為是圖書館的物理地址。 (2)從學校走2000m到體育館,從體育館再走826m到圖書館。 第一個距離2000m是相對于起點的基礎地址; 第二個距離826m是將對于基礎地址的偏移地址。 ? 說明“段地址×16+偏移地址=物理地址”的思想:第二個比喻 比如我們只能通過紙條來通信,讀者問我圖書館的地址,我只能將它寫在紙上告訴讀者。 顯然我必須有一張可以容納 4 位數據的紙條才能寫下2826這個數據: [caption id="attachment_261" align="aligncenter" width="235"] 段地址×16+偏移地址=物理地址[/caption] ? 不巧的是,沒有能容納4位數據的紙條,僅有兩張可以容納3位數據的紙條。 這樣我只能以這種方式告訴讀者2826這個數據: [caption id="attachment_262" align="aligncenter" width="261"] 段地址×16+偏移地址=物理地址[/caption] ? 8086CPU就是這樣一個只能提供兩張3位數據紙條的CPU。 [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://kuai.xunlei.com/d/LPOBVJBHIWMY']視頻下載[/Downlink]

轉載于:https://www.cnblogs.com/LoveFishC/archive/2010/11/02/3845977.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378895.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378895.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378895.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

判別Linux是CentOs還是Ubuntu的最簡單方法

在終端執行以下兩條命令即可 CentOs:yum -help Ubuntu:apt-get -help

threadgroup_Java ThreadGroup toString()方法與示例

threadgroupThreadGroup類的toString()方法 (ThreadGroup Class toString() method) toString() method is available in java.lang package. toString()方法在java.lang包中可用。 toString() method is used to returns string denotation of this thread group (i.e. this m…

240多個jQuery插件

文件上傳(File upload)Ajax File Upload.jQUploader.Multiple File Upload plugin. jQuery File Style.Styling an input type file.Progress Bar Plugin.表單驗證(Form Validation)jQuery Validation.Auto Help.Simple jQuery form validation.jQuery XAV - form validations…

解壓縮命令

.Tar.gz 解壓:Tar zxvf FileName.Tar.gz 壓縮:Tar zcvf FileName.Tar.gz DirName 大致總結了一下Linux下各種格式的壓縮包的壓縮、解壓方法。但是部分方法我沒有用到,也就不全,希望大家幫我補充,我將隨時修改完善&…

Anaconda下安裝OpenCV和Tensorflow(最簡潔高效的方法)

安裝Tensorflow 1,打開Anaconda Navigator 2,手動創建tensorflow環境,這個和你的python版本號一致哈(方法一第一步之后,輸入python即可查看當前的版本) 3,手動搜索并下載添加 4,…

Java System類console()方法及示例

系統類console()方法 (System class console() method) console() method is available in java.lang package. console()方法在java.lang包中可用。 console() method is used to return the console object which is uniquely associated with the current JVM(Java Virtual …

使用FD_CLOEXEC實現close-on-exec,關閉子進程無用文件描述符

我們經常會碰到需要fork子進程的情況,而且子進程很可能會繼續exec新的程序。這就不得不提到子進程中無用文件描述符的問題! fork函數的使用本不是這里討論的話題,但必須提一下的是:子進程以寫時復制(COW,C…

mysql_result 對應mysqli哪個_php – 如何在mysqli中轉換mysql_result?

這個代碼以前是在mysql中,現在因為它已被棄用,我決定在mysqli中轉換我的代碼,但是我在我的頁面中有這個問題有分頁,在它使用mysql之前沒有錯誤,但現在我得到了這一行出錯:Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given錯誤是顯而易見的,我知…

Anaconda中下載速度賊慢?

清華鏡像 大致步驟如下: 1,windsR輸入cmd,打開命令終端頁面 輸入conda config --set show_channel_urls yes 2,在相應的C盤目錄下會生成.condarc文件 3,用記事本或者notepad打開進行替換 channels:- defaults show_c…

Delphi面向對象學習隨筆八:物理封裝

作者:巴哈姆特http://www.cnpack.org(轉載請注明出去并保持完整)前面說過的封裝其實是邏輯意義上的封裝。邏輯封裝是對某一特定邏輯功能模塊的封裝,這個特定邏輯功能塊可以是一個類,當然也可以是一個包,他們…

java 方法 示例_Java掃描器具有示例的NextNextShort()方法

java 方法 示例掃描器類的hasNextShort()方法 (Scanner Class hasNextShort() method) Syntax: 句法: public boolean hasNextShort();public boolean hasNextShort(int rad);hasNextShort() method is available in java.util package. hasNextShort()方法在java.…

mysql創建表時出現1071_mysql 出現1071錯誤怎么辦

mysql 出現1071錯誤的解決辦法:該問題是由鍵值字段長度過長導致。mysql支持數據庫表單一鍵值的最大長度不能超過767字節,超出這個長度即報錯(見標題名稱)。一般情況下,不會有鍵值字段的長度會超出該長度。但是需要注意的是,隨著全…

srs rtmp從監聽到接收到新連接的過程分析

:分析srs從啟動開始的main入口開始。分析rtmp監聽端口,然后到接收到新rtmp連接的過程分析。 目錄一、流程圖二、代碼分析1、srs_main_server.cpp:main()2、srs_main_server.cpp:do_main()3、srs_main_server.cpp:run()4、srs_main_server.cpp:run_master…

OpenCV筆記(基于Python)

學習時,將每塊注釋分別去掉即為一個模塊知識點 圖像數字化 import numpy as np """ #二維的ndarry #兩行四列全是0的uchar類型的二維數組 z np.zeros((2,4),np.uint8) print(type(z)) print(z) print("\n")#兩行四列全是1的整型矩陣 o …

POJ 1222 1681 1830 3185 開關燈問題 (高斯消元 異或方程組)

POJ 1222 EXTENDED LIGHTS OUT 基本的開關燈問題.還保證唯一解. 我們把每一個燈泡當成一個狀態xi,總共有30個,而且每個燈與其他燈的關系也很明顯。所以我們就可以列30方程30個變元的方程組: xi 1 * xi 1 * x(i-1) 1 * x(i1) 1 * x(i-6) …

我看周馬,以及3Q大戰背后的社會問題

如今鬧得不可開交的3Q大戰已經成了一道獨特的風景線,讓我們在茶余飯后又增添了不少談資。這兩個中國最大的客戶端軟件提供商各有擁躉無數,雙方鉚足了勁相互吐口水、扔磚頭,現在貌似到了動刀子了。周、馬在媒體上也都將自己標榜為“美貌與智慧…

Java PushbackReader ready()方法與示例

PushbackReader類ready()方法 (PushbackReader Class ready() method) ready() method is available in java.io package. ready()方法在java.io包中可用。 ready() method is used to check whether this stream is ready to be read or not. ready()方法用于檢查此流是否已準…

mysql數據庫知識點梳理_MySQL數據庫知識點整理 (持續更新中)

一、修改用戶密碼格式(在命令行下輸入):mysqladmin -u 用戶名 -p舊密碼 password 新密碼1. 給root添加密碼ab12: mysqladmin -uroot -password ab122. 將root的密碼修改為djg345: mysqladmin -uroot -pab12 password djg345二、添加新用戶格式:grant…

加載一張照片,可選擇是否另存為

加載一張照片,按下S鍵保存,ESC退出 加載一個灰度圖(E:\Python-workspace\yanyu.png),顯示圖片按下’s’鍵保存(beyond.png)(保存后的路徑和該程序所在路徑一致)后退出,或者按下 ESC 鍵退出不保存 import cv2img cv2.imread(E:\…

RTMP代理的協議規范(RtmpProxy)

RtmpProxy 關于RTMP代理的協議規范。RTMP是字節協議,第一個包是c0,1個字節,一般是03表示是明文的RTMP。所以如果需要做RTMP代理,如果直接轉發RTMP客戶端的消息,是沒法傳遞額外的信息的,譬如HTTP代理在Head…