BITS 32

push ebx
push ecx
push ax
mov ecx,0x68d310
mov ax,0x0

start:
cmp dword [ecx],0x0
je exit
cmp ax,0xc
je exit

;------------------------
; Main start
;------------------------

mov ebx,[ecx]
mov ebx,[ebx+0x0c]
cmp byte [ebx+0x0a],0x0A
ja restart
inc byte [ebx+0x0a]       ; inc is the same as "add location,0x01"
                          ; in other words, it just adds 1
;------------------------
; Main End
;------------------------

increment:
add ecx,0x4
inc ax
jmp start

;------------------------
; Restart colors

restart:
mov [ebx+0x0a],byte 0x00
jmp increment

;------------------------
; Exit

exit:
pop ax
pop ecx
pop ebx
ret