1. 程式人生 > >第三章 暫存器

第三章 暫存器

第三章暫存器

組合語言

施工中

3.1 記憶體中字的儲存

  • CPU中用16位暫存器來儲存一個字。高八位存放高位元組,低八位存放低位元組。
  • 字單元:有兩個連續的記憶體單元組成。高地址記憶體單元存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。
    • 位元組 8bit
    • 字 16bit
    • 雙字 32bit
    • 四字 64bit
  • 採用小端法

3.2 DS和[address] 3.3 字的傳送

  • 8086CPU由於硬體設計問題,不支援將資料直接送入段暫存器
  • DS 資料段暫存器

3.4 mov、add、sub指令

mov指令
  • mov指令可以:
    1. 常數 ->暫存器
    2. 暫存器 ->暫存器
    3. 記憶體單元 ->暫存器
    4. 段暫存器 ->暫存器

    5. 常數- >記憶體單元
    6. 暫存器- >記憶體單元
    7. 段暫存器 ->記憶體單元

    8. 暫存器 ->段暫存器
    9. 記憶體單元 ->段暫存器

  • 作為第二個運算元時,如果最高位大於9,前面要加0
  • mov指令不能修改CS和IP的值
add指令,sub指令
1. 常數    ->暫存器
2. 暫存器  ->暫存器
3. 記憶體單元 ->暫存器
5. 常數-   >記憶體單元
6. 暫存器-  >記憶體單元
  • 運算元時是記憶體單元時,指令中只給出偏移地址

    3.5 資料段

  • 摘自《數字體系與計算機體系結構》 6.8.6 x86的其他特性

    802861使用分段的方法將記憶體分成很多段
    當作業系統允許分段時,相對於每段起始位置計算地址
    分段技術引起很多爭議 沒有在現在Windows的各個版本中啟用

3.6 棧 3.7 CPU提供的棧機制 3.8 棧頂越界的問題 3.10 棧段指令

  • 棧頂:最後入棧的字資料所對應的記憶體單元
  • 棧底:棧區最高地址單元的前一個單元

  • SS 棧段段暫存器
  • SP 棧指標暫存器

3.9 push、pop指令

  • push記憶體單元和pop記憶體單元中,指令中只需給出偏移地址。
  • 入棧 出棧均以字為單元
  • 8086不會自動考慮棧頂越界