## Program za dva uneta broja ispisuje zbir, razliku
## proizvod, kolicnik i ostatak.

.intel_syntax noprefix
		
.data
rdfmt:	.asciz  "%d%d"		    # Ulazni format.
wrfmt:	.asciz  "%d\n"		# Izlazni format.
wrfmt1:	.asciz	"%d(%d)\n"

.bss
.lcomm	x, 4                    # Prvi operand.
.lcomm	y, 4                    # Drugi operand.
		
.text
.global main

main:
    enter   0, 0

    # Ucitavamo operande
    lea     rdi, rdfmt
    lea     rsi, x
    lea     rdx, y
    call    scanf

    # Racunamo i ispisujemo zbir
    lea     rdi, wrfmt
    mov     esi, x
    add     esi, y
    call    printf
    
    # Racunamo i ispisujemo razliku
    lea     rdi, wrfmt
    mov     esi, x
    sub     esi, y
    call    printf

    # Racunamo i ispisujemo proizvod
    lea     rdi, wrfmt
    mov     eax, x
    imul    dword ptr y
    mov     esi, eax
    call    printf

    # Racunamo i ispisujemo kolicnik i ostatak
    # cqto oznaceno prosiruje registar rax na rdx:rax
    mov     eax, x
    cqto
    idiv    dword ptr y

    lea     rdi, wrfmt1
    mov     esi, eax
    call    printf


    ## Epilog funkcije.
    xor	    rax, rax
    leave
    ret
