assembly 相关问题

汇编语言(asm)编程问题。请务必使用您正在使用的处理器和/或指令集以及汇编程序。警告:对于.NET程序集,请改用标签[.net-assembly]。对于Java ASM,请改用标签[java-bytecode-asm]。

如何创建与保留word的名称相同的MASM/ML64 PROC

,我需要一个名为“ sub”的proc (为什么 - 因为我正在编写生成MASM源的编译器。程序员可以随心所欲地调用函数,并且因为它可能是库的一部分CA ...

回答 1 投票 0


IM制作一个非常简单且基本的组装程序(以0到15创建数组,找到质数,每个数字平方并在每个数字中进行斐波那契)。但是每次我运行时,我都会得到一个细分

section .data array_int db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 section .bss ; alocar espaços vazios de memoria primos resb 16 potencias resw 16 fib_results resw 16 ; serão usados registradores de 16 bits para fibonacci section .text global _start e_primo: cmp al, 2 jl nao_primo ; menor que 2 não é primo je sim_primo ; 2 é primo test al, 1 ; AND entre bits menos significat. Pares sempre comecam com 0. Pares não são primos jz nao_primo mov cl, 3 ; após inicializar primeiro divisor, "JUMP" pra checa_div checa_div: mov bl, al ; mov al, cl ; porque o AL é um registrador q tem q ser usado em MUL mul al ; AL por ele mesmo cmp al, bl ; checa se ja passou da sqrt do num: todos necessarios ja foram checados jg sim_primo mov al, bl mov ah, 0 ; zera registrador q armazena resto div cl cmp ah, 0 je nao_primo add cl, 2 ; queremos checar apenas impares mov al, bl ; valor em AL é alterado na divisao jmp checa_div nao_primo: mov al, 0 ret sim_primo: mov al, 1 ret start_fibo: mov dx, 0 cmp al, 0 je end_fibo mov dx, 1 cmp al, 1 je end_fibo ; fibo 0 e 1 é eles mesmos mov bx, 0 mov dx, 1 mov cx, ax ; cx é usado no loop (AX vezes) sub cx, 1 ; primeiro ja tratado fib_loop: mov ax, dx ; salva f(n) em ax add dx, bx ; dx = f(n) + f(n - 1) = f(n + 1) mov bx, ax ; f(n) loop fib_loop end_fibo: mov ax, dx ret _start: lea rsi, [array_int] lea rdi, [primos] lea rdx, [potencias] lea r15, [fib_results] mov rcx, 16 loop_array: mov al, [rsi] call e_primo mov[rdi], al movzx ax, byte [rsi] ; restaura AL (registrador de 16 agora) mul al ; potencia do valor em AL mov [rdx], ax movzx ax, byte [rsi] call start_fibo mov [r15], ax inc rsi inc rdi add rdx, 2 add r15, 2 loop loop_array mov rax, 60 xor rdi, rdi syscall

回答 1 投票 0

我可以比较两个浮子而不将它们加载到x87堆栈上?

对基本问题的理解。 在汇编中,比较在不同(固定)存储位置存储而不将它们加载到堆栈中的两个浮点可以接受吗?我需要使用任何...

回答 1 投票 0

IEEE.754在手臂上,组装算法给出意外结果

这是算法到目前为止的样子。此时仅尝试添加

回答 0 投票 0


我正在做的剥削是:

I发现了包含重要小工具的这两个功能:

回答 1 投票 0


C函数调用堆栈,不存在中间功能(RIP = 1)

在观察堆栈帧的同时,我看到,在B()调用C()之后,在下一个堆栈框架中,RIP指向'1',即rip = 1。c()的所有输入参数也都推到了此堆栈。 只保存了RIP,我看不到任何其他重新指定,包括将EBP推入堆栈。

回答 0 投票 0


如何在汇编中乘以2 24位数字

我正在尝试乘以2个24位数字m和n,并将产品存储在p处的存储位置$ 1100。 当我进行MD 1100时的预期输出应为$ 07336BF94116,但我得到的是07 1A 48 58 -...

回答 1 投票 0



在哪里可以找到前缀rex2编码解码机制的信息

我想要查找编码前缀REX2编码的机制。我说的是X64架构。顺便说一句,REX2包括R16-R31寄存器。 REX -R8 -R15 示例使用: MOV%R29,%R31 是...

回答 1 投票 0

如何使用打孔卡生成二进制文件?

我不确定哪个是要询问打孔卡的正确平台,因此,我在这里尝试(所有打孔卡也是编程的一部分之后)。 我以为打孔卡已经代表...

回答 1 投票 0



堆栈中的reserve字节:x86组件(64位)

PUSHQ%RBP MOVQ%RSP,%RBP subq $ 32,%rsp 我有一个关于第三条指令中“ $ 32”的解释的问题。来自搜索和博客的信息指定在以上第三次

回答 2 投票 0

hello世界以真实的模式

我尝试了以下内容:

回答 1 投票 0

学习装配

试图开始组装 那里有很多教程,但我更像是一个动手的学习者 我有一个AMD Ryzen 5 5600h处理器。 Windows 11。 问题是我无法知道...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.