2014-06-29 40 views
0

我有這樣的代碼傳遞與C字符串參數++和彙編的x64

#include <iostream> 
#include <conio.h> 

using namespace std; 
extern "C" char * DDD(char * h, int j); 

int main() 
{ 
char * g = "RRRR"; 
cout << "HELLO Says " << DDD(g, strlen(g)) << endl; 
_getch(); 
return 0; 
} 

.data 
gh db 'Y' 
.code 
DDD proc 
lea rbx, [rcx] 
push rbx 
a20: 
mov al, gh 
mov byte ptr [rbx], al 
inc rbx 
dec rdx 
cmp rdx, 0 
jnz a20 
pop rbx 
mov rax, rbx 
ret 
DDD endp 
end 

什麼IM做的是更換RRRR成爲YYYY。我得到錯誤在

mov byte ptr [rbx], al 

它說訪問衝突。

即時新裝配,我只是想知道如何解決它。彙編代碼的更正也被讚賞。

謝謝。

回答

3

「RRRR」字符串存儲在只讀存儲器中。您應該用char g[] = "RRRR";之類的東西來替換它的聲明,以便能夠寫入它。

+0

謝謝你的解決。 :D – user3788587

+0

這是件好事。請考慮接受答案,如果它符合你的需要! – rems4e