組合語言第三章總結
第三章中,我們從訪問記憶體的角度瞭解學習幾個暫存器
下面將知識點總結如下:
一、16位暫存器儲存一個字,就要用高8位存放高位位元組,低8位存放低位位元組
0為低地址單元,1為高地址單元,表示資料4E20H(20000),起始地址是0,即是0地址字單元
儲存字用兩個單元,逆序存放,而儲存位元組只用一個單元
二、mov al,[0] 表示將記憶體單元內容存入暫存器,【】中的0表示偏移地址,DS暫存器,存放訪問資料的段地址
用mov指令只能通過如
mov bx,1000
mov ds,bx
為DS暫存器賦值,8086CPU不支援將資料直接送入段暫存器的操作
mov [0],al 可以將資料從暫存器送入記憶體單元
mov 段暫存器,暫存器 / mov 暫存器,段暫存器 都可執行
mov 記憶體單元,段暫存器
mov 段暫存器,記憶體單元 都可執行
三、程式設計時可將一組記憶體單元用ds存放段地址從而定義為一個數據段,再用偏移地址訪問具體單元
四、棧:最後進入這個空間的資料最先出去
入棧push 和出棧pop都是以字為單位
棧頂的段地址存放在SS中,偏移地址存放在SP中,任意時刻SS:SP指向棧頂元素
push ax 1.SP=SP-2 2.將ax內容送入SS:SP指向的棧記憶體
pop ax 1..將SS:SP指向的棧記憶體送入ax 2.SP=SP+2
空棧時,SS:SP指向棧最底部單元下面的單元(最底部字單元偏移地址+2)
五、8086CPU沒有暫存器檢測越界
六、push和pop可以傳送段暫存器或者記憶體單元,如:
push ds
pop [0]
段地址在指令執行時,從DS獲得
七、push、pop等棧操作指令,修改的只是SP,即棧頂變化範圍最大為0~FFFFH
八、可以將長度為N(N≤64KB)的一組地址連續,起始地址為16的倍數的記憶體單元定義為棧段,同時將SS:SP指向定義的棧段
九、1.程式碼段CS、IP 2.棧段SS、SP 3.資料段DS 的指向將記憶體做為不同用處