9. Loops 循环

1. 循环结构

汇编语言中的循环是一组重复 rcx 次的指令
在进入任何循环之前,我们应该将所需的循环迭代次数 movrcx 寄存器

mov rcx, 3 #将循环( rcx )计数器设置为 x
loop exampleLoop #跳回 loop 开始处,直到计数器达到 0

1.1. 定义循环

global  _start

section .text
_start:
    xor rax, rax    ; initialize rax to 0
    xor rbx, rbx    ; initialize rbx to 0
    inc rbx         ; increment rbx to 1
>>>>     mov rcx, 10
loopFib:
    add rax, rbx    ; get the next number
    xchg rax, rbx   ; swap values
    loop loopFib

2. 作业

https://academy.hackthebox.com/storage/modules/85/loops.zip
编辑附件中的汇编代码,使“loop”标签循环 5 次。最后“rax”的十六进制值是多少?

global _start

section .text
_start:
    mov rax, 2
    mov rcx, 5
loop:
    imul rax, rax
>>>>     loop loop

使用 n 可以快速跳出循环

b _start
r
n
n
gef➤  p/x $rax
$2 = 0x100000000