匯編入門二(寄存器)

寄存器

  • 對程序員來說,CPU中最主要部件是寄存器,可以通過改變寄存器的內(nèi)容來實現(xiàn)對CPU的控制

  • 不同的CPU,寄存器的個數(shù)、結(jié)構(gòu)是不相同的(8086是16位結(jié)構(gòu)的CPU)

  • 8086有14個16位寄存器:


    8086寄存器

通用寄存器

  • AX、BX、CX、DX這4個寄存器通常用來存放一般性的數(shù)據(jù),稱為通用寄存器(有時也有特定用途)
  • 通常,CPU會先將內(nèi)存中的數(shù)據(jù)存儲到通用寄存器中,然后再對通用寄存器中的數(shù)據(jù)進行運算
  • 假設內(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


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


      image.png

段寄存器

  • CS為代碼段寄存器,IP為指令指針寄存器,它們指示了CPU當前要讀取指令的地址, 任意時刻,8086CPU都會將CS:IP指向的指令作為下一條需要取出執(zhí)行的指令
  • 指令的執(zhí)行過程
    1.從CS:IP指向的內(nèi)存單元讀取指令,然后放入指令緩存器
    2.改變IP指針(IP = IP + 所讀取指令的長度)
    3.執(zhí)行緩存器中的指令,然后又跳回步驟1,重復執(zhí)行這個過程
    具體步驟如下圖所示:


    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    在內(nèi)存或者磁盤上,指令和數(shù)據(jù)沒有任何區(qū)別,都是二進制信息,那么如何區(qū)分指令與數(shù)據(jù)呢?
    CPU將CS:IP指向的內(nèi)存單元的內(nèi)容看做指令
    CPU將DS指向的內(nèi)存單元的內(nèi)容看做數(shù)據(jù)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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