[英]Assembly addressing mode and syntax
我是Assembly編程的新手,並在網上搜索了教程和電子書。 我發現了一些有關匯編語言語法的令人困惑的信息,例如在一個教程中,我閱讀了以下代碼:
MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX
MOV [EBX], 110 ; MY_TABLE[0] = 110
在書中,我讀到:
mov ax, [Data] ; normal direct memory addressing of a wor
mov ebx, Data ; ebx = & Data
3 mov ax, [ebx] ; ax = *ebx
所以,當我們MOV
封閉在一個變量[]
像一個寄存器EBX
,我們存儲在寄存器什么樣的價值? 該存儲位置中的地址或實際值?
從NASM手冊中 :
規則很簡單,對存儲位置內容的任何訪問都需要在地址周圍加上方括號,而對變量地址的任何訪問都不需要。 因此,形式為
mov ax,foo
的指令將始終引用編譯時常量,無論它是EQU
還是變量的地址。 並且要訪問變量bar
的內容 ,必須對mov ax,[bar]
編碼。
所以
MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX
錯誤:它沒有將EBX
設置為地址,而是將其設置為存儲在MY_TABLE
地址中的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.