.386
.model flat, stdcall
option casemap : none
includelib msvcrt.lib
printf PROTO C :dword, :vararg
.data
showNum byte '%d', 0
newLine byte 0ah, 0
iArray dword 1, 2, 3, 4
COUNT EQU ($ - iArray) / 4
.code
start proc
push ebx
push esi
push eax
mov esi, 0
mov ebx, esp
L1:
push esi
cmp esi, COUNT
jz endShow
xor esi, esi
L2:
cmp [ebx - 4], esi
jz addEsiL1
push esi
xor esi, esi
L3:
cmp [ebx - 4], esi
jz addEsiL2
cmp [ebx - 8], esi
jz addEsiL2
mov eax, [ebx - 4]
mov eax, iArray[eax * 4]
invoke printf, offset showNum, eax
mov eax, [ebx - 8]
mov eax, iArray[eax * 4]
invoke printf, offset showNum, eax
mov eax, iArray[esi * 4]
invoke printf, offset showNum, eax
invoke printf, offset newLine
inc esi
cmp esi, COUNT
jnz L3
pop esi
inc esi
jmp L2
addEsiL1:
inc esi
cmp esi, COUNT
jnz L2
jmp resetL1
addEsiL2:
inc esi
cmp esi, COUNT
jnz L3
jmp resetL2
resetL1:
pop esi
inc esi
cmp esi, COUNT
jz endShow
jmp L1
resetL2:
pop esi
inc esi
cmp esi, COUNT
jz resetL1
jmp L2
endShow:
pop eax
pop esi
pop ebx
ret
start endp
end start