looped
Loop while equal, ecx as the counter
Decrements ecx by one and jumps to the short target if the counter is non-zero and ZF is 1.
386 and later
CFPFAFZFSFDFOF –––––––
- Changes no flag
- Reads ZF
Forms
looped
Operands
imm8- A branch target, written as a label or address. NASM calculates the displacement from the end of the instruction. The displacement must fit a signed byte,
-128to127.
It leaves flags unchanged. A zero initial counter wraps to its maximum value when decremented.
The d suffix explicitly selects the 32-bit counter and 32-bit address size, including in 64-bit mode. The suffix chooses the counter width, not the branch displacement width.
Write a target label or address. NASM calculates a signed 8-bit displacement from the end of the instruction (−128 through 127 bytes). There is no longer near encoding.
global _start
section .text
_start:
mov rcx, 5 ; the counter this family reads
xor rax, rax
again:
add rax, rcx
cmp rax, 0 ; the conditional forms read the flags too
looped again ; jumps while ecx is not zero and the last comparison was equal
mov rax, 60 ; syscall 60: exit
xor rdi, rdi
syscall