電腦原始語言——彙編

來源:互聯網
上載者:User

標籤:指標   連續   圖片   定址   指令   計算   進位   16px   程式碼片段   

8086的定址方式
  • CPU訪問記憶體單元時,要給出記憶體單元的地址,所有的記憶體單元都有唯一的地址,叫做物理地址

  • 8086有20位地址匯流排,可以傳送20位的地址,1M的定址能力

  • 但它又是16位結構的CPU,它內部能夠一次性處理、傳輸、暫時儲存的地址為16位。如果將地址從內部簡單地發出,那麼它只能送出16位的地址,表現出來的定址能力只有64KB

8086採用一種在內部用2個16位地址合成的方法來產生1個20位的物理地址

image.png

image.png

image.png

image.png

記憶體分段管理
  • 8086是用“基礎地址(段地址×16) + 位移地址 = 物理地址”的方式給出物理地址

  • 為了開發方便,我們可以採取分段的方法來管理記憶體,比如:

image.png

  • 地址10000H~100FFH的記憶體單元組成一個段,該段的起始地址(基礎地址)為10000H,段地址為1000H,大小為100H

  • 地址10000H1007FH、10080H100FFH的記憶體單元組成2個段,它們的起始地址(基礎地址)為:10000H和10080H,段地址為1000H和1008H,大小都為80H

  • 在編程時可以根據需要,將若干連續地址的記憶體單元看做一個段,用段地址×16定為段的起始地址(基礎地址),用位移地址定位段中的記憶體單元

  • 段地址×16必然是16的倍數,所以一個段的起始地址(基礎地址)也一定是16的倍數

  • 位移地址為16位,16位地址的定址能力為64KB,所以一個段的長度最大為64KB

image.png

段寄存器
  • 8086在訪問記憶體時要由相關組件提供記憶體單元的段地址和位移地址,送入地址加法器合成物理地址

  • 是什麼組件提供段地址?段地址在8086的段寄存器中存放

  • 8086有4個段寄存器:CS、DS、SS、ES,當CPU需要訪問記憶體時由這4個段寄存器提供記憶體單元的段地址

  • CS (Code Segment):程式碼片段寄存器

  • DS (Data Segment):資料區段寄存器

  • SS (Stack Segment):堆棧段寄存器

  • ES (Extra Segment):附加段寄存器

CS和IP
  • CS為程式碼片段寄存器,IP為指令指標寄存器,它們指示了CPU當前要讀取指令的地址

  • 任意時刻,8086CPU都會將CS:IP指向的指令作為下一條需要取出執行的指令

image.png

image.png

指令的執行過程

12

13

14

15

16

17

18

19

21

22

23

24

25

26

總結

指令和資料
  • 在記憶體或者磁碟上,指令和資料沒有任何區別,都是二進位資訊

  • CPU在工作的時候把有的資訊看做指令,有的資訊看做資料,為同樣的資訊賦予了不同的意義

image.png

  • CPU根據什麼將記憶體中的資訊看做指令?

  • CPU將CS:IP指向的記憶體單元的內容看做指令

  • 如果記憶體中的某段內容曾被CPU執行過,那麼它所在的記憶體單元必然被CS:IP指向過

jmp指令
  • CPU從何處執行指令是由CS、IP中的內容決定的,我們可以通過改變CS、IP的內容來控制CPU執行目標指令

  • 8086提供了一個mov指令(傳送指令),可以用來修改大部分寄存器的值,比如

  • mov ax,10、mov bx,20、mov cx,30、mov dx,40

  • 但是,mov指令不能用於設定CS、IP的值,8086沒有提供這樣的功能

  • 8086提供了另外的指令來修改CS、IP的值,這些指令統稱為轉移指令,最簡單的是jmp指令

image.png

image.png

jmp指令 -- 練習

![image.png](http://upload-images.jianshu.io/upload_images/2990730-fde7c6e8497e3ffd.png?imageMogr 2/auto-orient/strip%7CimageView2/2/w/1240)

image.png

image.png

程式碼片段

image.png

image.png

image.png

image.png

本文hank


電腦原始語言——彙編

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.