Loop指令
Loop指令其實(shí)就是 循環(huán) 的意思
- Loop指令需要和CX寄存器配合使用, 用于循環(huán)操作, 類似于高級(jí)語言中的for, while等
- 使用格式:
mov cx, 循環(huán)的次數(shù) (當(dāng)遇到Loop標(biāo)號(hào)時(shí) cx就代表循環(huán)的次數(shù))
標(biāo)號(hào): (標(biāo)明后面就是需要循環(huán)的循環(huán)體)
循環(huán)執(zhí)行的程序代碼
Loop 標(biāo)號(hào)
- Loop指令執(zhí)行流程:
步驟1. 將cx寄存器的值 - 1, cx = cx - 1;
步驟2. 判斷cx的值 ;- 如果不為零 就執(zhí)行標(biāo)號(hào)處的代碼, 然后執(zhí)行步驟1
- 如果為零, 執(zhí)行Loop后面的代碼
- Loop的實(shí)現(xiàn)其實(shí)就是判斷cx > 0 然后jump到標(biāo)號(hào)所在地址
mov ax, ffffh
mov ds, ax //!< 數(shù)據(jù)段段地址
mov dx, 0h
mov bx, 0h //!< 清空dx和bx 用來接收數(shù)據(jù)
mov cx, 3h //!< 設(shè)置循環(huán)次數(shù)為3
s: mov al, [bx] //!< 循環(huán)取ds:[bx]中的數(shù)據(jù), 賦值給al
mov ah, 0h //!< 清空ah中的數(shù)據(jù), 用來累加的時(shí)候進(jìn)位
add dx, ax //!< dx = ax + dx
add bx, 1 //!< bx = bx + 1
loop s //!< 循環(huán)s標(biāo)記下的代碼
補(bǔ)充:
獲取數(shù)據(jù), 除了通過ds段來獲取, 還可以通過其他段地址來獲取:
例:mov ax, ds:[0], mov ax, cs:[0]等