-2
因此,我進行了以下練習「;使用遠端地址(32位地址)修改內存中兩個字的內容。提示:使用LDS和LES指令。使用LDS和LES指令
而當我運行下面的代碼時,出現以下錯誤:「無法使用當前假定的段寄存器進行尋址」。你能向我解釋這個錯誤是什麼意思,以及如何正確編寫程序?
_DATA SEGMENT PUBLIC 'DATA'
X DW 10
Y DW 15
ADR_X DD X
ADR_Y DD Y
_DATA ENDS
_CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS: _CODE
START PROC FAR
PUSH DS
XOR AX, AX
MOV AX, _DATA ; initializing the segment register
MOV DS, AX
LDS SI,ADR_X
LES DI,ADR_Y
MOV WORD PTR[SI],20
MOV WORD PTR ES:[DI],30
RET
START ENDP
_CODE ENDS
END START
它已經有一段DOS控制檯窗口,但你可能需要用'承擔DS:_DATA'也爲不合格' [SI]'參考工作。其他注意事項:當你同時執行'LDS'時,明確設置DS是多餘的,然後,您按DS,但不會再次彈出它。 –
在執行LES指令之前,LDS可能會修改DS(在這種情況下,它不會是通用解決方案)。首先執行LES,或者您可以將ADR_X和ADR_Y移至ret之後,以便使用CS訪問它們(彙編器應爲您執行默認CS覆蓋)。 – rcgldr