64 位汇编,何时使用较小尺寸的寄存器
据我了解,在 x86_64 汇编中,例如有(64 位)rax 寄存器,但它也可以作为 32 位寄存器、eax、16 位、ax 和 8 位等进行访问。在什么情况下我不会只使…
这个汇编过程如何不崩溃?
我这里有这个不会崩溃的 linux nasm 代码。如果 printString 末尾有 ret 80 指令,这个程序不会崩溃吗? bits 32 section .data hello: db 'Hello Lin…
执行汇编代码时控制台上出现垃圾字符
x86 汇编编程初学者。我有一个简单的 asm 文件,我使用 nasm 版本 - 2011 年 6 月 6 日编译的 NASM 版本 2.10rc6 进行汇编,适用于 Windows(我的 Win…
将 ASM 文件组装成 EXE
我前几天刚开始学习汇编语言编程。现在,我在将 asm 文件组装成 exe 时遇到问题。我使用 NASM 作为我的汇编器。这是我用来组装它的命令: nasm file.a…
x86 汇编中的递归 Ackermann-Peter 函数 (NASM)
我正在尝试在 x86 NASM-Assembly 中实现递归 Ackermann-Peter-Function。该函数定义如下: *a(0;m) = m + 1 *a(n + 1; 0) = a(n; 1) *a(n + 1;m + 1))…
C 函数的返回值到 ASM
我正在尝试从 ASM 中调用一个函数。我知道如何调用它,但我无法找到如何获取该函数的返回值。示例如下: C 代码: int dummy() { return 5; } (N)ASM …
为什么这个 x86_64 汇编代码不起作用?
section .text global my_strlen my_strlen: xor rax, rax .LOOP: cmp BYTE[rdi+rax], 0 jne .LOOP inc rax ret 我执行它: #include #include extern…
执行“mov eax, [edx”ebx]”后,ebx 寄存器的值发生变化。装配(NASM)
我是汇编新手,我正在尝试在汇编中进行一些任意精度的算术。但我一整天都陷入错误中。 mov eax,[ebp+8] ; the first parameter of c function mov edx…
NASM:大数除以小数
NASM手册关于DIV说: 对于DIV r/m32,EDX:EAX除以给定的操作数;商存储在 EAX 中,余数存储在 EDX 中。 如果 EDX:EAX 是 259 左右的大数并且除法器是 …
该程序集访问该字符串常量有什么问题?
我以为我开始明白发生了什么,但我现在花了很长时间试图理解为什么以下不起作用: org 0x7C00 mov ax,0x0000 mov ds,ax mov si, HelloWorld HelloWorl…