Linux汇编语法简介._第1页
Linux汇编语法简介._第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux汇编语法简介一、通用语法指令格式: 操作码 源操作数, 目的操作数(在有两个操作数的情况下)。常量表示: 在常量前加上$,例:$1$的另一种用法:用于符号时,表示的是一个首地址。例:string:.ascii hello worldn0movl $string, %eax #首地址复制到eax寄存器表示: 在寄存器名前加上%,例:%eax对不同长度的操作数操作:分别在指令后加上b、w、I,表示字节(8位)、字(16位)、双字(32位)例:movb $1, %al, movw $1, %ax, movl $1, %eax(注:一般情况下,都是32位操作)。不同进制数的表示:十六进制以0

2、 x开头,例:$0 xffff十进制没有符号,例:$1八进制以0开头,例:$0777二进制以0b开头,例:$0b1111注释:#号开头用于单行/*/用于多行。每条汇编语句以换行和回车这两个字符为结束。(注意:当写完程序的最后一条语句,不要忘记按enter键,否则编译时会提示最后一条语句的出错)二、寻址通用内存寻址:地址或偏移量(%首地址或偏移量, %索引,字节数),其中所有的参量都是可选的。以下的几种寻址是通用方式的变形: 直接寻址:movl 0 xff11, %eax索引寻址:movl string(, %ecx, 1), %eax # string是事先已定义过的标签,代表一个首地址。整个

3、意思是读取一组数据的某一个,长度为一个字节,复制到eax。(相当于数组)适用于数据段寻址。间接寻址:movl (%eax), %ebx #把eax所指向的值复制到ebx(相当于指针操作)基址寻址:movl 4(%ebp), %ebx #据)。适用于堆栈寻址。把ebp的地址偏移4个字节所取得的值复制到ebx(通过基址指针加偏移量来寻找数立即数寻址:movl $1, %eax #把一个常量直接复制到寄存器三、常用伪指令段表示:.data数据段.bss(block started by symbol)符号开始段.text代码段基本数据类型(可以用逗号分割多个表达式或字符串):.byte表达式:8位(

4、0 - 255)例:.byte 100, 200, 300.int表达式:16位(0 - 65535)例:.int 1000.long表达式:32位(0 - 4294967295)例:.long 100000.ascii 字符串:以0为结束符,例:.ascii hello0.global(或.globl)符号:定义全局符号,例:.global _start,这是每个Linux下的汇编程序代码段的第一个定义,它指定了 整个程序与运行环境交互的入口(相当于C中的main函数)。.equ符号,表达式:等价替换(可用于局部变量的定义)。例:.equ LINUX_SYSCALL 0 x80 .lcomm

5、符号,字节数:在.bss段中声明未初始化变量的内存空间(适用于全局和静态变量的声明) 例:.bss.lcomm buffer, 256函数表示:.type符号, function例:.type func, functionfunc:.include文件:外部文件的调用 例:.include outside.s四、程序基本结构.data.bss.text.global _start_start:五、系统调用Linux的系统调用的中断号是0 x80,参数的传递要通过通用寄存器来完成。 这里对寄存器的使用有一些约定:eax存放系统调 用的编号,参数依次放入ebx,ecx,edx,esi,edi,最后用int $0 x80指令完成调用。例:程序结束后的正常退出movl $1, %eaxmovl $0, %ebxint 0 x80这相当于在C中执行了exit(0)。六、程序的编译汇编器命令:as参数:-gstabs:产生符号表,用于调试-o:自定义输出的文件名,由于通过汇编器产生的是目标文件,因此,必须是后缀名为.o的文件-help:帮助例:as -gstabs test.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论