Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops MASM组装-循环我做错了什么?_Loops_Assembly_X86_Masm - Fatal编程技术网

Loops MASM组装-循环我做错了什么?

Loops MASM组装-循环我做错了什么?,loops,assembly,x86,masm,Loops,Assembly,X86,Masm,我需要写一个循环,循环三个代表一个人薪水的数字,然后求和: 在示例中,输出应为: Joe Blow 600 763 521 Total: 1884 这是我的尝试: .386 .MODEL FLAT ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD Include io.h cr equ 0DH ; carriage return character Lf equ

我需要写一个循环,循环三个代表一个人薪水的数字,然后求和:

在示例中,输出应为:

Joe Blow
600 763 521
Total: 1884
这是我的尝试:

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

Include io.h
cr         equ   0DH                     ; carriage return character
Lf         equ   0AH                     ; line feed
.STACK 4096                     

.DATA                                   ;data area
Emp1    byte    'Joe Blow', 13, 10, 0
Num1    dword   600,763,521, 0
str1    byte    15 dup(?)
sum     byte   'Total: ', 13, 10, 0
Lista   DWORD   55
multi   DWORD   25
newline byte    cr,lf,0                 ;formatting line purposes 

.CODE                                   ;start of main program code
_start:                         

    mov ecx, 0
    mov ecx, 6
    Lea ebx, Lista 

    top:                 ;loop name
    add eax, [ebx]
    add ebx, 4
    ;add ebx, 8
    loop top 

    output Emp1
    dtoa str1, Num1
    output str1 
    dtoa str1, eax
    output str1
    output newline
    output sum

我得到的输出不是我想要的

您得到的输出是什么?为什么(在前两条指令中)将ecx设置为0,然后在下一条指令中覆盖?这让我觉得有输入错误(或更糟)。
Lista
是一个值为55的
DWORD
。您试图对它进行迭代,就好像它是一个由6个DWORD组成的数组,而不是。。。。您正在将这6个不存在的
DWORD
s添加到尚未初始化的
eax
。不要依赖代码启动器来完成这项工作。@wallyk评论的第一个
mov ecx,0
的意图是
mov eax,0
?然后将
str1
发送到输出,但尚未生成
str1
。您需要找到一种将数字(
eax
)转换为字符串的方法。