我创建了一个新的string.s:
section .data
answer:DB "shit",10,0
section .text
align 16
extern printf
extern puts
global string
string:
push ebp
mov ebp, esp ; Entry code - set up ebp and esp
pusha ; Save registers
;mov ecx, dword [ebp+8] ; Get argument (pointer to string)
_return:
popa ; Restore registers
mov eax,[answer]
push answer
call puts
add esp,4
mov esp, ebp ; Function exit code
pop ebp
ret
我有主文件calc.s,它调用没有参数的字符串函数。 字符串返回一个指向字符串的指针" shit" ,返回值保存在指针中 然后打印出来:
section .data
pointer: DD 0
value_pritner: DB "the value is %s",10,0
...
some other irrelevant code
...
call string
mov [pointer],eax
add esp,4
push pointer
push value_printer ;
call printf
add esp,8
在运行程序时我正在使用stdout
the value is / / ;between there pointer value that according
id不知道为什么 eax 的值不是指向字符串的指针 我也试过
mov eax,answer
仍然没有