问题标签 [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 投票
4 回答
3292 浏览

operating-system - 使用 nasm 混合 32 位和 16 位代码

这是一个低级系统问题。

我需要混合 32 位和 16 位代码,因为我试图从保护模式返回到实模式。作为一些背景信息,我的代码在 GRUB 启动之后执行此操作,因此我没有任何讨厌的操作系统来告诉我我能做什么和不能做什么。

无论如何,我在我的程序集中使用 [BITS 32] 和 [BITS 16] 来告诉 nasm 它应该使用哪些类型的操作,但是当我测试我的代码使用 bochs 时,看起来对于某些操作 bochs 没有执行的代码我写。看起来汇编程序正在添加额外内容0x660x67's,这让 bochs 感到困惑。

那么,在同一文件中混合 32 位和 16 位代码的情况下,如何让 nasm 成功组装代码?有什么技巧吗?

0 投票
2 回答
374 浏览

assembly - 无法运行汇编程序

我刚刚开始阅读 80x86 汇编语言和计算机体系结构简介。我正在尝试使用 NASM 来运行第 3 章中显示的第一个示例,但没有成功。有人读过这本书并运行示例吗?

0 投票
3 回答
2293 浏览

linux - 为什么这个 NASM 代码会打印我的环境变量?

这学期我刚完成一门计算机体系结构课程,除其他外,我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它。今天,出于好奇,我开始在我的 Ubuntu 机器上摆弄 NASM,基本上只是从教程中拼凑起来,感受 NASM 与 MIPS 的不同之处。这是我目前正在查看的代码片段:

这被保存为 test.asm,并用 .asm 组装nasm -f elf test.asm和链接ld -o test test.o。当我用 调用它时./test anArgument,它会按预期打印“anArgument”,然后是将该字符串填充到总共 200 个字符所需的字符数(由于该mov edx, 200语句)。然而,有趣的是,这些填充字符,我原以为是乱码,实际上是从我的环境变量的开头开始的,正如env命令所显示的那样。为什么这会打印出我的环境变量?

0 投票
5 回答
7354 浏览

assembly - 学习 (N)ASM 的最佳资源是什么?

我想学习汇编已经有一段时间了,虽然我之前尝试过几次,但我还是没能通过“Hello, world”。是否有任何好的组装入门教程(最好使用 NASM,因为我使用 Windows 和 Linux)?

我确实有一点 C 知识,但主要是用 Ruby、Python、C# 和 JavaScript 等高级语言编写代码。

0 投票
7 回答
4790 浏览

assembly - 以美元结尾的字符串

在我的汇编语言课上,我们的第一个任务是编写一个程序,在 DOS 中打印出一个简单的以美元结尾的字符串。它看起来像这样:

据我了解,$ 符号用于终止字符串,就像 C 中的 null 一样。但是如果我想在字符串中添加一个美元符号(比如我想打印出“它花费 30 美元”),我该怎么办?这似乎是一个简单的问题,但我的教授不知道答案,我似乎也没有使用谷歌搜索找到它。

0 投票
2 回答
19875 浏览

assembly - 如何使用 NASM 获取用户输入?

程序需要从用户那里获取一个简单的字符串并将其显示回来。我已经让程序从用户那里获取输入,但我似乎无法存储它。这是我到目前为止所拥有的:

我正在使用 NASM 组装它。

0 投票
4 回答
7320 浏览

c - 如何在 Debian 上编译 DOS 程序?

对于我的汇编语言课,我们正在使用 DPMI 编写 DOS 程序。不幸的是,我一直无法访问 32 位 Windows 机器。我确实在我使用的每台计算机上都安装了 Debian 虚拟机。

我已经安装了 DOSBox 和 DOSEMU。有什么方法可以在 Linux 而不是 DOS 中组装和编译程序?我正在使用 nasm,所以在 DOS 格式下组装它似乎没有任何问题。但是,我无法使用我的 C 代码通过编译器运行它并获得 DOS 可执行文件(使用 gcc 或 MinGW)。

有什么方法可以做到这一点,还是我几乎必须在 DOS 下安装所有工具?

0 投票
2 回答
4797 浏览

assembly - 如何将 NASM“推送字节”转换为 GAS 语法?

我正在将 NASM 源“移植”到 GAS,我发现了以下代码行:

GAS 不允许“push byte”或“pushb”。

我应该如何将上面的代码翻译成 GAS 语法?

谢谢

0 投票
7 回答
1337 浏览

assembly - 有哪些好的 x86 汇编语言资源?

有哪些好的在线资源(参考资料、书籍、教程、文档等)可用于学习和编程汇编语言(更具体地说是 nasm)?似乎某些汇编语言相当晦涩难懂,有时我很难找到任何好的信息。

0 投票
2 回答
2076 浏览

objective-c - 在目标 C 中调用汇编程序

我在汇编文件 math.nasm 中编写了一个函数 nabs,如下所示

我正在从文件 myfunc.c 中的 c 函数 func1 调用此函数
我正在使用 nasm 汇编程序来处理汇编文件 我正在使用 X-code 3.1 版本和 gcc 4.0 编译器 我已经定义了 USE_x86_ASM

在 Xcode 设置 Project Settings/Build/NASM BUILD OPTIONs/OTHER FLAGS AS -DUSE_X86_ASM
我还在头文件 myfunc.h 中定义了这个预处理器,
我也在 myfunc.h 中声明了 nABS

并将 myfunc.h 包含在 myfunc.c 中
myfunc.c 和 math.nasm 都被编译并生成 math.o 和 myfunc.o,但我得到一个链接错误

谁能告诉我为什么会出现链接错误?


我做了修改建议另外我删除了 %ifdef 条件修改后的代码如下

_nABS: push ebx ...... ...... pop ebx
ret 仍然出现相同的链接错误,文件已编译,但出现相同的链接错误。我检查了生成的 .o 是否包含 app.LinkFileList。