ASM中的嵌套循环

时间:2018-04-20 03:55:49

标签: assembly x86 nested-loops

我收到了以下数据:

binary_file_patterns

date_time变量应逐个存储604,800个值。有人能告诉我我是怎么做的 会启动这个程序所需的嵌套循环吗?感谢

1 个答案:

答案 0 :(得分:2)

x86中的循环可能如下所示:

mov <any register>, <start_value>
l_back:
   ...
   <do something>
   ...
inc <any register>
cmp <any register>, <end_value>
jbe l_back

它做的很简单:用起始值加载任何寄存器,并重复所有值(包括)

如果您的范围是0..255,您使用的注册表取决于您,EAX,EBX,ECX,......甚至是AH,AL,BH,BL。

嵌套它们很容易,只需要一个新的循环,并将其放入“&lt;做某事&gt;”外环的(循环体):

mov <any register>, <start_value>
l_back1:
   ...
    mov <any other register>, <other_start_value>
    l_back2:
       ...
       <do something nested>
       ...
    inc <any other register>
    cmp <any other register>, <other_end_value>
    jbe l_back2
   ...
inc <any register>
cmp <any register>, <end_value>
jbe l_back1

要记住的事项:如果你破坏控制变量,循环将无法工作。因此要么确保你没有在“&lt;做某事&gt;”中使用它们,要么在你进入身体之前存储它们,并在你离开时恢复它们。

样品:

mov ah, 0
   l1: mov al, 0
     l2: < put the body here >
   inc al
   cmp al, 60
   jbe l2
inc ah
cmp ah, 24
jbe l1