nasm相关内容
我目前正在开发一个bios引导加载程序,我是汇编语言的新手。我一直在阅读它,我了解它的工作原理,但有些事情涉及到我的汇编语言代码的执行顺序,我不理解。 那么基本上我的subrouteprint是如何被调用的,即使我没有调用它。 第二,它如何分配bios幻数,如果它一直位于文件的末尾,即使我没有到达。 如有任何帮助,我将不胜感激,谢谢。 [ORG 0000:7C00] global
..
我正在努力学习(或至少理解)Windows上的汇编。我在某个地方找到了这个Hello World示例,我想用它创建一个.exe文件,以确保所有内容都设置正确。 对于将发布其他Hello World示例的人,我想明确表示,我正在寻找具有直接Windows API调用的示例。 global _start extern _ExitProcess@4
..
操作系统中断处理程序应如何处理与编码错误相关的中断? 例如,我试图除以0来测试我的中断,但我的中断处理程序被调用了。但是,由于div指令没有成功执行,EIP不会更新到它之后的下一条指令,并且在使用iret从中断处理程序返回后,它会再次返回到错误的div指令。 mov ax, 3 mov dl, 0 div dl ; go back here again and aga
..
以下代码使用RSI寄存器作为循环计数器,将Hello World打印10次。 section .data hello: db 'Hello world!',10 helloLen: equ $-hello section .text global _start _start: mov rsi, 0
..
我有疑问,因为我的代码不工作。我正在实现一个运行下面代码的引导加载器,当我尝试加载它时,它只在少数情况下有效,如下所述。我的代码是下一个: ChangeGameState: mov cx, 00H ;Here I make a delay mov dx, 3240H ;. mov ah, 86H ;. int 15h
..
我正在尝试创建一个简单的make文件,我现在使用的命令是: $ nasm -f elf64 main.asm $ ld -s -o test1 main.o 就是这样。我如何从它们创建一个Makefile?我已经阅读了手册,但我还没有接近解决方案。 推荐答案 您可以使用最简单的规则构建一个: :
..
我正在为我的MikeOS端口编写一些代码。它是用NASM x86 16位汇编编写的。我正在尝试将我设置的变量更改为不同的值。它编译时没有错误,但当我调用os_print_string时,它会打印一些奇怪的ASCII字符。代码如下: BITS 16 ORG 32768 %INCLUDE "mikedev.inc" start: mov si, test2
..
出于学习目的,我编写了一个小汇编程序(test.asm): global _main extern _ExitProcess@4 section .text _main: mov ebx,0 push ebx call _ExitProcess@4 然后我用NASM(test.obj)组装了它: n
..
我似乎在NASM的文档中找不到任何关于在代码中使用Section或[Section](带括号)之间的区别的明确内容。我知道这些都是宏,但我看到它们几乎可以互换使用。真的是这样吗?换句话说,就是 [SECTION .text] 相当于 Section .text ? 方括号是否暗示了某种神秘的副作用? 谢谢 推荐答案 [SECTION .xyz]是SECT
..
我有一个适用于64位Linux系统的NASM程序,它可以在标准I/O设备上运行,它看起来是这样的: section .data prompt db "Enter your text: ", 10 length equ $ - prompt text times 255 db 0 textSize equ $ - text section
..
我遇到了这样一个任务,即为我用汇编语言制作的程序构建一个Makefile(没有什么新奇的东西,比如Hello World)。该程序是在Linux 32位,我使用的是NASM汇编语言。到目前为止,我只能找到C程序的Makefile,我知道它们之间没有太大区别,但我不熟悉这个东西。我所拥有的是: Program: main.o gcc -o Program main.o main.o:
..
我正试图在我的64位Ubuntu上编写我的第一个“Hello world”外壳代码,但它不能工作。 我有文件hello.asm: ; 64-bit "Hello World!" in Linux NASM global _start ; global entry point export for ld section .text _start: ;
..
我一直在尝试让NASM在终端中作为命令工作,但似乎什么都不起作用。我一直收到错误: nasm: error: unable to find utility "nasm", not a developer tool or in PATH 因此,首先,我尝试更新我的PATH变量。我尝试编辑PATH变量: safecrackers-MacBook-Pro-2:Library safecr
..
我是汇编语言中的新手,我尝试创建函数并在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]
..
测试平台为32位Linux。 我使用 nasm -f elf final.s 汇编代码,并生成以下错误: final.s:40454: error: (at:1) `%$strucname': context stack is empty final.s:40454: error: (at:1) `%$strucstart': context stack is empty f
..
我有一个适用于x86_64的兼容Multiboot2的ELF文件,其中开始符号在start.asm中定义,这是一个NASM程序集文件。Multiboot2标头包含relocatable标记。 由于GRUB不支持Multiboot2+a可重定位ELF(至少在2021年7月[3]),我希望自己解决一些重定位问题以解决此问题,并只加载静态ELF。 为此,我需要在运行时在我的第一个条目符号(在EL
..
问题:movaps出现分段错误。 上下文:x86-64指令vmovaps旨在与Core I系列处理器(我正在运行此系统)上的AVX寄存器一起使用。AVX寄存器的宽度是SSE寄存器的两倍(分别为256位和128位)。指令vmovaps应将对齐的浮点值(32位)向量移入指定的ymm寄存器。 可能的原因:源数据的对齐特别重要,因为不正确对齐的数据是分段错误的来源。然而,即使我已经对齐了我的数
..
在64位x86汇编NASM中,如何将单个字节从寄存器移到.data部分定义的内存位置? 我知道这很管用 global _main section .data quotient db 0x0, 0x0, 0x30, 0xa ; 3 digit + newline remainder db 0x0, 0x0, 0x30, 0xa; 3 digit + newline section .
..
我正在构建一个简单的操作系统,并尝试从引导加载程序中获取屏幕上的一些文本。 每当我编译它(nasm -fbin bootloader.asm)时,都会出现以下错误: print.asm:23:错误:操作码和操作数的组合无效 我不明白出了什么问题,print.asm甚至没有那么多行,所以不清楚NASM不喜欢哪行。 这是bootloader.asm: [org 0x7c0
..
NASM手册谈到了这些宏,但就我所见,它并没有真正解释如何使用它们。Section 3.4.6状态: 浮点常量仅可作为DW、DD、DQ、DT和DO的参数,或作为特殊运算符__?float16?__、__?bfloat16?__、__?float32?__、__?float64?__、__?float80m?__、__?float80e?__、__?float128l?__的参数,和__?fl
..