第三章 暫存器
阿新 • • 發佈:2018-11-03
第三章暫存器
組合語言
施工中
3.1 記憶體中字的儲存
- CPU中用16位暫存器來儲存一個字。高八位存放高位元組,低八位存放低位元組。
- 字單元:有兩個連續的記憶體單元組成。高地址記憶體單元存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。
- 位元組 8bit
- 字 16bit
- 雙字 32bit
- 四字 64bit
- 採用小端法
3.2 DS和[address] 3.3 字的傳送
- 8086CPU由於硬體設計問題,不支援將資料直接送入段暫存器
- DS 資料段暫存器
3.4 mov、add、sub指令
mov指令
- mov指令可以:
- 常數 ->暫存器
- 暫存器 ->暫存器
- 記憶體單元 ->暫存器
段暫存器 ->暫存器
- 常數- >記憶體單元
- 暫存器- >記憶體單元
段暫存器 ->記憶體單元
- 暫存器 ->段暫存器
記憶體單元 ->段暫存器
- 作為第二個運算元時,如果最高位大於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不會自動考慮棧頂越界