我想在NASM汇编程序中使用strstr C函数,但似乎无法使其正确打印出来。我尝试了多种变化,但我想我可能会误解NASM如何从C返回指针值,因为我在printf或'(null)'中返回空行。为什么我无法获得正确的印刷回报值?有些人可以帮我填补吗?在NASM中使用strstr()的返回值?
section .data
str1 db "Here is some text with a word",0x0A,0x00
str2 db "text",0x0A, 0x00
strFmt db "%s",0x0A,0x00
global _start
extern printf
extern strstr
section .text
_start:
push ebp
mov ebp, esi
push str2
push str1
call strstr
add esp, 8
mov dword [myString], eax
push dword [myString]
push strFmt
call printf
add esp, 8
_exit:
mov ebx, 0
mov eax, 1
int 0x80
这看起来像一个错字:'mov ebp,esi'。我敢打赌,你的意思是来源于'esp'那里。另外,什么是'myString'?即使您使用它,这也未在您所展示的代码中定义。为什么不直接'直接推eax'? –
我看到你使用'int 0x80',所以我认为这是Linux或macOS。请下次在您的问题中添加此信息。 Windows上的情况稍有不同。 –