NASM与link、golink和alink具体例子使用对比

一、OMF文件格式链接:使用import伪指令,import伪指令可以直接使用函数名,而不用给函数名加上_前缀和@number后缀,但import伪指令仅适合于OMF(borland obj)格式输出,OMF格式是MS在16位下操作系统的目标文件格式,borland仍然使用这种格式,并将格式进行了扩展,使得可以在Win32环境下使用,NASM支持这种扩展的OMF格式,但必须显式指定生成32
摘要由CSDN通过智能技术生成

一、OMF文件格式链接:使用import伪指令,import伪指令可以直接使用函数名,而不用给函数名加上'_'前缀和'@number'后缀,但import伪指令仅适合于OMF(borland obj)格式输出,OMF格式是MS在16位下操作系统的目标文件格式,borland仍然使用这种格式,并将格式进行了扩展,使得可以在Win32环境下使用,NASM支持这种扩展的OMF格式,但必须显式指定生成32位的obj。由于import伪指令需要OMF格式的支持,而MS的link.exe连接器会在连接时自动将OMF格式转换成COFF格式,从而无法完成导入外部标志的操作,因此,需要一个直接支持连接OMF格式的连接器,这里推荐开源连接器alink.exe。alink.exe连接器将根据import伪指令生成的连接信息,找到所需动态库,并自动导入外部函数符号。..start也是NASM针对OMF格式设计的程序入口简化标志,export伪指令生成的导出指令也将由alink.exe来执行。注意:alink.exe不支持段合并(至少我不知道如何使用alink.exe进行段合并>_<),因此,连接生成的EXE程序稍大一些,为2.51kb,有3个段,而上述另两种操作生成的EXE文件只有一个.text段。
1、32位程序例子:
;filename:obj32.asm
import MessageBoxA user32.dll
extern MessageBoxA
import ExitProcess kernel32.dll
extern ExitProcess

global obj32
export obj32

[SECTION CODE USE32 CLASS=CODE]
szTitle:
    db "SayHello",0
szMsg:
    db "Hello World!", 0
obj32:
    push 0              ;uType
    push dword szTitle  ;lpCaption
    push dword szMsg    ;lpText
    push 0              ;hWnd
    call [MessageBoxA]
    ret 16
 
..start:
    call obj32
    push 0
    call [ExitProcess]

使用alink。
cmd> nasm -fobj obj32.asm
cmd> alink -oPE  obj32.obj

2、16位程序例子:
;filename:obj16.asm
segment code  use16
str1: db "name$"

segment data use16
..start:
mov ax,code
mov ds,ax
mov dx,str1
mov ah,9
int 21h
mov ah,4ch
int 21h

使用alink。
cmd> nasm -fobj obj16.asm
cmd> alink obj16.obj 或alink -oEXE obj16.obj

二、微软Win32平台的coff文件格式链接:这种

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用NASM编写汇编程序,可以按照以下步骤进行: 1. 下载并安装NASM。可以从NASM官网(https://www.nasm.us/)下载适合你的操作系统的安装包,然后按照提示进行安装。 2. 编写汇编程序。使用文本编辑器编写汇编程序代码,保存为.asm文件。 3. 使用NASM将汇编程序编译成二进制文件。在命令行窗口中,进入.asm文件所在的目录,然后输入以下命令: ``` nasm -f bin -o output.bin input.asm ``` 其中,output.bin是编译生成的二进制文件名,input.asm是你编写的汇编程序文件名。 4. 使用DOSBox运行编译生成的二进制文件。DOSBox是一个模拟DOS环境的软件,可以在现代的操作系统中运行DOS程序。将编译生成的二进制文件复制到DOSBox的虚拟磁盘中,然后在DOSBox中运行该程序。具体步骤如下: - 启动DOSBox,进入虚拟DOS环境。 - 将编译生成的二进制文件复制到DOSBox的C盘根目录下。可以使用DOSBox提供的共享文件夹功能,将本地文件夹共享给DOSBox,然后在DOSBox中访问共享文件夹。 - 在DOSBox中执行以下命令,运行编译生成的二进制文件: ``` c:\output.bin ``` 其中,output.bin是你编译生成的二进制文件名。 以上就是使用NASM编写汇编程序并在DOSBox中运行的基本步骤。需要注意的是,具体的操作步骤可能会因操作系统和软件版本的不同而有所差异,请根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值