私は実行ファイルに渡されたファイル名を読み込み、アセンブリを使用してそのファイルに書き込もうとしています。それはエラーなしでコンパイルされますが、実行すると失敗します。私のコードで何が間違っていますか?あなたはあなたのlibcから呼び出されているのでargvからx86アセンブリ経由でファイル名を読み取る
BITS 32
segment .data
text db "text"
segment .text
global main
main:
pop ebx
pop ebx
pop ebx ; pop pointer to filename into ebx
mov eax,0x5 ;syscall open
mov ecx,0x2 ;flag read/write
int 0x80 ;call kernel
mov ebx,eax ;save returned file descriptor
mov eax,0x4 ; write syscall
mov ecx,text ;mov pointer to text into ecx
mov edx,0x4 ;string length
int 0x80 ;exit syscall
mov eax,0x1
int 0x80
あなたは4バイト文字列(文字列はアセンブリで自動的にゼロ終了しない)から5バイトを書いています。 – user786653
コードを転記する前にそのビットを変更するのを忘れました。テキスト文字列を変更しました。 – evanjs
別のこと:ファイル名に 'argv [0]'と同じCを使用していませんか? – user786653