|
Slide 11.9: TEST instruction Slide 12.2: LOOPNZ and LOOPNE instructions Home |
|
LOOPZ and LOOPE Instructions
LOOPZ (loop if zero) and LOOPE (loop if equal) instruction permit a loop to continue while the Zero flag is set and the unsigned value of ECX is greater than zero. The following code is the execution logic of them:
ECX = ECX - 1 if (ECX > 0 and ZF = 1) jump to destinationThe loop destination must be within –128 to +127 bytes of the current location counter.
LOOPZ/LOOPE — LOOP If Equal (Zero) |
||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||||||||||||||||
LOOP |
LOOPZ |
LOOPE |
|---|---|---|
INCLUDE Irvine32.inc .code main PROC count = 6 mov eax, 0 mov ecx, count L1: add al, cl test al, 0F0h loop L1 call WriteInt exit main ENDP END main |
INCLUDE Irvine32.inc .code main PROC count = 6 mov eax, 0 mov ecx, count L1: add al, cl test al, 0F0h loopz L1 call WriteInt exit main ENDP END main |
INCLUDE Irvine32.inc .code main PROC count = 6 mov eax, 0 mov ecx, count L1: add al, cl test al, 0F0h loope L1 call WriteInt exit main ENDP END main |
| Output | Output | Output |