Philip Rushik on 13 Sep 2017 16:34:48 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Why Can't Programmers.. Program?


I find it hard to believe that there are actually programmers out there that can't solve that problem. I know non-programmers that could easily solve that problem (I asked a few). Anyways, for the sake of being annoying, I implemented this in just about the worst way possible, here yall go, enjoy:

section .data
    fizz:        db "fizz",10
    buzz:        db "buzz",10
    num:         db " "
    num1:        db "0"
    num2:        db "0"
    num3:        db "0"
                db 10
section .text
    global _start

    write_buzz:
        push    rsi
        lea        rsi, [buzz]
        call    write
        pop        rsi
        ret

    write_num:
        mov        rax, rcx
        mov        r10, 10
        xor        rdx, rdx
        div        r10
        cmp        rdx, 5
        je        write_buzz
        cmp        rdx, 0
        je        write_buzz
        add        rdx, '0'
        mov        [num3], dl
        xor        rdx, rdx
        div        r10
        add        rdx, '0'
        add        rax, '0'
        mov        [num2], dl
        mov        [num1], al

        lea        rsi, [num]
    write:
        push    rcx
        mov        rax, 1
        mov        rdi, 1
        mov        rdx, 5
        syscall
        pop        rcx
        ret

    _start:
        xor        rcx, rcx
        _loop:
            inc        rcx
            call    write_num
            cmp        rcx, 100
            jge        _exit
            inc        rcx
            call    write_num
            inc        rcx
            lea        rsi, [fizz]
            call    write
            mov        rax, rcx
            xor        rdx, rdx
            mov        r10, 5
            div        r10
            cmp        rdx, 0
            jne        _loop
            call    write_buzz
            jmp        _loop

        _exit:
            mov        rax, 60
            syscall

___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug