Untitled

 avatar
unknown
plain_text
4 years ago
4.4 kB
6
Indexable
%include 'mio.inc'
%include 'io.inc'
global main

section .text

OlvasDecimalis:
    push ebx
    push ecx
    push edi

.olvas:
    mov eax,str_a
    call mio_writestr

    xor eax,eax
    xor ebx,ebx
    mov ecx,10

.kovetkezo:
    call mio_readchar
    call mio_writechar
    cmp al,'-'
    je .negativ
    cmp al,13
    je .end
    cmp al,'0'
    jl .hiba
    cmp al, '9'
    jg .hiba
    

    sub eax,'0'
    imul ebx,ecx
    add ebx,eax
    jmp .kovetkezo
.negativ:
    mov edi,1
    jmp .kovetkezo
    
.hiba:
    mov eax,hibauzenet
    call mio_writestr
    call mio_writeln

    jmp .olvas

.end:

    mov eax,ebx
    cmp edi,1
    je .neg

    jmp .folytat
.folytat:
    pop edi
    pop ecx
    pop ebx
    clc

    ret
.neg:
    neg eax
    jmp .folytat



KiirDecimalis:  
    
    push ebx
    push ecx
    push edx
    push esi
    push eax

    mov eax,str_dec
    call mio_writestr

    pop eax 
    push eax

    mov ebx,10
    xor ecx,ecx

    cmp eax,0
    jl .minusz

    jmp .kovetkezoSzj

.minusz:
    xchg eax,esi
    mov eax,'-'
    call mio_writechar
    xchg eax,esi
    neg eax

.kovetkezoSzj:
    cdq
    idiv ebx
    push edx
    inc ecx

    cmp eax,0
    jne .kovetkezoSzj

    cmp eax,0
    je .kovetkezoKi

.kovetkezoKi:
    pop eax

    add eax,'0'
    call mio_writechar
    sub ecx,1
    cmp ecx,0
    jne .kovetkezoKi

    pop eax
    pop esi
    pop edx
    pop ecx
    pop ebx
    ret

KiirHexadecimalis:

    push ebx
    push ecx
    push edx
    push eax

    mov eax,str_hex
    call mio_writestr
    mov eax,str_pre
    call mio_writestr

    pop eax
    push eax

    xor ecx,ecx

    .kovetkezo:
        mov ebx,eax
        and ebx,0xf
        push ebx
        inc ecx
        shr eax,4
        cmp eax,0
        jne .kovetkezo

        push ecx
        mov edx,8
        sub edx,ecx
        cmp edx,0
        jne .zerosok

        pop ecx
        jmp .kiirKov
    .zerosok:
        mov eax,'0'
        call mio_writechar
        dec edx 
        cmp edx,0
        jne .zerosok
        pop ecx
    .kiirKov:
        pop eax
        dec ecx

        cmp eax,9
        jle .atalakitszam
        cmp eax,15
        jle .atalakitbetu
        
    .atalakitszam:
        add eax,48
        jmp .kiir
    .atalakitbetu:
        add eax,55
        jmp .kiir
    .kiir:
        call mio_writechar
        cmp ecx,0
        jne .kiirKov
    .end:
        pop eax
        pop edx
        pop ecx
        pop ebx

        ret


OlvasHexadecimalis:
    push ebx
    push ecx
    push edx
    push eax

    .olvashex:
        mov eax,str_b
        call mio_writestr

        xor eax,eax
        xor ebx,ebx

        .kovetkezobe:
            call mio_readchar
            call mio_writechar
            cmp al,13
            je .end
            cmp al,48
            jl .hiba2
            cmp al,102
            jg .hiba2
            cmp al,57
            jle .folytatas
            cmp al,65
            jl .hiba2
            cmp al,70
            jle .folytatas
            cmp al,97
            jl .hiba2
            cmp al,102
            jle .kicsibolNagy

            jmp .kovetkezobe
    .kicsibolNagy:
        sub eax,32
        jmp .folytatas

    .hiba2:
        mov eax,hibauzenet
        call mio_writestr
        call mio_writeln
        
        jmp .olvashex

        .folytatas:
            cmp eax,'9'
            jle .alakitSzam
            cmp eax,'F'
            jle .alakitBetu
    

    .alakitSzam:
        sub eax,'0'
        jmp .felepitSzam
    .alakitBetu:
        sub eax,'55'
        jmp .felepitSzam
        .felepitSzam:
            rol ebx,4
            add bl,al
            
            jmp .kovetkezobe


    .end:

        ror ebx,4
        mov eax,ebx
        pop eax
        pop edx
        pop ecx
        pop ebx

        ret

main:

    
    call OlvasHexadecimalis
    call mio_writeln
    call io_writehex
    
    

    ret

section .data

    str_a db "A= ", 0
    hibauzenet db " Helytelen bemenet, irjon uj szamot", 0
    str_dec db "A szam decimalis alakja: ", 0
    str_hex db "A szam hexadecimalis alakja ", 0
    str_pre db "0x",0
    str_b db "B= ", 0
Editor is loading...