如何跳出一个循环后跳回循环-NASM

时间:2020-02-16 23:35:05

标签: loops assembly nasm

我正在使用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进行此操作的,并且它没有按照我的意图工作,所以我认为不会有任何问题如果我把它放到一个过程中。

感谢任何可以帮助我的人:)

1 个答案:

答案 0 :(得分:0)

Jester的帮助下,两个错误均已修复。

第一个错误是通过在我的ret函数的末尾添加print来解决的,而分段错误是通过将loop1函数的第一行从以下内容修正的: >

cmp [edi], byte 0

对此:

cmp byte [edi], byte 0

我不确定为什么要在该行中添加byte来解决该问题,但我很高兴它能起作用。

相关问题