JMP指令可用於實現迴圈。例如,下面的程式碼片段可用於執行迴圈體10次。
MOV CL, 10 L1: <LOOP-BODY> DEC CL JNZ L1
然而,該處理器的指令集包括一組用於執行迭代迴圈指令。基本迴圈指令的語法如下:
LOOP label
其中,標籤是物件標註,標識中的跳轉指令的目標指令。LOOP指令假定ECX暫存器包含迴圈計數值。當迴圈指令被執行時,ECX暫存器遞減,控制跳轉到目標標籤直到ECX暫存器的值,即計數器達到零值。
上面的程式碼可以寫成:
mov ECX,10 l1: <loop body> loop l1
下面的程式將列印在螢幕上數位1?9:
section .text global _start ;must be declared for using gcc _start: ;tell linker entry yiibai mov ecx,10 mov eax, '1' l1: mov [num], eax mov eax, 4 mov ebx, 1 push ecx mov ecx, num mov edx, 1 int 0x80 mov eax, [num] sub eax, '0' inc eax add eax, '0' pop ecx loop l1 mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel section .bss num resb 1
上面的程式碼編譯和執行時,它會產生以下結果:
123456789: