扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
摘要:本文主要讲述了Linux下使用汇编的利弊,以及常用汇编工具的使用和语法特点。重点讲述了NASM。
引言:汇编语言是低级语言,与硬件和操作系统紧密联系。个人电脑以前都是用DOS,现在发展成了WINDOWS 98,而另一个操作系统Linux也正在崛起。下面比较一下这三个操作系统:
DOS较稳定,速度快无法充分发挥计算机性能,没有图形界面较低。
WINDOWS 98操作简便,应用软件多,硬件兼容性好;不稳定,经常死机,速度慢高。
Linux性能优秀,非常稳定,界面美观,操作简便;缺乏软件厂商支持,应用软件少免费。
由以上的比较可知,Linux操作系统本身具有较大优势,它的普及应该只是时间问题,所以如何在Linux下开发软件是我们计算机系学生必须学习与研究的一个课题。
Linux 下的主要编程语言是C,同时Linux还支持其他许多编程语言,汇编语言作为最重要的编程语言之一,当然也包括在内。它能够完成许多其他语言所不能完成的功能。要学习Linux编程,就必须要学习Linux下的汇编程序设计。下面我就来介绍一下Linux下的汇编程序设计。
Linux汇编简介
一、汇编语言的优缺点
由于Linux是用C写的,所以C自然而然的就成为了Linux的标准编程语言。大部分人都把汇编给忽略了,甚至在因特网上找资料都是非常的困难,很多问题都需要靠自己来尝试。我认为这样对待汇编语言是不公平的,不能只看到它的缺点,当然也不能只看到它的优点,下面把它的优缺点作一个比较:
优点:汇编语言可以表达非常底层的东西
可以直接存取寄存器和I/O;
编写的代码可以非常精确的被执行;
可以编写出比一般编译系统高效的代码;
可以作为不同语言或不同标准的接口。
缺点:汇编语言是一个非常低级的语言
非常冗长单调,在DOS下编程时就可以体会到;
易出BUG,且调试困难;
代码不易维护;
兼容性不好,与硬件关系非常紧密。
总的来说,汇编语言要用在必须的地方,尽量少用汇编编写大型程序,多采用inline模式。
二、汇编语言工具
DOS 下常用的工具MASM和TASM到Linux下就用不起来了,Linux有自己的汇编工具,而且种类非常的多。其中Gas可以算是标准配置,每一种 Linux中都包括有Gas,但是GAS采用的不是我们通常在DOS下采用的汇编语法,它采用的是AT&T的语法格式,与intel语法格式有很大的不同。
如果要采用与DOS接近的语法格式,就必须用另一种汇编工具NASM,NASM基本与MASM相同,但也有不少地方有较大区别,特别涉及到操作系统原理时,与DOS可以说是截然不同。
Linux汇编程序设计
一、Hello,world!
几乎所有的语言入门篇都是以“Hello,world!”为例,那么我也以Hello,world!为例开始。
|
说明:这个程序实际上是调用了,Linux系统的puts函数,原理与调用DOS下C语言的函数相同,先用Extern声明puts是外部函数,再把参数(即msg的地址)压入堆栈,最后Call函数实现输出。
我们再来看一个程序:
|
这个程序与DOS程序十分相似,它用的是linux中的80h中断,相当于DOS下的21h中断,只是因为Linux是32位操作系统,所以采用了 EAX、EBX等寄存器。但是Linux作为一个多用户的操作系统与DOS又是有着非常大的区别的。要写出有特色的程序,不了解操作系统和硬件是不行的。下面我介绍一下Linux操作系统。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者