linux输出汇编,汇编程序输出未在我的Linux机器上运行

本文介绍了一个简单的64位Linux环境下使用NASM编写的汇编程序,该程序调用C语言中的printf函数来打印字符串。文章提供了完整的源代码,并详细说明了编译和链接过程。

我跟踪了此页面并编译了以下代码; assembly program that calls a C function on 64-bit Linux

;

; int main(void) {

; printf(fmt, 1, msg1);

; printf(fmt, 2, msg2);

; return 0;

;

; Assemble in 64-bit: nasm -f elf64 -o hp64.o -l hp64.lst hello-printf-64.asm

;

; Link: ld hp64.o -o hp64 -lc --dynamic-linker /lib/ld-2.7.so

; or maybe ld hp64.o -o hp64 -lc --dynamic-linker /lib/ld-linux-x86-64.so.2

; (the "-lc" option is needed to resolve "printf")

;---------------------------------------

section .data

fmt db "%u %s",10,0

msg1 db "Hello",0

msg2 db "Goodbye",0

section .text

extern printf

global _start

_start:

mov edx, msg1

mov esi, 1

mov edi, fmt

mov eax, 0 ; no f.p. args

call printf

mov edx, msg2

mov esi, 2

mov edi, fmt

mov eax, 0 ; no f.p. args

call printf

mov ebx, 0 ; return value

mov eax, 1

int 0x80

通过nasm -f elf64 -o hp64.o -l hp64.lst hello-printf-64.asm

ld hp64.o -o hp64A -lc --dynamic-linker /lib/ld-2.7.so

ld hp64.o -o hp64B -lc --dynamic-linker /lib/ld-linux-x86-64.so.2

hp64A和hp64B可执行文件hp64B无法运行。$ ./hp64A

bash: ./hp64A: No such file or directory

$ ./hp64B

bash: ./hp64B: No such file or directory

两者都是可执行文件。$ ll

total 30

drwxrwxrwx 1 ar2015 ar2015 4096 Nov 7 23:23 ./

drwxrwxrwx 1 ar2015 ar2015 4096 Nov 7 22:46 ../

-rwxrwxrwx 1 ar2015 ar2015 928 Nov 7 22:47 hello-printf-64.asm*

-rwxrwxrwx 1 ar2015 ar2015 2960 Nov 7 23:21 hp64A*

-rwxrwxrwx 1 ar2015 ar2015 2976 Nov 7 23:21 hp64B*

-rwxrwxrwx 1 ar2015 ar2015 2448 Nov 7 23:21 hp64.lst*

-rwxrwxrwx 1 ar2015 ar2015 1104 Nov 7 23:21 hp64.o*

我的机器是$ uname -a

Linux ar2015co 4.15.0-66-generic #75~16.04.1-Ubuntu SMP Tue Oct 1 14:01:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

如何运行这些可执行文件?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值