RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1060544
Accepted
Don2Quixote
Don2Quixote
Asked:2020-12-19 07:22:15 +0000 UTC2020-12-19 07:22:15 +0000 UTC 2020-12-19 07:22:15 +0000 UTC

在 Windows x32 / x64 下编译 NASM

  • 772

我有 Windows x64。我想使用 NASM 为这个系统在汇编程序中编写一些工作(尽管世界你好)。在 DosBox 下,一切都变得比以往更容易,在 dosbox 中编译、启动——它可以工作。

$ nasm -f bin code.asm -o main.com

在 Windows 下 - 不可能弄清楚是什么。试过:

$ nasm -f win64 code.asm -o main.exe

试过:

$ nasm -f win64 code.asm -o code.o
$ gcc code.o -o main.exe

试过:

$ nasm -f elf code.asm -o code.o
$ gcc code.o -o main.exe

没有任何效果。我不明白你为什么需要使用链接器?为什么dosbox代码只是一系列命令,而Windows代码由部分组成.text,.data而其他...

例如,我想在 Windows 上执行此操作,而不是在 DosBox 中:

mov ah, 0x2
mov dl, 'X'
int 0x21
ret
ассемблер
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Сергей Кривенко
    2020-12-21T04:31:38Z2020-12-21T04:31:38Z

    首先,这段代码根本无法在 Windows 上运行,中断在那里不起作用,您需要导入库并从中调用函数。

    x86有内存保护,所以程序分为.data(这里是数据)和.text(这里是代码)。代码可以执行,但不能写入,数据也不能执行。也就是说,QMS 不会像在 MS-DOS 中那样工作,但如果你真的想这样做,没有什么能阻止你自己设置适当的节标志或使用为此设计的 API 函数。

    还有其他几个部分,例如 .rsrc,其中存储资源(窗口、图像、字符串),.import,其中指定了导入的函数等

    链接器有什么用?当编译器或汇编器在 Windows 下汇编代码时,它产生的不是完成的机器码,而是一个目标文件,目标文件是一个混合了符号的机器码,这是必要的,以便可以将静态库链接到程序。即如果汇编器中出现了一些call%external function%,那么在目标文件中指定了名称,而不是偏移量,链接器取库,将其添加到程序代码中,然后将名称替换为偏移量.

    因此,Windows 根本不是 MS-DOS,对于不同的操作系统,汇编代码会有所不同(真的)。我建议您阅读 V. Pirogov 的《Windows 汇编程序》一书

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5