【組合語言】第 3 章 暫存器(記憶體訪問)
版權宣告:本文為 gfson
原創文章,轉載請註明出處。
注:作者水平有限,文中如有不恰當之處,請予以指正,萬分感謝。
3.1 DS 和 [address]
- DS 暫存器,通常用來存放要訪問的資料的段地址。
- [...] 表示記憶體單元的偏移地址,DS 中資料為記憶體單元的段地址。
3.2 mov、add、sub 指令
-
mov 指令可以有以下形式:
- mov 暫存器,資料
- mov 暫存器,暫存器
- mov 暫存器,記憶體單元
- mov 記憶體單元,暫存器
- mov 記憶體單元,段暫存器
- mov 段暫存器,記憶體單元
- mov 段暫存器,暫存器
- mov 暫存器,段暫存器
-
add、sub 有以下幾種形式:
- add 暫存器,資料
- add 暫存器,暫存器
- add 暫存器,記憶體單元
- add 記憶體單元,暫存器
- sub 暫存器,資料
- sub 暫存器,暫存器
- sub 暫存器,記憶體單元
- sub 記憶體單元,暫存器
add、sub 不能對段暫存器進行操作,如
add ds,ax
是非法的。
3.3 資料段
- 將記憶體當作資料段。
- 用 ds 存放資料段的段地址,再根據需要,用相關指令訪問資料段中的具體單元。
3.4 檢測點 3.1
-
答案:
第一題:第二題:
3.5 CPU 的棧機制
- 棧頂的段地址存放在 SS 中,偏移地址存放在 SP 中。
- 任意時刻,SS:SP 指向棧頂元素。
- push 和 pop 指令執行時,CPU 從 SS 和 SP 中獲得棧頂的地址。
-
push ax 的執行:
-
pop ax 的執行:
- 棧頂超界
- 8086CPU 不保證我們對棧的操作不會超界。
- 8086CPU 只知道棧頂在何處,而不知道我們安排的棧空間有多大。
- 我們程式設計時,需要自己考慮棧越界的問題。
3.6 push、pop 指令
- push 和 pop 指令的格式可以如下:
- push 暫存器 ;將一個暫存器中的資料入棧
- push 段暫存器 ;將一個段暫存器中的資料入棧
- push 記憶體單元 ;將一個記憶體字單元處的字入棧(注意:棧操作都是以字為單位)
- pop 暫存器 ;出棧,用一個暫存器接收出棧的資料
- pop 段暫存器 ;出棧,用一個段暫存器接收出棧的資料
- pop 記憶體單元 ;出棧,用一個記憶體字單元接收出棧的資料
3.7 棧段
- 將記憶體當作棧段。
- 將 SS:SP 指向我們定義的棧段。
3.8 資料段、程式碼段、棧段
- 記憶體中到底是程式碼、資料還是棧,關鍵取決於 CPU 中暫存器的設定,即 CS、IP、SS、SP、DS 的指向。
3.9 檢測點 3.2
-
答案:
3.10 實驗 2
- 答案:
(1)略
(2)在使用 t 命令進行單步追蹤的時候,產生了中斷,為了保護現場,CPU 將 PSW、CS 和 IP 依此入棧,導致了記憶體相關位置內容的改變。
相關文章
- 讀書筆記《組合語言》——intel8086暫存器的記憶體訪問筆記組合語言Intel記憶體
- 組合語言學習筆記03——暫存器(CPU工作原理)組合語言筆記
- 《組合語言》王爽,學習筆記(標誌暫存器下)組合語言筆記
- x86 組合語言標誌暫存器組合語言
- 3. 暫存器(記憶體) | 問題 3.7 - 3.10記憶體
- 【自學組合語言Day-02】第二章:暫存器(CPU工作原理)組合語言
- 組合語言中暫存器的英文全程組合語言
- 為什麼暫存器比記憶體快?記憶體
- 第二章--組合語言組合語言
- 第8章 管理共享記憶體記憶體
- C語言:記憶體位元組對齊詳解C語言記憶體
- 第3章 第10節 Java進階 - JVM記憶體機制(中)JavaJVM記憶體
- 第4章 變數、作用域和記憶體問題變數記憶體
- 【C語言】整型在記憶體中的儲存C語言記憶體
- 組合語言1 - 什麼是組合語言?組合語言
- 組合語言學習筆記組合語言筆記
- 組合語言組合語言
- C 語言結構體記憶體佈局問題結構體記憶體
- C語言結構體記憶體佈局問題C語言結構體記憶體
- C語言-記憶體分配C語言記憶體
- Go語言記憶體模型Go記憶體模型
- C語言:記憶體使用C語言記憶體
- 同樣是電晶體,為什麼暫存器比記憶體快呢?記憶體
- 組合語言-學習記錄(二)組合語言
- 《組合語言》第十二章 內中斷組合語言
- C語言-記憶體管理之一[記憶體分配]C語言記憶體
- C語言-記憶體管理之二[記憶體指令]C語言記憶體
- 組合語言 1組合語言
- 組合語言 2組合語言
- 組合語言-棧組合語言
- Smali語法:Registers(暫存器)
- 記憶體訪問全過程記憶體
- 讀書寫筆記-王爽《組合語言》筆記組合語言
- C語言的記憶體分配C語言記憶體
- Rust語言記憶體管理之妙Rust記憶體
- C語言記憶體對齊C語言記憶體
- 這個處理器的組合語言:組合語言
- 第3章筆記筆記