%include "rw32-2018.inc"

section .data
    ; zde budou vase data
    string db "Ahoj",0

section .text

funkce:
    mov esi,string
    call WriteString
    ret

vykresli:
    push ebp
    mov ebp, esp
    
    ;budete potrebovat 2 cykly
    ;vnejsi cyklus bude pro sloupce a vnitrni pro prochazeni radku
    mov edx, [ebp+12]
    mov ebx, [ebp+8]
    
    mov ecx,ebx
    radky:
        mov edx, [ebp+12]
        sloupce:    
            cmp edx,[ebp+12]
            jz vykresli_x
            cmp edx,1
            jz vykresli_x
            cmp ecx,1
            jz vykresli_x
            cmp ecx,ebx
            jz vykresli_x
            
            mov al, '_'
            call WriteChar
            jmp preskoc_vykresleni_x
        vykresli_x:    
            mov al, 'x'
            call WriteChar
            
        preskoc_vykresleni_x:
              
            dec edx
            cmp edx,0
            jnz sloupce
            call WriteNewLine
    dec ecx
    cmp ecx,0
    jnz radky

    mov esp,ebp
    pop ebp
    ret
    
fibonacci:
    push ebp
    mov ebp, esp

    push edx
    push ecx
    mov eax,[ebp+8]
    cmp eax,0
    jnz test_1
    mov eax,0
    jmp end
test_1:   
    cmp eax,1
    jnz vypocitej
    mov eax, 1     
    jmp end
vypocitej:
    mov edx,[ebp+8]
    sub eax,1
    sub edx,2
    
    push eax
    call fibonacci
    mov ecx, eax
    
    push edx
    call fibonacci
    add eax,ecx
    
end:
    pop ecx
    pop edx
    mov esp, ebp
    pop ebp
    ret 4

_main:
    push ebp
    mov ebp, esp

    ;vypise retezec na standardni vystup
    call funkce
    
    ;fibonacci
    push dword 6
    call fibonacci
    
    ;vykresleni obrysu obdelniku ASCII
    push dword 10
    push dword 20
    call vykresli
    add esp, 8
    
    

    pop ebp
    ret