Untitled
unknown
plain_text
4 years ago
4.4 kB
9
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= ", 0Editor is loading...