位置:首頁 > 高級語言 > Assembly彙編 > Assembly 循環

Assembly 循環

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: