汇编语言 循环
-
循环
JMP指令可用于实现循环。例如,以下代码段可用于执行循环主体10次。MOV CL, 10 L1: <LOOP-BODY> DEC CL JNZ L1
但是,处理器指令集包括一组用于实现迭代的循环指令。基本的LOOP指令具有以下语法-LOOP label
其中,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 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: