windows 64使用nasm

在windows中使用nasm与在Linux中有所不同,主要在于函数的调用方式,nasm在linux中使用系统调用或C库函数时,参数使用寄存器的顺序是rdi,rsi,rdx,rcx,r8,r9,而在windows下,函数参数保存到rcx,rdx,r8,r9。

windows和Linux的系统调用有很多不同,windows的系统调用可以理解为Windows提供给程序员的API,也可以称为系统调用。

在nasm官方网站nasm_Win64下载nasmWin64版本。安装过程软件将安装目录添加到系统环境变量,不需要再次设置。

需要注意的是,如果在nasm汇编中使用了C库函数,这时候就需要使用gcc进行链接。

看下面的例子:

; hello.asm
; nasm -f win64 -o hello.obj hello.asm
; gcc hello.obj -o hello.exe
        global main
        extern puts
section .text
main:
        sub rsp, 20h
        mov rcx, message
        call puts
        add rsp, 20h
        ret
message:
        db "Hello",0

上面的代码中,使用extern puts声明了该程序需要使用外来的函数puts,在main函数中,将rsp减去20h,是为了开辟栈空间,最后要收回,把字符串的地址加载到寄存器rcx,上面说过,windows 64位调用函数时,参数保存在rcx,rdx,r8,r9。然后使用call指令调用函数puts,最后收回栈空间,然后返回。

编译和链接后,会生成hello.exe程序,在命令行下运行该程序,会打印字符串。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NASM开发了IDE,听起来很复杂,但并不像看上去那么复杂。虽然汇编编程不是那么容易的微分方程(可能是一个坏例子)。该IDE设计重量轻,但同时使用方便。因为汇编编程对于所有的命令行来说都是一件痛苦的事情。现在有人可能会说记事本++可以完成这项工作,但事实是记事本++只是一个具有可扩展插件的高级源代码编辑器。 特点:创建和打开一个项目(就像在Visual Studio中那样,但要容易得多)。项目格式基于XML,类似于Visual Studio解决方案 ;能够 突出显示语法的源编辑器,具有 调试/运行和构建(编译、链接)、输出窗口(用于错误和警告) 、编译后实时突出显示错误,日志记录系统,其中一个方便的日志文件在应用程序旁边,以防最坏的情况发生——应用程序由于灾难性的未散列错误而崩溃。 自动更新功能,允许您在IDE中更新,无需从源代码重新生成或下载并安装任何东西。能够组装COM文件。需要一台可以运行旧MS-DOS代码的计算机。 添加了对PowerShell脚本和批处理脚本的内部脚本支持。对于高级用户。单击文档链接, 了解如何工作:NASM开发IDE高级功能指南:使用自定义脚本功能构建所有功能都可以在程序中完成。记住,只是一个简单易用的图形界面。最好的是不需要NASM命令行经验。不支持C,请记住,我设想这个项目是一个简单易用的NASM IDE,如果您想开发C应用程序,它们是许多专有的IDE,如Visual Studio,甚至是开源的。这意味着没有C源文件。 但是,如果你真的非常需要它,它不使学习NASM或其他低级汇编语言变得容易。它只是让构建NASM应用程序变得更容易,而不必反复输入无聊的命令;或者反复运行相同的脚本。尽管我可能会添加几个从小型到中型的NASM示例项目,但只要第一个预览版本发布了。如果社区想要捐赠优秀的示范项目,那就加入这个项目吧。 截至2012年11月17日,第一个测试版已经发布了许多错误修复、功能和改进。官方支持Windows 8!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值