第3章 暫存器(記憶體訪問)小結
記憶體中字的儲存
字單元,即存放一個字形資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。我們將起始地址為N的字單元簡稱為N地址字單元。
DS和[address]
“[...]”表示一個記憶體單元,“[...]”中的0表示記憶體單元的偏移地址。8086CPU自動取ds中的資料為記憶體單元的段地址。8086CPU不支援將資料直接送入段暫存器的操作,只能用一個暫存器來進行中轉,即先將1000H送入一個一般的暫存器,如bx,再將bx中的內容送入ds。
mov、add、sub指令
mov指令可以有以下幾種形式:
mov 暫存器,資料
mov 暫存器,暫存器
mov 暫存器,記憶體單元
mov 暫存器,段暫存器
mov 記憶體單元,暫存器
mov 記憶體單元,段暫存器
mov 段暫存器,暫存器
mov 段暫存器,記憶體單元
add指令可以有以下幾種形式:
add 暫存器,資料
add 暫存器,暫存器
add 暫存器,記憶體單元
add 記憶體單元,暫存器
sub指令可以有以下幾種形式:
sub 暫存器,資料
sub 暫存器,暫存器
sub 暫存器,記憶體單元
sub 記憶體單元,暫存器
CPU提供的棧機制
後進先出的操作規則
push ax表示將暫存器ax中的資料送入棧中,pop ax表示從棧頂取出資料送入ax。8086CPU的入棧和出棧操作都是以字為單位進行的。
8086CPU中,有兩暫存器,段暫存器SS和暫存器SP,棧頂的段地址存放在SS中,偏移地址存放在SP中。任意時刻,SS:SP指向棧頂元素。
Push、Pop指令
執行push時,CPU的兩步操作是:先改變SP,後向SS:SP處傳送。執行pop時,CPU的兩步操作是:先讀取SS:SP處的資料,後改變SP。