存档

文章标签 ‘AT&T’

80×86汇编基础(四)——Hello world!

2011年7月3日 1 条评论

学习过程序设计语言的朋友,应该不会对Hello world感到陌生,相信大部分朋友跟我一样,刚开始接触某种语言,写的第一个程序就是Hello world。学习C、C++、Java这些高级语言如此,学习Bash、Php、Python这些script语言亦是如此。本篇是8086汇编系列的第四篇,通过前面三篇的介绍,我们已经具备了写Hello world的基本知识,本篇就让我们来看看用8086的汇编,如何实现Hello world。在开始之前,需要说明一下,因为我个人的开发环境是在Linux下,所以本文采用了AT&T的汇编语法。关于AT&T与Intel语法的差异,我在第三篇中已经有所介绍,不了解的朋友可以先看第三篇的内容。在今后本系列的文章中,如果没有特别的说明,我所采用的环境都是Ubuntu 11.04 i386, 内核版本2.6.38-8-generic, GCC版本4.5.2, GDB版本7.2。
下面我提供两个版本的Hello world的实现,通过这两个例子,来说明一些在Linux下用8086汇编进行程序设计的基本过程与一些注意事项:

  • 1. 通过系统调用write实现
  • 阅读全文…

    80×86汇编基础(三)——基本语法

    2011年6月26日 2 条评论

    本文是继之前写过的两篇8086系列文章的第三篇,主要内容是对8086汇编的基本语法做一个总结与介绍。当前,在Windows平台上,用的大都是Intel的语法,而在Linux平台上,由于早期的GCC中用的是AT&T的语法,所以现在在Linux平台上,用的比较多的是AT&T的语法,Intel的语法在Linux平台上也有用,但是不常见。但是,总的来说,Intel和AT&T的汇编语法,都是目前比较常见的汇编语法,我们都有必要都进行了解一下,下面分别从几个方面通过对比,来介绍两种语法。

  • 1. 寄存器的命名
  • 1
    2
    
    AT&T: %eax, %ebx, %ecx, %edx
    Intel: eax, ebx, ecx, edx

    如上所示,AT&T的语法中,寄存器前面要加%号,而Intel的不用。 阅读全文…

    分类: 程序人生 标签: , , ,