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
)转换为字符串的方法。