概要
as86是 8086…80386 处理器的汇编器,它的语法更接近 intel/microsoft 形式,而不是更普通的 unix 系统汇编器的通用形式。
描述
as86 [ -0123agjuw ] [ -lm [列表]] [ -n 名称] [ -o obj ] [ -b [ bin ]] [ -s sym ] [ -t textseg ] src
as86_encap prog.s prog.v [ prefix_ ] [ as86_options ]
src文件可以是“-
”来组装标准输入 。
该汇编器可以编译为支持 6809 cpu
,甚至可以工作。
as86_encap
是一个 shell 脚本,用于调用 as86 并将创建的二进制文件转换为 C 文件prog.v
以包含在或与引导块安装程序等程序链接。prefix_
参数是要添加到源定义的所有变量的前缀,它默认为源文件的名称。定义的变量包括用于定义和包含代码的prefix_start
、prefix_size
和prefix_data
,以及包含所有导出标签值的整数。prog.s
和prog.v
参数中的一个或两个都可以是标准输入/输出的“-”。
选项
-0
从 16 位代码段开始,警告所有指令 > 8086
-1
从 16 位代码段开始,警告所有指令 > 80186
-2
从 16 位代码段开始,警告所有指令 > 80286
-3
从 32 位代码段开始,不要警告任何指令。(甚至不是 486 或 586)
-one
启用与 Minix asld 的部分兼容性。这交换了圆括号和方括号的解释,并更改了 16 位跳转和调用的代码生成和语法。(“jmp @(bx)
” 是一个有效的指令)
-G
只将全局符号放在对象或符号文件中
-j
用类似的 16 位或 32 位跳转替换所有短跳转,16 位条件分支被编码为一个短条件分支和一个长无条件分支。
-O
这会导致汇编器添加额外的传递以尝试使用前向引用来减少某些指令所需的字节。如果标签在最后一遍移动,则汇编器将继续添加遍,直到标签全部稳定(最多 30 遍) 将其与手写汇编器一起使用可能不是一个好主意 使用8086的显式br bmi bcc样式操作码条件 i386 指令的代码或jmp near样式,并确保在使用之前定义所有变量。
-l
生成列表文件,文件名可能跟在后面
-m
在列表中打印宏扩展
-n
模块名称如下(进入对象而不是源名称)
-o
生成目标文件,文件名如下
-b
生成一个原始二进制文件,文件名可能会跟随。这是一个没有标题的“原始”二进制文件,如果没有-s
选项,文件从位置 0 开始。
-s
生成一个 ASCII 符号文件,文件名如下。此表的格式旨在易于解析与使用-b选项创建的二进制文件相关的封装和相关活动。如果二进制文件不是从位置零开始,则表中的前两项是二进制文件的开始地址和结束地址。
-u
假设未定义的符号是用未指定的段导入的。
-w-
允许汇编器打印警告消息。
-tn
移动段 n+3 中的所有文本段数据。
As86 源
特殊字符
*
当前行的开始地址。
; !
其中任何一个都标志着评论的开始。此外,行首的任何“意外”字符都被假定为注释(但它也显示在终端上)。
$
十六进制数字的前缀,“C”语法,例如 0x1234,也被接受。
%
二进制数的前缀。
#
立即操作数的前缀。
[ ]
指定一个间接操作数。
与 MASM 不同,汇编器在标签上没有类型信息,只有段和偏移量。这意味着该运算符和直接前缀的工作方式类似于传统的汇编程序。
例子:mov ax,bx