匯編(三)

8086的尋址方式

  • CPU訪問內(nèi)存單元時,要給出內(nèi)存單元的地址,所有的內(nèi)存單元都有唯一的地址,叫做物理地址
  • 8086有20位地址總線,可以傳送20位的地址,1M的尋址能力
  • 但它又是16位結構的CPU,它內(nèi)部能夠一次性處理、傳輸、暫時存儲的地址為16位。如果將地址從內(nèi)部簡單地發(fā)出,那么它只能送出16位的地址,表現(xiàn)出來的尋址能力只有64KB

8086采用一種在內(nèi)部用2個16位地址合成的方法來生成1個20位的物理地址


image.png
image.png
image.png
image.png

內(nèi)存分段管理

  • 8086是用“基礎地址(段地址×16) + 偏移地址 = 物理地址”的方式給出物理地址
  • 為了開發(fā)方便,我們可以采取分段的方法來管理內(nèi)存,比如:
image.png

地址10000H~100FFH的內(nèi)存單元組成一個段,該段的起始地址(基礎地址)為10000H,段地址為1000H,大小為100H
地址10000H1007FH、10080H100FFH的內(nèi)存單元組成2個段,它們的起始地址(基礎地址)為:10000H和10080H,段地址為1000H和1008H,大小都為80H

在編程時可以根據(jù)需要,將若干連續(xù)地址的內(nèi)存單元看做一個段,用段地址×16定為段的起始地址(基礎地址),用偏移地址定位段中的內(nèi)存單元段地址×16必然是16的倍數(shù),所以一個段的起始地址(基礎地址)也一定是16的倍數(shù)
偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB

image.png

段寄存器

  • 8086在訪問內(nèi)存時要由相關部件提供內(nèi)存單元的段地址和偏移地址,送入地址加法器合成物理地址

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

  • 8086有4個段寄存器:CS、DS、SS、ES,當CPU需要訪問內(nèi)存時由這4個段寄存器提供內(nèi)存單元的段地址

    • CS (Code Segment):代碼段寄存器
    • DS (Data Segment):數(shù)據(jù)段寄存器
    • SS (Stack Segment):堆棧段寄存器
    • ES (Extra Segment):附加段寄存器

CS和IP

  • CS為代碼段寄存器,IP為指令指針寄存器,它們指示了CPU當前要讀取指令的地址
  • 任意時刻,8086CPU都會將CS:IP指向的指令作為下一條需要取出執(zhí)行的指令
image.png
image.png

指令的執(zhí)行過程

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
總結

指令和數(shù)據(jù)

  • 在內(nèi)存或者磁盤上,指令和數(shù)據(jù)沒有任何區(qū)別,都是二進制信息

  • CPU在工作的時候把有的信息看做指令,有的信息看做數(shù)據(jù),為同樣的信息賦予了不同的意義


    image.png
  • CPU根據(jù)什么將內(nèi)存中的信息看做指令?

    • CPU將CS:IP指向的內(nèi)存單元的內(nèi)容看做指令
    • 如果內(nèi)存中的某段內(nèi)容曾被CPU執(zhí)行過,那么它所在的內(nèi)存單元必然被CS:IP指向過

jmp指令

  • CPU從何處執(zhí)行指令是由CS、IP中的內(nèi)容決定的,我們可以通過改變CS、IP的內(nèi)容來控制CPU執(zhí)行目標指令
  • 8086提供了一個mov指令(傳送指令),可以用來修改大部分寄存器的值,比如
    • mov ax,10、mov bx,20、mov cx,30、mov dx,40
  • 但是,mov指令不能用于設置CS、IP的值,8086沒有提供這樣的功能
  • 8086提供了另外的指令來修改CS、IP的值,這些指令統(tǒng)稱為轉移指令,最簡單的是jmp指令
image.png
image.png

jmp指令 -- 練習

image.png
image.png
image.png

代碼段

image.png
image.png
image.png
image.png

文章鏈接:http://www.lxweimin.com/p/e85e2d64ed1e

只為收藏,不成敬意!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎入門學習匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,389評論 8 114
  • 8086的尋址方式 CPU訪問內(nèi)存單元時,要給出內(nèi)存單元的地址,所有的內(nèi)存單元都有唯一的地址,叫做物理地址 808...
    為自己丶拼個未來閱讀 522評論 0 2
  • 8086的尋址方式 CPU訪問內(nèi)存單元時,要給出內(nèi)存單元的地址,所有的內(nèi)存單元都有唯一的地址,叫做物理地址 808...
    Stone_熊小叔閱讀 531評論 0 0
  • 關于CPU&寄存器的補充 寄存器 CPU除了有控制器、運算器還有寄存器。其中寄存器的作用就是進行數(shù)據(jù)的臨時存儲。 ...
    請叫我Hank閱讀 3,335評論 6 13
  • 今年已經(jīng)過去1/10了,還有10天開學 先說年初定的計劃,凌晨1點之前睡覺,這個計劃的初衷是早睡早起身體好,但隔三...
    Catia_jie閱讀 217評論 0 0