1. 程式人生 > >第三章暫存器(記憶體訪問)

第三章暫存器(記憶體訪問)

記憶體中字的儲存

在cpu中,用16位來儲存一個字,高8位存放高位元組,低8位存放低位位元組。在記憶體中時,由於記憶體單元是位元組單元,剛一個字要用2個地址連續的記憶體單元來存放,字的低位位元組存在低地址單元。

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

DS和[address]

CPU要讀寫一個記憶體單元的時候,必須先給出這個記憶體單元的地址。

記憶體單元由2部分組成。8086CPU中,記憶體地址由以下組成。

1:段地址

2:偏移地址

8086CPU中,有一個DS暫存器地址,通常用來存放資料的段地址。

比如我們要讀取10000H的單元內容,可以用如下的程式段進行。

 

mov bx,1000H

mov ds,bx

mov al,[0]

 

[...] 表示一個記憶體單元。[...]中的0表示記憶體單元的便宜地址。我們知道,只有偏移地址是不能定位一個記憶體單元的。那麼記憶體單元的段地址是多少呢? 執行指令時,8086CPU會自動取DS中的資料為記憶體單元的段地址。

 mov、add、sub指令

mov指令有以下幾種形式:

mov 暫存器,資料

mov 暫存器,暫存器

mov 暫存器,記憶體單元

mov 記憶體單元,暫存器

mov 記憶體單元,段暫存器

mov 段暫存器,暫存器

mov 暫存器,段暫存器

資料段

1、字在記憶體中儲存時,要用兩個連續的記憶體單元來存放,字的低位元組放在低地址單元,高位元組放在高地址單元

2、用mov指令訪問記憶體單元,可以在mov指令中只給出單元的偏移地址,此時,段地址預設在DS暫存器中

3、[address]表示一個偏移地址為address的記憶體單元

4、在記憶體和暫存器之間傳送字型資料時,高地址單元和高8位暫存器,低地址單元和低8位暫存器相對應

5、mov、sub、add是具有兩個操作物件的指令,jmp是具有一個操作物件的指令

push、pop指令

push 暫存器 ;將一個暫存器中的資料入棧

pop 暫存器 ;出棧,用一個暫存器接收出棧的資料

push 段暫存器 ;將一個段暫存器中的資料入棧

pop 段暫存器 ;出棧,用一個段暫存器接收出棧的資料

push和pop指令也可以在記憶體單元和記憶體單元之間傳送資料,還可以:

push 記憶體單元 ;將一個記憶體單元處的字入棧(棧的操作都是以字為單位)

pop 記憶體單元 ;出棧,用一個記憶體字單元接收出棧的資料