寄存器總結

寄存器總結

si(esi)/di(edi) 變址寄存器(index register)

寄存器ESI、EDI、SI和DI稱爲變址寄存器(Index Register)
它們主要用於存放存儲單元在段內的偏移量,用它們可實現多種存儲器操做數的尋址方式,爲以不一樣的地址形式訪問存儲單元提供方便。
變址寄存器不可分割成8位寄存器。
做爲通用寄存器,也可存儲算術邏輯運算的操做數和運算結果。
它們可做通常的存儲器指針使用。
在字符串操做指令的執行過程當中,對它們有特定的要求,並且還具備特殊的功能。指針

SI是源變址寄存器,DI是目的變址寄存器。能夠用來存放數據、地址,功能相似、用法相似、通常使用哪一個均可以。
但須要注意的是:在串處理指令中,SI用做隱含的源串地址,段地址默認在DS中;DI用作隱含的目的串地址,段地址默認在ES中;此時不能混用。內存

寄存器尋址

在8086CPU中,只有bx、si、di、bp寄存器能夠在「[…]」中來進行內存單元的尋址,好比下面指令時正確的:
MOV AX, [BX + SI]
MOV AX, [BX + DI]
MOV AX, [BP]
MOV AX, [BP + SI]
MOV AX, [BP + DI]字符串

而下面的指令是錯誤的
MOV AX, [CX]
MOV AX, [AX]
MOV AX, [DX]
MOV AX, [DS]總結

在[…]中,這4個寄存器能夠單個出現,或只能以4種組合出現:BX和SI,BX和DI,BP和SI,BP和DI,好比下面的指令時正確的:
MOV AX, [BX]
MOV AX, [SI]
MOV AX, [DI]
MOV AX, [BP]
MOV AX, [BX + SI]
MOV AX, [BX + DI]
MOV AX, [BP + SI]
MOV AX, [BP + DI]
MOV AX, [BX + SI + IDATA]
MOV AX, [BX + DI + IDATA]
MOV AX, [BP + SI + IDATA]
MOV AX, [BP + DI + IDATA]數據

下面的指令是錯誤的:
MOV AX, [BX + BP]
MOV AX, [SI + DI]di

只要在[…]中使用寄存器BP,而指令中沒有顯性地給出段地址,段地址就默認在SS中,好比:
MOV AX , [B] 含義 AX = (SS) * 16 + BP;block

BP: 是和堆棧指針SP聯合使用的,做爲SP校準使用的,只有在尋找堆棧裏的數據和使用個別的尋址方式時候才能用到.
好比說,堆棧中壓入了不少數據或者地址,你確定想經過SP來訪問這些數據或者地址,但SP是要指向棧頂的,是不能隨便亂改的,這時候你就須要使用BP,把SP的值傳遞給BP,經過BP來尋找堆棧裏數據或者地址.字符

標誌位 Flag

相關文章
相關標籤/搜索