我正在使用NASM,但我坚持如何跳出循环后返回循环。
在SESSION_SECRET= "EXAMPLEkeyHERE1"
中,我使用_start
开始循环。循环成功运行,并且第一次循环迭代将打印出call loop1
,这正是我想要的。
此循环的目的是遍历a
中的值,并打印出每个字符(如果它们是字母edi
)。当前,它仅在a
中找到至少一个a
时打印出一个a
,如果找不到则不打印任何内容。
是的,已经定义了此代码中使用的所有标签,所以这不是问题。如果需要发布完整的代码,请发表评论。
这是我的代码:
edi
我之所以使用这种方法,是因为我以前是在loop1:
cmp [edi], byte 0
je endloop
cmp byte [edi], 'a'
je istrue1
add edi, dword 1
add [n], dword 1
jmp loop1
endloop:
ret
istrue1:
mov ecx,edi
mov edx,1
call print
jmp loop1
内使用.loop
进行此操作的,并且它没有按照我的意图工作,所以我认为不会有任何问题如果我把它放到一个过程中。
感谢任何可以帮助我的人:)
答案 0 :(得分:0)
在Jester的帮助下,两个错误均已修复。
第一个错误是通过在我的ret
函数的末尾添加print
来解决的,而分段错误是通过将loop1
函数的第一行从以下内容修正的: >
cmp [edi], byte 0
对此:
cmp byte [edi], byte 0
我不确定为什么要在该行中添加byte
来解决该问题,但我很高兴它能起作用。