问题标签 [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.
c - 使用 GCC 的 Nasm 内联汇编
在我的项目中,我需要使用内联汇编,但它必须是 Nasm,因为我对 GAS 不太熟悉。
我的尝试:
有什么方法可以做到这一点,但使用 Nasm 而不是 GAS?
我想我需要在编译时添加一个参数。
assembly - 在汇编中开发引导加载程序
我已经在 Assembly 中完成了我的操作系统的一部分,但现在我也想为它构建一个自己的引导加载程序,而不是使用 GRUB。当我在 Assembly 中开发我的测试操作系统时,我记得我是这样引导它的:
这个我已经知道了。现在我想使用它并执行“真正的”操作系统,它将是一个写入软盘第二扇区的 *.bin 文件。然后我想知道一些事情
- 如何在 Assembly 中执行引导加载程序以执行将在软盘的第二个扇区开始的内容?
- 我需要将任何东西添加到将放置在软盘第二扇区的程序集源中吗?
assembly - ASM .com 无法运行
我找到了这个示例教程nasm 中关于基本 ASM 的 Hello World 的无能指南,当我编译它时,一切都很好!太好了,但是当我运行它时,我收到以下消息:
此版本的 hi.com 与您运行的 Windows 版本不兼容
使用此代码在 Windows 7 x64 上发生这种情况(我被告知会运行良好)
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.
nasm - Windows 7 中 NASM 程序中的 I/O
我想用 NASM 汇编语言编程。我有 NASM 2.07 和 Borland C++ 编译器 5.0 (bcc32)。我的操作系统是 Windows 7。我不知道如何在 Windows 平台上使用 NASM 进行输入和输出。请问你能帮我吗?
nasm - 在 Windows 7 平台上的 NASM 程序中进行 I/O
请给我一个读取和打印字符的 NASM 2.07 示例程序。也请告诉命令来组装和链接它。我的编译器是 Borland C++ 5.0(bcc32),操作系统是 Windows 7。我在哪里可以获得有关 Windows 7 NASM 中 I/O 的教程?
assembly - 如何从引导加载程序读取/使用鼠标?
我想从引导加载程序中使用鼠标,但是 int33h 不工作,(DOS 中断,并且没有 DOS 引导),所以你能帮我,我怎样才能在不使用 int33h 的情况下读取鼠标位置、状态等?
谢谢
assembly - 在汇编器中寻址
有些东西我无法消化。我正在学习一些汇编程序,现在我正在处理寻址这一章。我理解用于取消引用的括号的概念,但是当我看到它的用法时,我就是无法理解它的意义。更确切地说,这是我的困惑开始的地方:
在这里,我假设 L1 作为示例案例是某种宏,它稍后会替换机器代码中的真实地址,对吧?
所以这条指令的作用是:取消引用al
寄存器(因为您几乎无法更改物理地址)并将值更改为存储在L1
.
如果到目前为止一切正常:
类似地,这意味着必须存储一个地址(因此这样做有一定的意义),然后您将其更改为内存中的其他位置,对吗?
如果你能告诉我没关系,万一你没有看到任何错误,请这样做,这将使我有可能继续学习。
最后一件事,NASM 在我的代码下添加了一堆0xAA55
(这个序列应该结束程序吧?),为什么会出现这么多次?
assembly - MOV src, dest (或) MOV dest, src?
MOV 可能是每个人在学习 ASM 时学习的第一条指令。
刚才我遇到了一本书Rajat Moona 在 GNU/Linux for IA32 Architectures 中的汇编语言编程,它说:(已删除断开的链接)
但我了解到它是MOV dest, src
。它就像“加载dest
” src
。甚至维基也这么说。
我不是说作者错了。我知道他是对的。但是我在这里错过了什么?
顺便说一句..他正在使用 GCCas
来组装这些指令。但这不应该改变指令语法吗?
c++ - nasm/yasm 参数,与 C++ 的链接
我有一个关于 nasm 及其与 C++ 的联系的问题。我将一个小测试函数声明为
extern "C" void __cdecl myTest( byte i1, byte i2, int stride, int *width );
我这样称呼它:
该方法仅用于调试程序集并查看堆栈指针如何用于获取参数。除此之外,指针参数值应设置为 7,以了解其工作原理。这是这样实现的:
并通过编译
,然后链接到 c++ 应用程序。在调试模式下,一切正常。该函数被调用了几次并按预期工作,而在发布模式下该函数工作一次,但随后的程序操作失败。在我看来,近/远的堆栈/帧指针有问题,但我对这个主题很陌生,需要一点帮助。提前致谢!一个。