x86 LODSB STOSB LOOP说明

时间:2017-03-19 21:15:44

标签: loops assembly x86

我跑过这些指示:

...
...

get:
lodsb  
xor eax,ebx 
stosb  
loop get 
push esp 
pop esi 
int3 

我看到这个加载一个字节做一个xor并将该字节存储在一个循环中它会这样做直到ECX = 0.我的问题是程序如何知道继续push esp指令?这只是循环块语法隐含的吗?

1 个答案:

答案 0 :(得分:4)

loop指令的名称可能有点误导。你可能会想要相信它只是跳到给定的标签,但想一想:如果它只是一个跳跃,那么loop和所有其他{{1}之间的区别是什么?说明?

事情的真相是jmp不仅仅是一个跳跃。它做了以下两件事:

  1. 减少ecx寄存器。
  2. 如果减量的结果不为零,则跳转到给定的标签。
  3. 因此,正如您所看到的,它非常适合循环,这就是它被称为loop的原因。