Assembly 如何将返回的值保存到注册表内存中

Assembly 如何将返回的值保存到注册表内存中,assembly,x86,masm,masm32,Assembly,X86,Masm,Masm32,我不熟悉集会。我想生成一个循环计数器,对前10个十进制数(32位)求和。这是我想到的。代码必须在MASM编译器中运行。不应向控制台输出任何内容,而应将结果保存到注册表内存中。 有没有想过如何做到这一点? 这是我到目前为止所拥有的 .386 .model  flat .code main proc mov eax, 0 ; initialize the counter FLP: mov  ebx,

我不熟悉集会。我想生成一个循环计数器,对前10个十进制数(32位)求和。这是我想到的。代码必须在MASM编译器中运行。不应向控制台输出任何内容,而应将结果保存到注册表内存中。 有没有想过如何做到这一点? 这是我到目前为止所拥有的

         .386
         .model  flat

         .code
main proc
    mov        eax, 0   ; initialize the counter
FLP:
    mov        ebx, ecx
    add        ebx, eax
    sub        ebx, edx
    mov        ecx, ebx
    inc        eax
    cmp        eax, 10
    jle        FLP
main endp
end main
解决方案

.model flat
;.data
.code

main PROC
    xor ecx, ecx 
    xor eax, eax
loop10:
    add eax, ecx
    inc ecx
    cmp ecx, 10
    jbe loop10
main ENDP 
END main

“注册表内存”是什么意思?您是否在谈论CPU的通用寄存器,如
eax
ebx
等?如果是这样,那么您已经在使用这些寄存器了,因此不清楚问题出在哪里。没有理由在32位代码中乱用16位寄存器来完成此任务<代码>添加esi,bx甚至不会进行汇编,因为操作数大小不同。无论如何,根据标准调用约定,您可能希望将返回值保留在EAX中。
mov ax,ax
?真的吗<代码>添加esi、bx?认真地我很好奇,你是怎么想到的?@MikeNakis,我做了一些改变。好了,彼得·科尔德斯,你说得对。请参阅更新的代码作为旁注,通常最好使用
xor
将寄存器归零,而不是
mov
。看见