Assembly彙編
Assembly彙編教學
Assembly - 什麼是彙編語言
Assembly 環境設置
Assembly 基本語法
Assembly 內存段
Assembly 寄存器
Assembly 系統調用
Assembly 尋址模式和MOV指令
Assembly 變量聲明
Assembly 常量
Assembly 算術指令
Assembly 邏輯指令
Assembly 條件
Assembly 循環
Assembly 數字
Assembly彙編 字符串處理
Assembly彙編 MOVS指令
Assembly彙編 LODS指令
Assembly彙編 STOS指令
Assembly彙編 CMPS指令
Assembly彙編 SCAS指令
Assembly彙編 數組
Assembly彙編 過程
Assembly彙編 遞歸
Assembly彙編 宏
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: