问题标签 [nasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5024 浏览

c - 使用 GCC 的 Nasm 内联汇编

在我的项目中,我需要使用内联汇编,但它必须是 Nasm,因为我对 GAS 不太熟悉。
我的尝试:

有什么方法可以做到这一点,但使用 Nasm 而不是 GAS?

我想我需要在编译时添加一个参数。

0 投票
2 回答
5783 浏览

assembly - 在汇编中开发引导加载程序

我已经在 Assembly 中完成了我的操作系统的一部分,但现在我也想为它构建一个自己的引导加载程序,而不是使用 GRUB。当我在 Assembly 中开发我的测试操作系统时,我记得我是这样引导它的:

这个我已经知道了。现在我想使用它并执行“真正的”操作系统,它将是一个写入软盘第二扇区的 *.bin 文件。然后我想知道一些事情

  • 如何在 Assembly 中执行引导加载程序以执行将在软盘的第二个扇区开始的内容?
  • 我需要将任何东西添加到将放置在软盘第二扇区的程序集源中吗?
0 投票
2 回答
260 浏览

assembly - ASM .com 无法运行

我找到了这个示例教程nasm 中关于基本 ASM 的 Hello World 的无能指南,当我编译它时,一切都很好!太好了,但是当我运行它时,我收到以下消息:

此版本的 hi.com 与您运行的 Windows 版本不兼容

使用此代码在 Windows 7 x64 上发生这种情况(我被告知会运行良好)

0 投票
1 回答
10743 浏览

linux - Assembly/Linking problem with nasm and ld

I have a sample assembly file that I compile with nasm:

This generates a syscall.o file. I try to link it with ld:

The ld command fails with the following error:

However, if I do

the command succeeds and I get a syscall executable.

Figuring out that nasm is not generating object code in x86-64 format I added "BITS 64" directive to the beginning of the syscall.asm file.

Then attempting to assemble syscall.asm with nasm gave the following error:

That seems strange because doing "file /usr/bin/nasm" on my terminal gives:

My 64-bit Fedora Core 11 has the latest version of nasm installed and my CPU is Intel Core 2 Duo E7200.

[EDIT]

My question is how do I get nasm to emit object files that is compatible with i386:x86-64.

0 投票
2 回答
1294 浏览

nasm - Windows 7 中 NASM 程序中的 I/O

我想用 NASM 汇编语言编程。我有 NASM 2.07 和 Borland C++ 编译器 5.0 (bcc32)。我的操作系统是 Windows 7。我不知道如何在 Windows 平台上使用 NASM 进行输入和输出。请问你能帮我吗?

0 投票
0 回答
496 浏览

nasm - 在 Windows 7 平台上的 NASM 程序中进行 I/O

请给我一个读取和打印字符的 NASM 2.07 示例程序。也请告诉命令来组装和链接它。我的编译器是 Borland C++ 5.0(bcc32),操作系统是 Windows 7。我在哪里可以获得有关 Windows 7 NASM 中 I/O 的教程?

0 投票
1 回答
1270 浏览

assembly - 如何从引导加载程序读取/使用鼠标?

我想从引导加载程序中使用鼠标,但是 int33h 不工作,(DOS 中断,并且没有 DOS 引导),所以你能帮我,我怎样才能在不使用 int33h 的情况下读取鼠标位置、状态等?

谢谢

0 投票
3 回答
4114 浏览

assembly - 在汇编器中寻址

有些东西我无法消化。我正在学习一些汇编程序,现在我正在处理寻址这一章。我理解用于取消引用的括号的概念,但是当我看到它的用法时,我就是无法理解它的意义。更确切地说,这是我的困惑开始的地方:

在这里,我假设 L1 作为示例案例是某种宏,它稍后会替换机器代码中的真实地址,对吧?

所以这条指令的作用是:取消引用al寄存器(因为您几乎无法更改物理地址)并将值更改为存储在L1.

如果到目前为止一切正常:

类似地,这意味着必须存储一个地址(因此这样做有一定的意义),然后您将其更改为内存中的其他位置,对吗?

如果你能告诉我没关系,万一你没有看到任何错误,请这样做,这将使我有可能继续学习。

最后一件事,NASM 在我的代码下添加了一堆0xAA55(这个序列应该结束程序吧?),为什么会出现这么多次?

0 投票
4 回答
17801 浏览

assembly - MOV src, dest (或) MOV dest, src?

MOV 可能是每个人在学习 ASM 时学习的第一条指令。

刚才我遇到了一本书Rajat Moona 在 GNU/Linux for IA32 Architectures 中的汇编语言编程,它说:(已删除断开的链接)

但我了解到它是MOV dest, src。它就像“加载destsrc。甚至维基也这么说。

我不是说作者错了。我知道他是对的。但是我在这里错过了什么?

顺便说一句..他正在使用 GCCas来组装这些指令。但这不应该改变指令语法吗?

0 投票
2 回答
1196 浏览

c++ - nasm/yasm 参数,与 C++ 的链接

我有一个关于 nasm 及其与 C++ 的联系的问题。我将一个小测试函数声明为

extern "C" void __cdecl myTest( byte i1, byte i2, int stride, int *width );

我这样称呼它:

该方法仅用于调试程序集并查看堆栈指针如何用于获取参数。除此之外,指针参数值应设置为 7,以了解其工作原理。这是这样实现的:

并通过编译

,然后链接到 c++ 应用程序。在调试模式下,一切正常。该函数被调用了几次并按预期工作,而在发布模式下该函数工作一次,但随后的程序操作失败。在我看来,近/远的堆栈/帧指针有问题,但我对这个主题很陌生,需要一点帮助。提前致谢!一个。