匯編語言_02

一、CPU總線


cpu
  • 每一個CPU芯片都有許多管腳,這些管腳和總線相連,CPU通* * 過總線跟外部器件進行交互
  • 總線:一根根導線的集合
    • 總線的分類
    • 地址總線
    • 數(shù)據(jù)總線
    • 控制總線


      計算機基本結(jié)構(gòu).png

示例


CPU&內(nèi)存.png

地址總線

  • 它的寬度決定了CPU的尋址能力
  • 8086的地址總線寬度是20,所以尋址能力是1M( 2^20 )


    地址總結(jié).png

數(shù)據(jù)總線

  • 它的寬度決定了CPU的單次數(shù)據(jù)傳送量,也就是數(shù)據(jù)傳送速度
  • 8086的數(shù)據(jù)總線寬度是16,所以單次最大傳遞2個字節(jié)的數(shù)據(jù)

控制總線

  • 它的寬度決定了CPU對其他器件的控制能力、能有多少種控制
    數(shù)據(jù)總線:8088的數(shù)據(jù)總線寬度是8,8086的數(shù)據(jù)總線寬度是16,分別向內(nèi)存中寫入89D8H如下圖:注意:這里是16進制,后方的H是單詞Hexadecimal的意思


    8088.png

    8086.png

小練習
1、一個CPU 的尋址能力為8KB,那么它的地址總線的寬度為____。(13)
2、8080,8088,80286,80386 的地址總線寬度分別為16根,20根,24根,32根.那么他們的尋址能力分別為多少____KB, ____MB,____MB,____GB?(64、1、16、4)
3、8080,8088,8086,80286,80386 的數(shù)據(jù)總線寬度分別為8根,8根,16根,16根,32根.那么它們一次可以傳輸?shù)臄?shù)據(jù)。為:____B,____B,____B,____B,____B,(1、1、2、2、4)
4、從內(nèi)存中讀取1024字節(jié)的數(shù)據(jù),8086至少要讀____次,80386至少要讀取____次。(512、256)

二、內(nèi)存

  • 內(nèi)存地址空間的大小受CPU地址總線寬度的限制。8086的地址總線寬度為20,可以定位2^20個不同的內(nèi)存單元(內(nèi)存地址范圍0x00000~0xFFFFF),所以8086的內(nèi)存空間大小為1MB
  • 0x00000~0x9FFFF:主存儲器??勺x可寫
  • 0xA0000~0xBFFFF:向顯存中寫入數(shù)據(jù),這些數(shù)據(jù)會被顯卡輸出到顯示器??勺x可寫
  • 0xC0000~0xFFFFF:存儲各種硬件\系統(tǒng)信息。只讀


    存儲器的邏輯連接.png

    存儲器的物理地址情況.png

    存儲器的邏輯連接對應(yīng)物理地址.png

三、寄存器
內(nèi)部部件之間由總線連接


CPU典型構(gòu)成.png
  • 對程序員來說,CPU中最主要部件是寄存器,可以通過改變寄存器的內(nèi)容來實現(xiàn)對CPU的控制
  • 不同的CPU,寄存器的個數(shù)、結(jié)構(gòu)是不相同的(8086是16位結(jié)構(gòu)的CPU)
  • 8086有14個寄存器
    • 都是16位的寄存器
    • 可以存放2個字節(jié)


      8086內(nèi)部寄存器.png

通用寄存器

  • AX、BX、CX、DX這4個寄存器通常用來存放一般性的數(shù)據(jù),稱為通用寄存器(有時也有特定用途)
    • AX 寄存器稱為累加器,常用于存放算術(shù)、邏輯運算中的操作數(shù)或結(jié)果。另外,所有的I/O指令都要使用累加器與外設(shè)接口傳遞數(shù)據(jù)。
    • BX 寄存器稱為基址寄存器,常用來存放訪問內(nèi)存時的地址。
    • CX 寄存器稱為計數(shù)寄存器,在循環(huán)、串操作指令中用作計數(shù)器。
    • DX 寄存器稱為數(shù)據(jù)寄存器,在寄存器間接尋址中的I/O指令中存放I/O端口的地址。

在做雙字長乘除法運算時,DX 與AX合起來存放一個雙字長數(shù)(32位),其中DX存放高16位,AX存放低16位。

  • 通常,CPU會先將內(nèi)存中的數(shù)據(jù)存儲到通用寄存器中,然后再對通用寄存器中的數(shù)據(jù)進行運算
  • 假設(shè)內(nèi)存中有塊紅色內(nèi)存空間的值是3,現(xiàn)在想把它的值加1,并將結(jié)果存儲到藍色內(nèi)存空間
    • CPU首先會將紅色內(nèi)存空間的值放到AX寄存器中:mov ax,紅色內(nèi)存空間
    • 然后讓AX寄存器與1相加:add ax,1
    • 最后將值賦值給內(nèi)存空間:mov 藍色內(nèi)存空間,ax


      通用寄存器.png
  • AX、BX、CX、DX這4個通用寄存器都是16位的,如下圖所示


    16位通用寄存器.png
  • 上一代8086的寄存器都是8位的,為了保證兼容, AX、BX、CX、DX都可分為2個獨立的8位寄存器來使用
    • H代表高位寄存器
    • L代表低位寄存器


      高低位寄存器1.png

      高低位寄存器2.png

字和字節(jié)

  • 在匯編的數(shù)據(jù)存儲中,有2個比較常用的單位
    • 字節(jié):byte,1個字節(jié)由8bit組成,可以存儲在8位寄存器中
    • 字:word,1個字由2個字節(jié)組成,這2個字節(jié)分別稱為字的高字節(jié)和低字節(jié)
  • 比如數(shù)據(jù)20000(4E20H,0100111000100000B)
    ,高字節(jié)的值是78,低字節(jié)的值是32


    高低位字節(jié).png
  • 1個字可以存在1個16位寄存器中,這個字的高字節(jié)、低字節(jié)分別存儲在這個寄存器的高8位寄存器、低8位寄存器中
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容