32位汇编语言helloworld_在Linux下的汇编语言

ac2688f7d442c4ffe50ebeeddac9863e.png

在学习Linux操作系统的过程中,顺便学习了汇编语言,在操作系统的学习过程中,总共遇到过三种汇编,16位实模式下的汇编,32位保护模式下的汇编,C语言的内嵌汇编。这三种汇编分别用在不同的场景。如实模式下的汇编是在刚开机到操作系统启动这段时间运行,主要用来加载操作系统到内存,跳转执行操作系统程序。32位汇编是在操作系统接管硬件之后使用。C语言内嵌汇编可以用在一些代码关键部分,需要对硬件绝对控制的部分。

除了上面这样的分类之外,汇编语言还有两种不同的风格,一种是AT&T风格汇编,一种是Intel风格汇编,这只是语言书写的一种约定,需要使用不同的汇编器进行汇编,学习哪一种都是可以的,但如果要学习操作系统或者以后需要看懂别人的汇编代码,最好两种都学习,总之根据自身需求,不要增加自身负担。

下面,我将具体介绍Linux平台下如何使用汇编语言。

不管在哪一平台下,使用汇编语言都需要三种基本的工具,汇编器,连接器,调试器。只要知道了这三种工具在该平台下具体是什么,就可以很顺利的在此平台下使用汇编语言。

在Linux下,这三种工具也有很多,这里主要介绍其中几种。

1、汇编器

linux下可以使用gas汇编器,这也是gcc依赖的汇编器。基本命令为:as -o hello.o hello.s,需要注意的是,gas汇编器支持的是AT&T风格的和汇编。除gas之外还有一种汇编器:nasm,这种汇编器可以很好的支持Intel风格汇编,汇编速度也更快,命令格式:nasm -f elf hello.asm

2、链接器

由汇编器产生的目标代码是不能直接在计算机上运行的,它必须经过链接器的处理才能生成可执行代码。链接器通常用来将多个目标代码连接成一个可执行代码,这样可以先将整个程序分成几个模块来单独开发,然后才将它们组合(链接)成一个应用程序。 Linux 使用 ld 作为标准的链接程序,它同样也包含在 binutils 软件包中。汇编程序在成功通过 GAS 或 NASM 的编译并生成目标代码后,就可以使用 ld 将其链接成可执行程序了: ld -s -o hello hello.o

3.调试器

Linux下可以使用GDB,DDD,ALD作为调试器

实验:在屏幕上打印出hello world

  1. 使用Vim编辑器新建hello.asm文件,写入如下代码
ceb5ea14e448f3e4f74f95072519c6a2.png
  1. 汇编,链接源代码,并执行
efa6a1aeb79a7398cf3c44e813451b43.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值