Assembly 如何将内容从32位寄存器移动到64位寄存器?

Assembly 如何将内容从32位寄存器移动到64位寄存器?,assembly,x86,cpu-registers,Assembly,X86,Cpu Registers,汇编x86 基本上,我要做的是接收2个整数并将它们放入32位寄存器,例如,我使用EAX和EBX,然后将它们相加,结果进入EAX。问题是,结果需要在64位寄存器中返回。如何组合2个32位寄存器 到目前为止,我的代码是: .section .data .section .text .global a .global b .global resultado .global funcao funcao: movl $0, %eax movl $0, %ebx mo

汇编x86 基本上,我要做的是接收2个整数并将它们放入32位寄存器,例如,我使用EAX和EBX,然后将它们相加,结果进入EAX。问题是,结果需要在64位寄存器中返回。如何组合2个32位寄存器

到目前为止,我的代码是:

.section .data

.section .text

.global a
.global b
.global resultado

.global funcao 
 funcao:


    movl $0, %eax
    movl $0, %ebx

    movl a, %eax

    movl b, %ebx

    add %ebx, %eax

   ret

如您所见,当我添加时,总和的结果将转到%eax,但我需要将其移动到64位寄存器,然后将其移动到变量resultado

您可以将最低32位存储到[resultado],将最高32位存储到[resultado+4]。当然,回想一下,英特尔的东西是小尾端的,一个数字中最不重要的部分进入的内存地址比最重要的部分要低,那看起来是如何编码的@enhzflepe你能使用x64汇编吗?@Synaps,不,对不起,我使用的是x86,您可以尝试将它们写入2个seial内存单元,然后将此内存区域复制到您需要的位置。