在 32 位 Windows 上使用 NASM 在程序集中创建 exe 文件

2023-11-27

我正在用汇编语言编写一个 hello world 程序NASM在 32 位上Windows 7的。我的代码是:

section .text 
global main ;must be declared for linker (ld) 
main: ;tells linker entry point 
    mov edx,len ;message length 
    mov ecx,msg ;message to write 
    mov ebx,1 ;file descriptor (stdout) 
    mov eax,4 ;system call number (sys_write) 
    int 0x80 ;call kernel 
    mov eax,1 ;system call number (sys_exit) 
    int 0x80 ;call kernel 

section .data 
    msg db 'Hello, world!', 0xa ;our dear string 
    len equ $ - msg ;length of our dear string

我将此程序另存为你好.asm。接下来,我创建了hello.o with:

nasm -f elf hello.asm 

现在我正在尝试创建exe使用此命令创建文件:

ld -s -o hello hello.o 

但现在我收到这个错误:

ld 不被识别为内部或外部命令、可操作程序或批处理

为什么我会收到此错误,如何修复它?


下载并安装Mingw。然后放nasm在明格bin文件夹。 在中创建一个文件夹bin文件夹名为Hello。在此文件夹中, 创建一个名为main.asm使用以下代码:

extern _printf
global _main

section .data
msg: db "Hello, world!",10,0

section .text
_main:
    push msg
    call _printf
    add esp,4   
    ret

从文件夹内打开终端并编译, 首先,使用 nasm 对象代码:

D:\MinGW\bin\Hello> ..\nasm -fwin32 main.asm

二、打电话gcc链接:

D:\MinGW\bin\Hello> ..\gcc main.obj -o main.exe

最后测试一下:

D:\MinGW\bin\Hello> main.exe
Hello, world!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 32 位 Windows 上使用 NASM 在程序集中创建 exe 文件 的相关文章

  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • GetEventLogs() 返回没有设置事件日志?

    采取以下 C 代码 EventLog eventLogs eventLogs EventLog GetEventLogs computername foreach EventLog evt in eventLogs statusMessag
  • 如何以编程方式清除 Kerberos 票证缓存

    有谁知道如何使用托管 非托管代码清除本地计算机上的 Kerberos 票证缓存 提前致谢 我相信你需要打电话给LsaCa llAuthentication包 http msdn microsoft com en us library aa3
  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • Windows 控制台支持 ANSI 吗?

    Windows 控制台支持 ANSI 控制字符吗 默认情况下它不支持许多 ANSI 控制字符 维基百科文章中也提到了这一点 http en wikipedia org wiki ANSI escape code http en wikipe
  • 如何使用 WinAPI 读取 MessageBox 文本

    如何读取标准Win消息框 Info 的消息 Using SendMessage this HandleControl WM GETTEXT builder Capacity builder 我只能读取消息框的标题或按钮的文本 但不能读取消息
  • MinGW g++ 在自己的包含目录中找不到标头

    所以我最近通过最新版本安装了 MinGWnuwen 的 MinGW 发行版 http nuwen net mingw html其中包括 boost C 库 具体来说 我正在寻找 boost 库提供的scoped ptr 但是 当我尝试包含s
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • JNA Windows 服务启动类型

    我一直在使用 JNA 并且能够使用下面的代码返回 Windows 服务的状态 即启动或停止 但我不确定如何返回服务的启动类型 我确信 JNA 之外还有其他方法 但如果可能的话我想继续使用 JNA import com sun jna imp
  • 为什么 %processor_architecture% 总是返回 x86 而不是 AMD64

    我正在尝试检索环境变量来检测系统是32位还是64位 但在64位服务器上环境变量 processor architecture 正在返回x86代替AMD64 有人对此有任何线索吗 您可能获得了错误的环境变量 如果您的应用程序是在 64 位操作
  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • 尝试使用 C++ 创建一个计划任务运行一次,win7 上的任务计划程序 1.0

    我正在尝试创建一个非常简单的程序 它将在两分钟后运行记事本 这些都经过简化以提出更清晰的问题 我尝试合并一些MSDN 的例子 http msdn microsoft com en us library windows desktop aa3
  • 如何使用 cython 编译扩展?

    我正在尝试从示例页面编译一个简单的 cython 扩展here http docs cython org src userguide tutorial html在我安装了 Python 2 6 64 位版本的 Windows 7 64 位计
  • NSIS获取参数

    to get n 0值作为字符串 不需要选项 传递给安装程序 我不太明白这个函数的工作原理是什么 GetParameters input none output top of stack replaces with e g whatever
  • 具有重复符号的 C++ 插件库上的段错误

    我有一个跨平台 C 应用程序 它分为多个共享库 并从插件共享库加载附加功能 插件库应该是自包含的并自行运行 无需了解或依赖于调用应用程序 其中一个插件包含从主应用程序复制的代码 因此包含与引擎中的符号名称重复的符号名称 是的 我知道这通常是
  • 如何从页眉和/或页脚确定 PE 可执行文件的大小

    假设您有要雕刻的数据流或字节块 如何确定可执行文件的大小 PE 可执行文件格式中有许多标头 但是我使用哪些标头部分来确定 如果可能 可执行文件的总长度 这是文件格式的图片 如果PE文件格式良好 计算可以简化为 伪代码 size IMAGE
  • win32 GUI 应用程序在作为“app.exe --help”调用时将使用文本写入标准输出

    如何创建执行以下操作的 Windows 应用程序 当不使用命令行参数调用时 它是一个常规的 GUI 应用程序 指定可选的 help 命令行参数会导致应用程序将使用文本写入标准输出 然后终止 它必须是单个可执行文件 让控制台应用程序执行第二个
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o

随机推荐

  • 使用保留字时间戳作为字段名称(Firebird 2.5)

    除了 MSSQL 和 SQLite 之外 我还正在扩展现有应用程序的数据层以与 Firebird 2 5 配合使用 但我遇到了障碍 我有一个名为 TimeStamp 的字段 它将数据 时间存储为 TimeStamp 类型 这在类型为日期时间
  • WCF 服务作为 MVC 应用程序的一部分

    我有一个 MVC4 中的 Web 应用程序 我将主持一个共享主机提供者 我想用 WCF 服务来扩展它来上传文件 将有一个 WPF 桌面应用程序 允许用户直接从他们的 PC 上传文件 我宁愿以某种方式 一起 托管它 以避免对存储目录的读 写访
  • 正则表达式中`[.]`与`.`之间的差异

    下面的表达式并不相同 and 为什么会这样 它们究竟有何不同 之间有什么相互作用 以及正则表达式中的特殊字符 谢谢 The dot 通常是通配符 匹配任何字符 在一个字符类中 但是 它被视为文字并且仅匹配点
  • 如何创建覆盖 Windows 标题栏的 Java Swing 应用程序?

    我正在开发一个将用于心理学实验的 java swing 应用程序 研究人员要求我让该程序 黑屏 以便用户不会受到外界刺激 他们希望 Swing 应用程序能够真正全屏 并且顶部没有任何类型的标题栏或最小化 最大化 关闭按钮 该软件将在使用 J
  • 如何使用 AngularJS NgRoute 启动 MixItUp

    我一直在使用 AngularJS 设置一个 jquery 插件 MixItUp 虽然我可以在使用 NgRoute 的部分视图之一中成功启动容器 但一旦我移动到其他页面视图并返回 MixItUp 似乎不知道如何启动设置再次 我尝试过 docu
  • 选择列列表中至少有一个值不为空的行

    我有一个包含许多列 例如 1000 的大数据框 我有一个列列表 由脚本生成 10 我想选择原始数据框中的所有行 其中至少我的列列表之一不为空 因此 如果我提前知道列数 我可以这样做 list of cols col1 df df list
  • 如何使用其他命名空间中的对象以及如何在 PHP 中导入命名空间

    这两行之间的主要区别是什么 obj new ArrayObject obj new ArrayObject 当我使用第一行时 出现错误 Fatal error Class Foo Bar ArrayObject not found 我不太确
  • 正则表达式匹配可以基于两行文本吗?

    假设我有 def abc xyz abc 我想匹配 xyz abc 作为一个整体 使用最通用的正则表达式可以实现这一点吗 这不是具有多行标志的 perl RegEx 或 Net Regex 我猜应该是 BNF 来匹配这个 许多正则表达式实现
  • jCarousel:您可以删除所有项目并重新绑定到新集合吗?

    jCarousel 文档陈述如下 通过传递回调函数 itemLoadCallback 作为配置选项 您可以动态地create li 内容项 jCarousel 包含一个方便的方法 add 可以将项目的索引传递给create以及要创建的项目的
  • 如何按特定月份/日期过滤日期数据框?

    所以我的代码如下 df Dates df Dates index month 11 我正在做一个测试 看看是否可以过滤月份 以便它只显示 11 月日期 但这不起作用 它给我以下错误 AttributeError Int64Index 对象没
  • 调用 POST 方法后 Spring 控制器返回 404

    我有一个从 JQuery post 调用的 Spring 控制器 当它被调用时 控制器的方法被调用并返回 但随后 Spring 在后台更改 URL 并调用服务器增益 服务器响应 404 我认为这是对 Spring 在处理 POST 方法后尝
  • spring 3上传很多文件

    是的 我们的客户想要上传多个文件 我们使用 spring 3 mvc 官方的例子是这样的 markup
  • 如何在 WinRT 应用程序中获取实际语言?

    是否有可能像 Windows Phone 一样获取操作系统的实际语言 我在用着CultureInfo CurrentCulture TwoLetterIsoString 但我总是收到 en 而不是正确的语言 即de就我而言 那么如何获取 W
  • 如何在 Meteor 中访问客户端 IP 地址? [复制]

    这个问题在这里已经有答案了 这似乎是一个非常基本的问题 没有一个优雅的解决方案 答案 如何从 1 服务器或 2 客户端访问客户端 远程 IP 地址 获取客户端IP 如果没有 http 请求 在函数中您应该能够通过以下方式获取 clientI
  • 变量变量

    如何在 for 循环内创建可变变量 这是循环 for counter 1 counter lt aantalZitjesBestellen counter 在这个循环中 我想在每次通过时创建一个变量 seat 但它必须像这样递增 第一次通过
  • Travis CI 忽略 MAVEN_OPTS?

    我的 Scala 项目 Maven 管理的 无法在 Travis 上构建 抛出一个GC overhead limit exceeded尽管在本地用相同的方法编译得很好 但仍然出错MAVEN OPTS Xmx3g XX MaxPermSize
  • ASP.NET 自定义控件 - 仅包含一次嵌入 CSS 引用的最佳方法是什么?

    问题 我将 CSS 文件嵌入到具有多个控件的自定义控件库中 我想为所有控件共享相同的 CSS 文件 无论给定表单上有多少个控件实例 当表单上有多个控件时 我希望在 ASP NET 页面的 HTML 标头中恰好有 1 个对 CSS 文件的引用
  • jQuery - 删除所有具有相似名称的类

    有没有更好的方法来做到这一点 element removeClass class 1 removeClass class 2 removeClass class 3 removeClass class 5 to removeClass cl
  • 为什么 @objc 枚举的描述与纯 Swift 枚举不同?

    考虑两个 Swift 枚举 enum Foo Int case bar objc enum Baz Int case qux 如果我要print each case对于这些枚举 我期望得到相同的结果 相反 我看到了一些意想不到的东西 pri
  • 在 32 位 Windows 上使用 NASM 在程序集中创建 exe 文件

    我正在用汇编语言编写一个 hello world 程序NASM在 32 位上Windows 7的 我的代码是 section text global main must be declared for linker ld main tell