寄存器(內存訪問)


1.字數據在內存中的存放、內存單元地址

CPU中,用16位寄存器來存儲一個字。高八位存放高位字節,低八位存放低位字節。在內存中存儲時,由於內存單元時字節單元(一個單元存放一個字節),則一個字要用兩個地址連續的內存單元來存放,這個字的低位字節存放在低地址單元中,高位字節存放在高地址單元中。我們提出字單元的概念:字單元,即存放一個字型數據(16位)的內存單元,由兩個地址連續的內存單元組成。高地址內存單元中存放字型數據的高位字節,低地址內存單元中存放字型數據的低位字節。

2.數據在內存個CPU直接的傳送

我們用mov指令在寄存器和內存之間進行字節型數據的傳送。因為8086CPU是16位結構,有16根數據線,所以,可以一次性傳送16位的數據,也就是說可以一次性傳送一個字。只要在mov指令中給出16位的寄存器就可以進行16位數據的傳送了。

我們知道,mov指令可以有以下幾種形式。

mov 寄存器,數據

mov 寄存器,寄存器

mov 寄存器,內存單元

mov 內存單元,寄存器

mov 段寄存器,寄存器

add和sub

add 寄存器,數據

add 寄存器,寄存器

add 寄存器,內存單元

add 內存單元,寄存器

sub 寄存器,數據

sub 寄存器,寄存器

sub 寄存器,內存單元

sub 內存單元,寄存器

操作數是內存單元時,指令中只給出[偏移地址],默認,[段地址]在ds中。

3.[段]的概念,數據段,代碼段,棧段的意義所指

 [段]是8086位解決用16位寄存器表示20位的物理地址而引入的一個邏輯上的概念。可以根據需要,將地址連續、起始物理地址為16倍數的一組內存單元(不超過64KB)當作一個[段]使用。

在編程中,可以根據需要,將一組內存單元定義為一個段。我們可以將一組長度為N(N<=64KB)、地址連續、起始地址為16的倍數的內存單元當作專門存儲數據的內存單元,從而定義了一個數據段。

[棧]是一個邏輯上的概念。可以將一段內存空間當作[棧]來使用。

用作數據段時,要把段地址給DS

用作棧段時,要把段地址給SS,棧頂偏移地址給SP

用作代碼段時,段地址給CS,要取的指令偏移地址給IP。但cs和ip的值不能使用mov改變。

4.[棧]的機制;與棧操作相關的寄存器SS和SP;與[棧]操作相關的指令push和pop;

SS:棧段段寄存器,用於存放棧段的[段地址]

SP:棧指針寄存器,用於存放棧頂的偏移地址

 

5.寄存器DS的用途

DS:數據段段寄存器,用於存放數據段的[段地址]

將一段內存用作數據段,是編程時的一種安排

在mov,add,sub等匯編指令中,訪問內存單元時,默認情況下,指的是數據段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM