2013-05-19 44 views
1

我想,没有成功,从一个汇编程序调用printf如下:如何调用汇编NASM 86的Linux的printf 8086

section .rodata 
preffix: db "calc >",0 
preffix_length: equ $-preffix 

section .text 
align 16 
global main 


extern printf 

main: 
    push preffix 
    push preffix_length 
    call printf 
    ret 

但我不断收到分段错误。

我正在为Linux(ubuntu)编写NASM程序集80x86。

回答

4

您不想推送长度 - C中的字符串只是带零字节的文本地址以标记结尾。

你可以使用gdb来找出这样的事情在哪里崩溃。

+0

谢谢!这很简单。 – Javi