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等匯編指令中,訪問內存單元時,默認情況下,指的是數據段。