我想了解如何在彙編中使用指針。通過閱讀一些關於internel的教程,我認爲它有一些概念。但是當我去嘗試它時,它確實奏效了。下面是將C轉換成ASM的一些嘗試。彙編語言的指針
Ç
const char *s = "foo";
unsigned z = *(unsigned*)s;
if(!(z & 0xFF))
do_something();
if(!(z & 0xFFFF))
do_b_something();
(這裏不完整的代碼,但它是一個字檢查,thefore,有更多個支桿,檢查0xFF0000,0xF000000 respectivily
ASM:
mov ebp,str
mov eax,ebp
mov eax,[eax]
and eax,0xFF
cmp eax,0
je etc
mov eax,[eax]
and eax,0xFFFF
cmp eax,0
je etc
它返回一個seg故障。
而且嘗試:
mov eax,dword ptr [eax]
多數民衆贊成由gcc編譯器生成的,你可以看到它在其他一些組件的代碼,在FASM彙編返回
invalid symbol
。它不是真的被FASM所支持,或者我錯過了什麼?
'dword ptr'是MASM所需要的,而不是其他的。只需使用普通的括號。 seg故障很可能是由於在銷燬它後使用'eax'作爲指針。提示:使用'測試' – harold 2013-02-08 14:09:45
我不會說C - 你能提供一些解釋你想達到的結果嗎?我有一種感覺,在組裝中它非常簡單。 – johnfound 2013-02-08 15:09:13