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

c - 我们如何在 Linux 2.6 中从保护模式转换到实模式?

我们如何在 Linux 2.6 中从保护模式转换到实模式?

0 投票
7 回答
28082 浏览

linux - 基本而全面的组装教程(Linux)?

我想学习一些实用的汇编语言,刚刚在课堂上学习了基本概念。有没有值得推荐的好书或教程(nasm 等)?

0 投票
1 回答
5176 浏览

assembly - 如何使用汇编 (NASM) 从 CD-ROM 将内核加载到内存中

我正在为自己编写一个引导程序和内核,引导程序和内核都将刻录在 CD-R 上,并将用作 CD-live。它不是 linux CD-Live 或其他东西,完全是我自己的引导程序和内核。我不想使用其他的加载程序(即 GRUB),所以请不要建议我使用它们。

这是我的问题:在我的引导加载程序 ASM 代码中,我想将我的内核和内核条目从 CD-ROM(而不是从硬盘或软盘)加载到 RAM 中,并假设我们知道内核的确切位置在CD-ROM(扇区号)。据我所知,我必须使用 int 0x13, AH = 02h 将扇区从驱动器读取到 RAM 中。为了使用这个中断服务,我必须设置几个寄存器,我将在下面列出: 参数:AH 02h AL Sectors To Read Count CX Track + Sector / See remark DH Head DL Drive ES:BX Buffer Address Pointer

我的问题是关于 DL 和 DH。为了指向要读取的第一个硬盘驱动器,我们可以将其设置为 80h,或者对于软盘,我们可以将其设置为 00h。但是我想从 CD-ROM 中读取,但我不知道我必须为 DH 和 DL 使用什么值。

为了从 CD-ROM 读取几个扇区到 RAM,它是一个正确的中断(int 0x13)吗?如果是,我应该为 DH 和 DL 赋予什么价值。

问候, 波利亚。

0 投票
4 回答
2425 浏览

nasm - 如何使用nasm访问linux中的声卡

您好,我想知道如何使用 int 0x80 从 nasm 汇编程序访问声卡。以及访问声卡时我应该在寄存器中输入什么值。

是否有任何手册或有关我们必须传递给内核以访问声卡或其他硬件设备的参数的详细信息,如果有人知道,请告诉我。

我已经做了很多搜索,并且有很多 c 库和 ALSA 和 OSS 之类的东西,但我想要的是,如果有人知道一些关于从基础开始学习有关与硬件接口的汇编程序的资源。

如果有人能给我一个关于如何访问的小代码清单,我将非常感激。

0 投票
4 回答
858 浏览

assembly - 为什么 mov 指令直接使用 ax 而不是两个段寄存器?

我看到如下代码:

为什么我不能将其压缩为:

自从使用累加器寄存器以来,第一种方法是否更快?但这似乎并不直观,因为 cs 和 ds 是段寄存器。还是有一些我不知道的限制?

顺便说一句,我正在使用nasm。

0 投票
5 回答
791 浏览

winapi - 从程序集调用 Windows API,同时最小化程序大小

我正在尝试在汇编中编写一个程序并使生成的可执行文件尽可能。我正在做的一些事情需要对WriteProcessMemory 等函数进行Windows API 调用。我在调用这些函数方面取得了一些成功,但是在编译和链接之后,我的程序出现在 14-15 KB 的范围内。(来自不到 1 KB 的来源)我希望的远比这要少得多。

我对做这样的低级事情很陌生,所以我真的不知道需要做什么才能使程序更小。我知道 exe 格式本身占用了相当多的空间。有什么办法可以减少这种情况吗?

我应该提到我正在使用 NASM 和 GCC,但如果有帮助,我可以轻松更改。

0 投票
8 回答
201907 浏览

winapi - Windows下如何用汇编编写hello world?

我想在 Windows 下编写一些基本的汇编程序,我正在使用 NASM,但我什么都做不了。

如何在 Windows 上不借助 C 函数编写和编译 hello world?

0 投票
8 回答
5006 浏览

ubuntu - 禁用 L2/L1 缓存

我正在尝试禁用 CPU 的内部和外部内存缓存,我的配置在上面:-DELL Precision WorkStation -Intel Core 2 Duo E6550 2.33 GHz -Ubuntu 8.10

我尝试通过 BIOS 禁用它,但似乎 DELL 计算机不允许用户访问缓存内存,我发现还有另一种方法,即以编程方式禁用缓存,英特尔架构手册 A.3 表明 cr0 寄存器可以通过设置位 30 设置为禁用缓存,然后我编写了上面的代码:

内向

移动 eax,cr0

mov eax,40000000H ;设置位 30

mov cr0,eax

程序编译成功,但是当我尝试运行 exe 文件时,出现Seg Faults(我使用的是 NASM)

任何人都可以帮助我吗?

0 投票
2 回答
2964 浏览

assembly - NASM printing out time - code doesn't output anything

I'm just getting started with ASM (NASM), and need some help with the following snippet. I get no errors/warnings, it just doesn't output anything. What I was expecting was for it to get the time (13), then print that out (4), then exit (1). Also, does anyone know of some good (preferably NASM specific) ASM tutorials?

0 投票
6 回答
7891 浏览

nasm - gas vs. nasm:哪个汇编程序产生最好的代码?

这两种工具都直接将汇编指令翻译成机器代码,但是否有可能确定哪一种产生最快和最干净的代码?