1. 程式人生 > >組合語言第三章總結

組合語言第三章總結

第三章中,我們從訪問記憶體的角度瞭解學習幾個暫存器

下面將知識點總結如下:

一、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  的指向將記憶體做為不同用處