as86汇编语法

as86汇编语言程序

  • .global begtext,begdata,begbss,endtext,enddata,endbss 是全局标识符,供ld86链接用的
  • .text 是正文段 .data是数据段,.bss是未初始化数据段
  • entry start 告诉链接程序,程序是从start标号处开始执行
  • jmpi go,BOOTSEG 段间跳转
  • .org 510表示以后语句从地址510开始存放
  • 在as86汇编程序中,凡是以感叹号!或分号;开始的语句其后面均为注释文字,
  • 汇编指示符以一个字符.开始,并且不会在编译时产生任何代码,汇编指示符有一个伪操作码,后跟0或多个操作数组成,
  • 标号是后面带冒号的标识符
  • .global伪操作符用于定义随后的标号标识符是外部的还是全局的,并且即使不使用也强制引入。
  • .data .text .bss分别对应汇编程序编译产生目标文件中的3个段,即正文段、数据段和未初始化段。.text用于标识正文段的开始位置,并把当前切换到text段,.data用于标识数据段的开始位置,并把当前段切换到data段,而`.bss’用于标识一个未初始化数据段的开始,并把当前段改成bss段,
  • entry是保留关键字,用于迫使链接器ld86在生成的可执行文件中包括其后指定的标号’start‘。
  • 在as86中,间接操作数需要使用[]方括号对。
  • 定义字符串需要使用伪操作符.ascii,并且需要使用双引号盖住字符串 ,伪操作符.asciiz还会自动在字符串后面添加一个NULL(0)字符。
  • 定义字符需要使用伪操作符.byte,并且需要单引号把字符括住。
  • .org定义了当前汇编的位置。
  • 伪操作符.word用于在当前位置定义一个双字节内存对象,其后可以是一个数或者表达式

as86汇编语言程序的编译和链接

  • as86 -0 -a -o boot.o boot.s , ld86 -0 -s -o boot boot.o
    其中-0用于生成8086的16位目标程序,-a用于指定生成与GNU as和ld部分兼容的代码, -s选项用于告诉链接器要去除最后生成的可执行文件中的符号信息 -o指定生成的可执行文件名称。
as86和ld86使用方法和选项:
as的使用方法和选项:

as [-03agjuw] [-b[bin]] [-lm[list]] [-n name] [-o objfile] [-s sym] srcfile
默认设置:除了下列默认值,其他选项默认关闭或无
-3 使用80386的32位输出
list 在标准输出上显示
name 源文件的基本名词(即不包括.后的扩展名)

各选项含义
-0使用16比特的代码段
-3使用32比特的代码
-a开启与GNU as、ld的部分兼容性选项
  • b
产生二进制文件,后面可跟文件名
-g在目标文件中仅存入全局符号
-j使所有跳转语句均为长跳转
-l产生列表文件,后面可以跟随列表文件名
-m在列表中扩展宏定义
-n后面跟随模块名词,取代源文件名称放入目标文件中
-o产生目标文件,后跟目标文件名
-s产生符号文件,后跟符号文件名
-u将未定义符号作为输入的未指定段的符号
-w不显示警告信息
ld连接器的使用语法和选项:

对于生成Minix a.out格式的版本
ld [-03Mims[-]] [-T textaddr] [-llib_extension] [-o outfile] infile...
对于生成GNU-Minix的a.out格式的版本:
ld [-03Mimrs[-]] [-T textaddr] [-llib_extension] [-o outfile] infile...
默认设置:
-03 32位输出
outfile a.out格式输出

选项解释
-0产生具有16位比特魔数的头结构,并且对-lx选项使用i86子目录
-3产生具有32比特魔数的头结构,并且对-lx选项使用i386子目录
-M在标准输出设备上显示已链接的符号
-T后面跟随正文基地址
-i分离的指令与数据段输出
-lx将库/local/lib/subdir/libx.a加入链接的文件列表中
-m在标准输出设备上显示已链接的模块
-o指定输出文件名,后跟输出文件名
-r产生蛇和于进一步重定位的输出
-s在目标文件中删除所有符号

此文章内容是笔者看《linux内核源码剖析》上进行的摘录笔记

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值