nasm相关内容

为什么我的汇编子例程被调用,即使我没有在引导加载程序中调用它

我目前正在开发一个bios引导加载程序,我是汇编语言的新手。我一直在阅读它,我了解它的工作原理,但有些事情涉及到我的汇编语言代码的执行顺序,我不理解。 那么基本上我的subrouteprint是如何被调用的,即使我没有调用它。 第二,它如何分配bios幻数,如果它一直位于文件的末尾,即使我没有到达。 如有任何帮助,我将不胜感激,谢谢。 [ORG 0000:7C00] global ..
发布时间:2022-08-23 21:37:39 其他开发

链接汇编程序生成的obj文件

我正在努力学习(或至少理解)Windows上的汇编。我在某个地方找到了这个Hello World示例,我想用它创建一个.exe文件,以确保所有内容都设置正确。 对于将发布其他Hello World示例的人,我想明确表示,我正在寻找具有直接Windows API调用的示例。 global _start extern _ExitProcess@4 ..
发布时间:2022-08-23 11:46:28 其他开发

在中断处理程序中如何处理被零除?

操作系统中断处理程序应如何处理与编码错误相关的中断? 例如,我试图除以0来测试我的中断,但我的中断处理程序被调用了。但是,由于div指令没有成功执行,EIP不会更新到它之后的下一条指令,并且在使用iret从中断处理程序返回后,它会再次返回到错误的div指令。 mov ax, 3 mov dl, 0 div dl ; go back here again and aga ..
发布时间:2022-08-10 16:12:51 其他开发

使用INT 16h的刷新键盘缓冲区x86组件

我有疑问,因为我的代码不工作。我正在实现一个运行下面代码的引导加载器,当我尝试加载它时,它只在少数情况下有效,如下所述。我的代码是下一个: ChangeGameState: mov cx, 00H ;Here I make a delay mov dx, 3240H ;. mov ah, 86H ;. int 15h ..
发布时间:2022-07-11 23:49:29 其他开发

如何更改程序集中变量的值

我正在为我的MikeOS端口编写一些代码。它是用NASM x86 16位汇编编写的。我正在尝试将我设置的变量更改为不同的值。它编译时没有错误,但当我调用os_print_string时,它会打印一些奇怪的ASCII字符。代码如下: BITS 16 ORG 32768 %INCLUDE "mikedev.inc" start: mov si, test2 ..
发布时间:2022-05-25 13:30:49 其他开发

NASM特定--节与[节]

我似乎在NASM的文档中找不到任何关于在代码中使用Section或[Section](带括号)之间的区别的明确内容。我知道这些都是宏,但我看到它们几乎可以互换使用。真的是这样吗?换句话说,就是 [SECTION .text] 相当于 Section .text ? 方括号是否暗示了某种神秘的副作用? 谢谢 推荐答案 [SECTION .xyz]是SECT ..
发布时间:2022-04-06 11:27:39 其他开发

如何为汇编语言程序制作Makefile?

我遇到了这样一个任务,即为我用汇编语言制作的程序构建一个Makefile(没有什么新奇的东西,比如Hello World)。该程序是在Linux 32位,我使用的是NASM汇编语言。到目前为止,我只能找到C程序的Makefile,我知道它们之间没有太大区别,但我不熟悉这个东西。我所拥有的是: Program: main.o gcc -o Program main.o main.o: ..
发布时间:2022-04-06 11:22:14 服务器开发

Linux 64位外壳代码

我正试图在我的64位Ubuntu上编写我的第一个“Hello world”外壳代码,但它不能工作。 我有文件hello.asm: ; 64-bit "Hello World!" in Linux NASM global _start ; global entry point export for ld section .text _start: ; ..
发布时间:2022-04-06 11:19:30 其他开发

如何让NASM在MacOS的终端中作为命令工作?

我一直在尝试让NASM在终端中作为命令工作,但似乎什么都不起作用。我一直收到错误: nasm: error: unable to find utility "nasm", not a developer tool or in PATH 因此,首先,我尝试更新我的PATH变量。我尝试编辑PATH变量: safecrackers-MacBook-Pro-2:Library safecr ..
发布时间:2022-04-06 11:17:04 其他开发

第二次使用MUL后出现分段故障

我是汇编语言中的新手,我尝试创建函数并在C中使用它。这个函数得到3个变量a,x,y,它们是包含两个64位int的结构。我想返回a+x*y。不幸的是,这段代码是NASM导致段错误 %define a1 [rdi] %define a2 [rdi+8] %define x1 [rsi] %define x2 [rsi+8] %define y1 [rdx] %define y2 [rdx+8] ..
发布时间:2022-04-06 11:15:09 其他开发

NASM:在运行时从RIP(指令指针)获取重新定位的二进制的偏移量

我有一个适用于x86_64的兼容Multiboot2的ELF文件,其中开始符号在start.asm中定义,这是一个NASM程序集文件。Multiboot2标头包含relocatable标记。 由于GRUB不支持Multiboot2+a可重定位ELF(至少在2021年7月[3]),我希望自己解决一些重定位问题以解决此问题,并只加载静态ELF。 为此,我需要在运行时在我的第一个条目符号(在EL ..
发布时间:2022-04-06 11:10:48 其他开发

Yasm:vmovaps指令导致分段错误

问题:movaps出现分段错误。 上下文:x86-64指令vmovaps旨在与Core I系列处理器(我正在运行此系统)上的AVX寄存器一起使用。AVX寄存器的宽度是SSE寄存器的两倍(分别为256位和128位)。指令vmovaps应将对齐的浮点值(32位)向量移入指定的ymm寄存器。 可能的原因:源数据的对齐特别重要,因为不正确对齐的数据是分段错误的来源。然而,即使我已经对齐了我的数 ..
发布时间:2022-04-06 11:09:13 其他开发

NASM:%Include文件中操作码和操作数的组合无效,报告的行号是否已超过末尾?

我正在构建一个简单的操作系统,并尝试从引导加载程序中获取屏幕上的一些文本。 每当我编译它(nasm -fbin bootloader.asm)时,都会出现以下错误: print.asm:23:错误:操作码和操作数的组合无效 我不明白出了什么问题,print.asm甚至没有那么多行,所以不清楚NASM不喜欢哪行。 这是bootloader.asm: [org 0x7c0 ..
发布时间:2022-04-06 11:04:56 其他开发

使用NASM__?浮点宏

NASM手册谈到了这些宏,但就我所见,它并没有真正解释如何使用它们。Section 3.4.6状态: 浮点常量仅可作为DW、DD、DQ、DT和DO的参数,或作为特殊运算符__?float16?__、__?bfloat16?__、__?float32?__、__?float64?__、__?float80m?__、__?float80e?__、__?float128l?__的参数,和__?fl ..
发布时间:2022-04-06 11:02:14 其他开发