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

nasm - 如何以十六进制打印出寄存器的内容

我目前正在开始使用 NASM,并想知道如何使用 NASM 以十六进制输出寄存器的内容。我可以输出 eax 的内容

假设 eax 包含 0x44444444 那么输出将是“DDDD”。显然,每对“44”都被解释为“D”。我的 ASCII 表批准了这一点。

但是如何让我的程序输出实际的寄存器内容(0x44444444)?

0 投票
2 回答
803 浏览

assembly - 调用另一个源文件

我正在使用汇编(nasm 作为汇编器)构建一个程序(16 位),但是因为我喜欢将事物组织在不同的源文件中。假设我有 2 个来源,一个调用main.asm,另一个调用source2.asm,但我想source1.asm调用main.asm. 我怎么能这样做?

0 投票
3 回答
2640 浏览

assembly - 编译汇编代码

我正在尝试编译我用 NASM 和来自 DJGPP 的“ld”命令编写的 ASM 程序。这是我用来编译它的批处理文件的代码:

但是当我运行文件时,我得到:

在我的构建文件中,我做错了什么导致此错误消息?

编辑

这是我的 link.ld 文件:

编辑

没有其他工作,所以这是我的 ASM 文件的代码(我正在为我一直在研究的操作系统创建内核):

0 投票
3 回答
181 浏览

assembly - 将两个 ORG 放在一起

我正在构建一个引导加载程序来引导位于1000h软盘部分的内容。我是用Fasm做的(因为我的朋友只使用 Fasm,他正在帮助我),但我更喜欢使用Nasm,现在我遇到了语法问题,然后我想知道我该怎么做这在纳斯姆:

PS:我已经%include使用 Nasm-syntax 样式放置了指令,在 Fasm 上它应该只是include.

0 投票
2 回答
138 浏览

assembly - How important are section/segment directives?

How important are section/segment directives? I've noticed that they are usually optional. Also, I've noticed that the output size changes when you do or do not include them.

I'm using NASM, if that helps.

0 投票
2 回答
696 浏览

assembly - NASM 和 INT13h - 我做错了什么?

嘿,我对操作系统编写很感兴趣,我已经很长时间了,但仍然无法接受(我主要是“第一次阅读时你不能理解的事情你根本不应该做” - 而且它适用于我所做的所有其他事情,比如 PHP、HTML、AS3.0、C++ ......还有很多)刚刚我有点明白了。问题是——真的,ASM 直到现在我才需要一个特定的引导加载程序才那么有趣(我知道还有其他的,比如 GRUB 之类的,但这只是一个漫长的故事)。

显然,最重要的部分是实际从磁盘读取一些内容到图像扇区并跳转到那里。但是,INT 0x13 与 AH 0x02,即。从磁盘读取扇区并没有真正工作(或者我只是不明白)。

所以,我找到了这个信息: 点击

在对 Bochs 进行了一些研究之后,我发现了扇区数、柱面数、磁头数以及有关磁盘的所有信息。

现在,为了测试它,我想读取第一个扇区,并从中打印出几个字符——因为我一开始就知道有这个引导加载程序,我会看到使用的部分消息。

但是,它只是......不起作用。我正在尝试将缓冲区放到不同的地方、消息、不同的扇区...有人可以给我看一个这样读取指定点的例子吗?

谢谢。

0 投票
2 回答
1159 浏览

assembly - 关于字符串长度计数的一些问题

我有一个关于计算字符串长度的问题。我总是得到一些像 2432 这样的数字,你传递一个像“abc”这样的字符串。

我认为问题出在这一行

但我不知道为什么。也许它是以位为单位的字符长度?

问题可能出在 64 位操作系统或双核处理器上吗?(我有点怀疑,因为我认为第一行“第 32 位”应该可以解决问题)。

PS.:这是一个练习,这就是为什么我需要像这样确定字符串的长度。

编码:

0 投票
2 回答
1084 浏览

x86 - 操作系统的引导加载程序不起作用

我正在制作一个自定义操作系统。我有两个 nasm 文件:

启动.asm:

开始.asm:

我使用以下命令将它们编译成 .bin 文件:

然后使用以下命令将它们添加到软盘映像中:

当我从 VirtualBox 中的软盘映像启动时,它显示 2 个感叹号而不是 1 个,甚至在 QEmu (Q.app) 中也无法启动。我是操作系统开发的新手,所以如果有人能告诉我我做错了什么并给我一些关于如何更好地设置我的操作系统的指导,那就太好了。

0 投票
1 回答
498 浏览

assembly - Intel IAPX88 处理器,陷阱 ISR

我发布了以下代码,这段代码的基本目的是,当我将陷阱标志设置为 1 之后,我在屏幕上打印一个字符 z,现在设置了陷阱标志,程序应该执行一个指令和陷阱,我编写了一个简单的陷阱 ISR,其中我有一个无限循环,如果按下 F2 键,这个无限循环将被打破,因为您可以在程序中看到名为 kbisr 的键盘 isr 中 F2 键的扫描码。这是我想从这个程序中实现的功能,但它没有这样做,请检查这段代码并告诉我我做错了什么。这是代码

0 投票
3 回答
9611 浏览

linux - 如何在ubuntu下使用nasm(程序集)从键盘读取单个字符输入?

我在ubuntu下使用nasm。顺便说一句,我需要从用户的键盘获取单个输入字符(例如当程序要求您输入 y/n 时?),因此在按下键且不按 Enter 的情况下,我需要读取输入的字符。我用谷歌搜索了很多,但我发现的所有内容都与这条线(int 21h)有关,导致“分段错误”。请帮我弄清楚如何获得单个字符或如何克服这个分段错误。