
彙編——迴圈
JMP 指令可用於實現迴圈。例如,可以將以下程式碼段用於執行迴圈體 10 遍。
MOV CL, 10 L1: <LOOP-BODY> DEC CL JNZ L1
然而,處理器指令集包括一組迴圈指令,用於迴圈迭代。基本 LOOP 指令的語法如下 −
LOOP label
其中,標籤是目標標籤,用於標識目標指令,正如跳轉指令中一樣。LOOP 指令假設 ECX 暫存器包含迴圈計數。執行 LOOP 指令時,ECX 暫存器減 1,並且控制跳轉到目標標籤,直至 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 point 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:
廣告