在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.exeglobal mainextern puts
section .text
main:sub rsp, 20hmov rcx, messagecall putsadd rsp, 20hret
message:db "Hello",0

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

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

windows 64使用nasm相关推荐

  1. Windows 64位下安装Redis详细教程

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. 工具/原料 Windows 64位操作系统 Redis 安装包 方法/步骤 Redis 安装包下载 下载地址:h ...

  2. MySQL卸载5.重新安装 8.0.20教程(windows 64位)

    1.卸载旧的MySQL(5.),旧版安装时为压缩包文件安装 参考:如何把旧版的mysql卸载干净并安装新版mysql?(若有侵权,请私聊删除) 1.先将数据进行备份: 快捷键win+R,输入cmd,回 ...

  3. mysql 8.0.22_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)

    前言 前几天下载安装了最新版的MySQL 8.0.22,遇到了不少问题,参考了一些方法,最终得以解决.今天将自己的安装过程记录下来,希望对各位有所帮助. 一.MySQL 8.0.22官网下载 点击进入 ...

  4. python环境下载_Python for Windows 64位下载

    PythonWin 64位是Windows 64为系统下的Python开发环境,由Python官方提供,Python是一种面向对象脚本语言,无论你是使用Python开发程序还是学习Python,第一步 ...

  5. Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法

    Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法 参考文章: (1)Wind ...

  6. R中安装LightGBM(Windows 64位)

    1. 适用对象 1)Windows 64位操作系统: 2)R,64-bit.如果有R i386,卸载R重装一遍,安装R时注意去掉32-bit的选项. 2. 说明 安装前请务必先阅读LightGBM R ...

  7. windows 64位mysql5.7安装

    windows 64位mysql5.7安装 一.安装mysql 1.下载mysql-5.7.15-winx64.zip http://dev.mysql.com/downloads/mysql/ 2. ...

  8. 淘宝的镜像下载蓝桥杯比赛环境python3.8.6 windows 64位安装包

    淘宝的镜像下载蓝桥杯比赛环境python3.8.6 windows 64位安装包 第十二届要求的环境 我电脑是64位的,根据个人情况自行选择 地址:https://npm.taobao.org/mir ...

  9. 电脑自带python编程软件下载_Python下载_Python for windows 64位正式版下载[编程软件]-下载之家...

          Python for windows 64位正式版是款优秀且面向对象.直译式计算机程序设计语言,Python for windows 64位正式版也是一种功能强大而完善的通用型语言,已经具 ...

最新文章

  1. html 中如何写js代码提示错误,javascript怎么进行错误处理?
  2. block关键字的使用
  3. 8s保留cpu设置_华为Mate 20 Pro的第二彩蛋-开发者人员选项可以这么设置
  4. 【大数据教程】MapReduce基本架构、统计文件中每个字符出现的次数,IP去重、计算每个人的最高分,总分
  5. 综艺节目php灭灯_非诚勿扰php程序员 结果遭女嘉宾瞬间全灭灯
  6. python条件循环叠加_Python基础:条件判断与循环的两个要点
  7. 由锚点失效引发的hasLayout探究
  8. tracepro应用实例详解_十大行业气动设备 120个典型气动系统应用实例
  9. PyTorch:损失函数loss function
  10. 剑指offer--两个链表的第一个公共结点
  11. 【POJ 3062】Party(2-SAT、tarjan)
  12. 基于exchange 2010迁移exchange 2016搭建共存环境
  13. r4900g3系统安装linux_H3C UniServer R4900 G3
  14. CVPR 2019 | 「识面知心」——基于自监督学习的微表情特征表达
  15. MacBookPro你真的会使用吗?
  16. yocto 学习:1- 什么是yocto
  17. 束手无策 MSN、QQ盗号容易追讨难(转)
  18. GWL30地下水情监测仪
  19. 蓝牙扫描枪直连蓝牙打印机
  20. Android录音-音频基础知识

热门文章

  1. VS系统找不到指定文件怎么解决
  2. 专升本高数——第六章 向量代数与空间解析几何【学习笔记】
  3. Linux下网卡驱动安装及故障排除
  4. 基于blender的点云数据渲染
  5. (附源码)小程序 长沙县图书馆图书导览系统 毕业设计 170900
  6. 金蝶KIS旗舰版盘点机PDA,销售出库单扫码校验,出库扫码校验核对,金蝶生产管理软件,金蝶仓库条码管理
  7. JAVA定义银行账户类
  8. 华为鸿蒙系统操作教程_华为鸿蒙2.0系统怎么退回EMUI11系统?手把手教你如何进行操作...
  9. CCF CSP认证菜鸟刷题日志
  10. 使用latex投稿时,tex文件不能生成pdf查看的问题解决方案