




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、匯編語言課件第2章 寄存器(CPU工作原理)n2.1 通用寄存器n2.2 字在寄存器中的存儲n2.3 幾條匯編指令n2.4 物理地址n2.5 16位結構的CPUn2.6 8086CPU給出物理地址的方法n2.7 “段地址16+偏移地址 =物理地址”的本質含義n2.8 段的概念n2.9 段寄存器n2.10 CS和IPn2.12 代碼段CPU概述n一個典型的CPU由運算器、控制器、寄存器等器件組成,這些器件靠內部總線相連。n內部總線實現CPU內部各個器件之間的聯系。n外部總線實現CPU和主板上其它器件的聯系。寄存器概述n含14個16位寄存器,按功能可分為三類 8個通用寄存器 4個段寄存器 2個控制
2、寄存器n它們的名稱為: AX、BX、CX、DX、SI、DI、SP、BP、 IP、CS、SS、DS、ES、PSW。5通用寄存器 數據寄存器(AX,BX,CX,DX) 地址指針寄存器(SP,BP) 變址寄存器(SI,DI)2.1 通用寄存器n8086CPU所有的寄存器都是16位的,可以存放兩個字節。nAX、BX、CX、DX 通常用來存放一般性數據被稱為通用寄存器。n下面以AX為例,我們看一下寄存器的邏輯結構。n一個16位寄存器可以存儲一個16位的數據。(數據的存放情況)n一個16位寄存器所能存儲的數據的最大值為多少? 答案:216-1。2.1 通用寄存器16位數據在寄存器中的存放情況n數據:18n
3、二進制表示:10010n在寄存器AX中的存儲:16位數據在寄存器中的存放情況n數據:20000n二進制表示:0100111000100000n在寄存器AX中的存儲:2.1 通用寄存器n8086上一代CPU中的寄存器都是8位的;n為保證兼容性,這四個寄存器都可以分為兩個獨立的8位寄存器使用。nAX可以分為AH和AL;nBX可以分為BH和BL;nCX可以分為CH和CL;nDX可以分為DH和DL。n8086CPU的8位寄存器存儲邏輯2.1 通用寄存器n以AX為例,8086CPU的16位寄存器分為兩個8位寄存器的情況:2.1 通用寄存器nAX的低8位(0位7位)構成了AL寄存器,高8位(8位15位)構
4、成了AH寄存器。nAH和AL寄存器是可以獨立使用的8位寄存器。n8086CPU的8位寄存器數據存儲情況n一個8位寄存器所能存儲的數據的最大值是多少? 答案:28-1。2.1 通用寄存器2.2 字在寄存器中的存儲n一個字可以存在一個16位寄存器中,這個字的高位字節和低位字節自然就存在這個寄存器的高8位寄存器和低8位寄存器中。關于數制的討論n由于一個內存單元可以存放 8位數據,CPU中的寄存器又可存放 n 個 8位數據。也就是說,計算機中的數據大多 是由1N個8位數據構成的。n用十六進制來表示數據可以直觀的看 出這個數據是由哪些8位數據構成的。2.3 幾條匯編指令匯編指令不區分大小寫12.3 幾條
5、匯編指令nCPU執行下表中的程序段的每條指令后,對寄存器中的數據進行的改變。2.3 幾條匯編指令地址寄存器地址寄存器 n包括指針和變址寄存器包括指針和變址寄存器SI、DI、SP、BP四個四個16位寄存器。顧名思義,它們位寄存器。顧名思義,它們可用來存放存儲器的偏移地址。另外,可用來存放存儲器的偏移地址。另外,它們也可以作為通用寄存器用。嚴格它們也可以作為通用寄存器用。嚴格地說,用來存放存儲器偏移地址的寄地說,用來存放存儲器偏移地址的寄存器都應該叫地址寄存器,如存器都應該叫地址寄存器,如BX基址基址寄存器、寄存器、IP指令指針寄存器等。指令指針寄存器等。nSI 源變址寄存器,可用于存放源緩源變址
6、寄存器,可用于存放源緩沖區的偏移地址。沖區的偏移地址。nDI 目的變址寄存器,可用于存放目目的變址寄存器,可用于存放目的緩沖區的偏移地址。的緩沖區的偏移地址。SP 堆棧指針寄存器,用于指出堆棧區的棧頂的偏移地址。BP 基址指針寄存器,用于指出堆棧區的某個單元的偏移地址。nCS 代碼段寄存器,用于指出存放程代碼段寄存器,用于指出存放程序的代碼段的段地址。序的代碼段的段地址。nDS 數據段寄存器,用于指出存放數數據段寄存器,用于指出存放數據的數據段的段地址。據的數據段的段地址。nES 附加段寄存器,用于指出存放附附加段寄存器,用于指出存放附加數據的附加段的段地址。加數據的附加段的段地址。nSS 堆
7、棧段寄存器,用于指出堆棧區堆棧段寄存器,用于指出堆棧區的堆棧段的段地址。的堆棧段的段地址。段寄存器段寄存器 控制寄存器控制寄存器 溢出標志 方向標志 中斷標志 跟蹤標志 符號標志 零標志 輔助進位標志 奇偶標志 進位標志 IP 指令指針寄存器:用來存放代碼段中的偏移地址,指出當前正在執行指令的下一條指令所在單元的偏移地址。nFLAGS標志寄存器:其中的某位代表標志寄存器:其中的某位代表CPU的一個標的一個標志,最低位為志,最低位為D0,最高位為,最高位為D15。8086CPU的標的標志寄存器共有志寄存器共有9個標志,分別為個標志,分別為6個條件碼標志和個條件碼標志和3控制標志。其含義如下:控制
8、標志。其含義如下: n例例1 兩個二進制數相加運算,有關標志兩個二進制數相加運算,有關標志位自動發生變化。位自動發生變化。 10011010+ 01001011 11100101nCPU會自動地把標志位設為:會自動地把標志位設為:CF=0,SF=1,ZF=0,OF=0,即無進位,結,即無進位,結果為負數,結果不為果為負數,結果不為0,沒有溢出。,沒有溢出。 標志名標志值為1值為0進位標志CFCYNC符號標志SFNGPL零標志ZFZRNZ溢出標志OFOVNV輔助進位標志AFACNA奇偶標志PFPEPO方向標志DFDNUP中斷標志IFEIDI2.4 物理地址nCPU訪問內存單元時要給出內存單元的地
9、址。所有的內存單元構成的存儲空間是一個一維的線性空間。每一個內存單元在這個空間中都有唯一的地址,這個唯一的地址稱為物理地址。2.5 16位結構的CPUn概括的講,16位結構描述了一個CPU具有以下幾個方面特征:n1、運算器一次最多可以處理16位的數據。n2、寄存器的最大寬度為16位。n3、寄存器和運算器之間的通路是16位的。2.6 8086CPU給出物理地址的方法n8086有20位地址總線,可傳送20位地址,尋址能力為1M。n8086內部為16位結構,它只能傳送16位的地址,表現出的尋址能力卻只有64K。2.6 8086CPU給出物理地址的方法n8086CPU采用一種在內部用兩個16位地址合成
10、的方法來形成一個20位的物理地址。n8086CPU相關部件的邏輯結構在8086CPU內部用兩個16位地址合成的方法來形成一個20位的物理地址地址加法器n地址加法器合成物理地址的方法: 物理地址=段地址16+偏移地址 物理地址=段地址10H+偏移地址n例如: 8086CPU訪問地址為123C8H的內存單元 由段地址16引發的討論n觀察移位次數和各種形式數據的關系:n(1)一個數據的二進制形式左移1位,相當于該數據乘以2;n(2)一個數據的二進制形式左移N位,相當于該數據乘以2的N次方;n(3)地址加法器如何完成段地址16的運算? 以二進制形式存放的段地址左移4位。由段地址16引發的討論2.7 “
11、段地址16+偏移地址=物理地址”的本質含義n兩個比喻說明:n說明“基礎地址+偏移地址 = 物理地址” 的思想:第一個比喻n說明“段地址16+偏移地址=物理地址”的思想:第二個比喻 8086CPU就是這樣一個只能提供兩張3位數據紙條的CPU。“基礎地址+偏移地址 = 物理地址”n比如說,學校、體育館同在一條筆直的單行路上(學校位于路的起點0米處)。n讀者在學校,要去圖書館,問我那里的地址,我可以用幾種方式描述這個地址?“基礎地址+偏移地址 = 物理地址”n(1)從學校走2826m到圖書館。這2826可以認為是圖書館的物理地址。n(2)從學校走2000m到體育館,從體育館再走826m到圖書館。n第
12、一個距離2000m是相對于起點的基礎地址;n第二個距離826m是將對于基礎地址的偏移地址。“段地址16+偏移地址=物理地址”n比如我們只能通過紙條來通信,讀者問我圖書館的地址,我只能將它寫在紙上告訴讀者。n顯然我必須有一張可以容納 4 位數據的紙條才能寫下2826這個數據:“段地址16+偏移地址=物理地址”n不巧的是,沒有能容納4位數據的紙條,僅有兩張可以容納3位數據的紙條。n這樣我只能以這種方式告訴讀者2826這個數據:2.8 段的概念n錯誤認識:n內存被劃分成了一個一個的段,每一個段有一個段地址。n其實:n內存并沒有分段,段的劃分來自于CPU,由于8086CPU用“(段地址16)+偏移地址
13、=物理地址”的方式給出內存單元的物理地址,使得我們可以用分段的方式來管理內存。2.8 段的概念n我們可以認為:地址10000H100FFH的內存單元組成一個段,該段的起始地址( 基礎地址)為10000H,段地址為1000H,大小為100H。2.8 段的概念n我們也可以認為地址10000H1007FH、10080H100FFH 的內存單元組成兩個段,它們的起始地址( 基礎地址 )為10000H和10080H,段地址為:1000H 和1008H,大小都為80H。2.8 段的概念n以后,在編程時可以根據需要,將若干地址連續的內存單元看作一個段,用段地址16定位段的起始地址(基礎地址),用偏移地址定位
14、段中的內存單元。n兩點需要注意n內存單元地址小結兩點需要注意n(1)段地址16 必然是 16的倍數,所以一個段的起始地址也一定是16的倍數;n(2)偏移地址為16位,16 位地址的尋址能力為 64K,所以一個段的長度最大為64K。內存單元地址小結nCPU訪問內存單元時,必須向內存提供內存單元的物理地址。n8086CPU在內部用段地址和偏移地址移位相加的方法形成最終的物理地址。n思考兩個問題n(1)觀察下面的地址,讀者有什么發現?n結論:CPU可以用不同的段地址和偏移地址形成同一個物理地址。內存單元地址小結內存單元地址小結n(2)如果給定一個段地址,僅通過變化偏移地址來進行尋址,最多可以定位多少
15、內存單元?n結論:偏移地址16位,變化范圍為0FFFFH,僅用偏移地址來尋址最多可尋64K個內存單元。n比如:給定段地址1000H,用偏移地址尋址,CPU的尋址范圍為:10000H1FFFFH。內存單元地址小結n在8086PC機中,存儲單元的地址用兩個元素來描述。即段地址和偏移地址。n“數據在21F60H內存單元中。”對于8086PC機的兩種描述:n(a)數據存在內存2000:1F60單元中;n(b)數據存在內存的2000段中的1F60H單元中。n可根據需要,將地址連續、起始地址為16的倍數的一組內存單元定義為一個段。2.9 段寄存器n段寄存器就是提供段地址的。 8086CPU有4個段寄存器:
16、CS、DS、SS、ESn當8086CPU要訪問內存時,由這4個段寄存器提供內存單元的段地址。本課件由匯編網()制作提供段的類型段的類型 8086匯編語言中把邏輯段分為四種類型,匯編語言中把邏輯段分為四種類型,分別是代碼段、數據段、附加段和堆棧段。分別是代碼段、數據段、附加段和堆棧段。 各段的邏輯地址對應表:各段的邏輯地址對應表: 段名段名段寄存器段寄存器偏移地址偏移地址代碼段代碼段CSIP數據段數據段DSBX、SI、DI等地址等地址寄存器寄存器附加段附加段ESBX、SI、DI等地址等地址寄存器寄存器堆棧段堆棧段SSSP或或BP例例1段寄存器與其偏移地址如下,寫出其相應段寄存器與其偏移地址如下,
17、寫出其相應的物理地址及含義。的物理地址及含義。nCS=1896H,IP=1655H當前要執行的當前要執行的指令的指令的物理地址物理地址=18960H+1655H=19FB5H DS=2896H,EA=1655H當前要訪問的數據的物理地址=28960H+1655H=29FB5H ES=1896H,EA=2655H當前要訪問的數據的物理地址=18960H+2655H=1AFB5H SS=1896H,SP=3655H當前要訪問的堆棧的物理地址=18960H+3655H=1BFB5H例例2 段寄存器與內存的分段情況如圖。觀察各段寄存器與內存的分段情況如圖。觀察各段的大小及分布,判斷其地址范圍,標出每個
18、段的大小及分布,判斷其地址范圍,標出每個段首地址和末地址。段首地址和末地址。 n代碼段共代碼段共64KB單元,它單元,它的地址范圍應該是的地址范圍應該是210E0H310DFH。n附加段只有附加段只有2KB,地址范,地址范圍在圍在34600H34CFFH之間。之間。n數據段為數據段為16KB,其地址,其地址范圍為范圍為34D00H38CFFH。n堆棧段只有堆棧段只有512個字節單個字節單元,它的地址范圍是元,它的地址范圍是84180H8437FH。 你懂了嗎?本課件由匯編網()制作提供因為是重點所以再重復一次:地址加法器的工作原理 可表示為: 物理地址PA = 段地址 偏移地址 = ( 段寄存
19、器 ) 16 + 偏移地址 = ( 段寄存器 ) 10H + 偏移地址即段寄存器的內容左移4位,加上偏移地址 DSESSSCSIP地地址址總總線線AB地地址址加加法法器器本課件由匯編網()制作提供物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 10H + 偏移地址l 段寄存器有4個: DS、ES、CS、SSl 偏移地址由 IP、SP、BX、BP、SI、DI 或一個8位或16位二進制數得到。 這種存儲器管理方式叫分段編址。 DSESSSCSIP地地址址總總線線AB地地址址加加法法器器本課件由匯編網()制作提供物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 10H + 偏移地址
20、 或段寄存器的內容左移4位,加上偏移地址 例:某內存單元的段地址由DS、偏移地址由BX給出。 若( DS) = 2000H, ( BX) = 1000H,計算其物理地址。 PA = ( DS ) 10H + ( BX ) = 2000H 10H + 1000H = 21000H 2 20 00 00 00 0H H+ + 1 10 00 00 0H H 2 21 10 00 00 0H H 0 00 01 10 0 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0B B + + 0 00 00 01 1 0 00 00 00 0 0 00
21、00 00 0 0 00 00 00 0B B 0 00 01 10 0 0 00 00 01 1 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0B B本課件由匯編網()制作提供要點:(段地址由16位的段寄存器給出,可將段地址直接用16位表示)l 物理地址20位,段地址20位,偏移地址16位。物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 10H + 偏移地址l 由16位段寄存器決定有216 = 64 K個段值 由16位偏移地址決定每個段的大小為0 64K 每個段最大64 K,但不一定是64 K,可據需要分配。本課件由匯編網()制作提供20 根地址線:
22、地址范圍 00000H FFFFFH (1MB)機器字長16位:僅能表示地址范圍 0000H FFFFH (64KB)小段:每16個字節為一小段,共有64K個小段 小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0 H FFFFF H 段起始地址:小段首地址段的大小: 64K 范圍內的任意字節本課件由匯編網()制作提供l 用( )表示內存單元的內容:( 21000H ) = 0FH( 2000:1000H ) = 0FH( DS:BX ) = 0FHl 內存單元物理地址的幾種表示方法: PA 21000H 2000:1000H DS:BX.0FhFFh56h.21000H內存DS:BX2000:1000H本課件由匯編網()制作提供l 每個內存單元有唯一的物理地址, 但可由不同的段地址和偏移地址構成。例 某內存操作的段值由 DS 給出,偏移值由BX給出。若 ( DS ) = 1000H ,( BX ) = 0150H, 則:PA = ( DS ) 10H + ( BX ) = 1000 H 10H + 0150H = 10150H若 ( DS ) = 1010H ,( BX ) = 0050H, 則:PA = ( DS ) 10H + ( BX ) = 1010 H 10H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校派遣工管理制度
- 學校綠化員管理制度
- 學生星級化管理制度
- 學齡前培訓管理制度
- 安全注射室管理制度
- 安徽生育證管理制度
- 宏寶萊公司管理制度
- 實行項目庫管理制度
- 實驗室試樣管理制度
- 室內籃球場管理制度
- 鋼絲繩計算書
- 工資條(標準模版)
- 裝配式電纜溝施工方案
- 山東省省直機關公開遴選公務員筆試模擬真題及答案解析
- J22J262 被動式超低能耗建筑節能構造(九)(鋼絲網架珍珠巖復合保溫板)DBJT02-215-2022
- 常用英語趣味習慣用語
- 新編建筑施工扣件式鋼管腳手架安全技術規范
- html5設計論文參考文獻(范例50個),參考文獻
- 俄羅斯文學導論智慧樹知到答案章節測試2023年黑龍江大學
- 全國各大銀行及支行聯行號查詢
- 物業工程人員服務意識培訓
評論
0/150
提交評論