char ポインターを取得する必要があり、その後、画面に出力して、正常に動作するかどうかを確認します。ファイルからテキストを読み取り、char ポインター (sizeof(char*) + filesize) + 1.. に入れます。最後に '\0' を入れます。char* を printf した場合は問題ありません。ここに私の asm コードを示します。
; void processdata(char* filecontent);
section .text
global processdata
extern printf
section .data
FORMAT: db '%c', 10, 0 ; to break the line 10, 0
processdata:
push ebp
mov ebp, esp
mov ebx, [ebp]
push ebx
push FORMAT
call printf
add esp, 8
実行すると、変数にゴミが表示されます。
バイオレットが言ったように:
; void processdata(char* filecontent);
section .text
[GLOBAL processdata] ;global processdata
extern printf
section .data
FORMAT: db '%c', 0
EQUAL: db "is equal", 10, 0
processdata:
lea esi, [esp]
mov ebx, FORMAT
oook:
mov eax, [esi]
push eax
push ebx
call printf
inc esi
cmp esi, 0x0
jnz oook
ありがとう