1. 程式人生 > >第三章知識彙總

第三章知識彙總

第三章   暫存器

 

3.1 記憶體中字的儲存

CPU中,用16位的暫存器來儲存一個字。高8位存放高位位元組,低8位存放低位位元組

字單元:存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。

 

3.2 DS和[address]

DS暫存器:通常用來存放要訪問資料的段地址

mov al [0]       [0]表示記憶體單元的偏移地址,8086CPU將自動使用此時DS的資料作為記憶體單元的段地址

8086CPU不支援直接將資料送入段地址暫存器中,可以先將資料送入bx,再將bx的資料送入ds

 

3.3 字的傳送

在mov指令中給出16位暫存器就可以進行16位資料的傳輸了。

 

3.4  mov,add,sub指令

mov   暫存器 , 資料

mov   暫存器  ,暫存器

mov   暫存器   ,記憶體單元    mov  ax [0]

mov   記憶體單元 ,暫存器

mov   段暫存器 ,暫存器     P52

 

 

add  暫存器  ,資料

add  暫存器 ,暫存器

add  暫存器 ,記憶體單元

add  記憶體單元,暫存器

sub  暫存器,資料

sub  暫存器,暫存器

sub  暫存器,記憶體單元

sub  記憶體單元,暫存器

 

3.5     資料段

我們可以將一組長度為N(N≤64KB)、地址連續、起始地址為16的倍數的記憶體單元當作專門儲存資料的記憶體空間,從而定義了一個數據段。

 

3.6   棧

棧是一種具有特殊的訪問方式的儲存空間。它的特殊性就在於,最後進入這個空間的資料,最先出去。

應該有一個標記,指向棧頂的資料。

有兩個基本的操作,入棧和出棧

 

3.7   CPU提供的棧機制

8086CPU   最基本的兩個指令  PUSH(入棧)    POP(出棧)

8086CPU的入棧和出棧操作都是以字為單位進行的

字型資料用兩個單元存放,高地址單元存放高8位,低地址單元存放低8位

 

如何知道棧頂的位置?

8086CPU中,有兩個暫存器 SS  SP。 SS中存放著棧頂的段地址,SP中存放著棧頂的偏移地址。

任意時刻  SS:SP指向棧頂元素

PUSH和POP指令執行的時候,CPU從SS和SP中得到棧頂的地址

 

3.8 棧頂超界的問題

程式設計者必須要自己注意不要讓棧頂超界,因為8086CPU不知道我們安排的棧空間有多大

 

3.9  push,pop指令

 

3.10  棧段

我們可以將長度為N(N<=64KB)的一組地址連續,起始地址為16的倍數的記憶體單元當作棧空間來使用,從而定義了一個棧段。

定義一個棧段只是我們自己的一個行為,CPU並不會因為這個安排自動地將我們定義地棧段當作棧空間來使用

要使push,pop 等指令訪問我們定義的棧段,就是要使SS:SP指向我們定義的棧段