Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Omoguciti unos deljenika i delioca u jednostrukoj preciznosti u hexadecimalnom obliku, i podeliti ta dva broja i ispisati rezultat deljenja, pritom voditi racuna o izlasku van opsega, deljenja sa nulom, pogresnog upisa operanada, ukoliko je doslo do greske , gresku postaviti na 1 i ispisati poruku, prilikom unosa brojeva moze da se upisuje i malim i velikim slovom.
- .section .data
- string_max = 40
- string1: .fill string_max,1,0
- string2: .fill string_max,1,0
- rezutat: .fill string_max,1,0
- .section .text
- .globl main
- main:
- movl $3, %eax
- movl $0, %ebx
- leal string1, %ecx
- movl $string_max, %edx
- int $0x80
- jmp konverzija1
- unos_drugog:
- movl %eax, %esi
- movl $3, %eax
- movl $0, %ebx
- leal string2, %ecx
- movl $string_max, %edx
- int $0x80
- jmp konverzija2
- konverzija1:
- movl $0, %esp
- movl $0, %ecx
- movl $0, %esi
- leal string1, %ebx
- movl $0, %eax
- movl $0, %edx
- movl $16, %ebp
- konverzijastep2:
- incl %esp
- cmpl $8, %esp
- ja greska
- cmpl $10, (%ebx)
- je unos_drugog
- movb (%ebx), %cl
- cmpb $'0', %cl
- jb greska
- cmpb $'9', %cl
- jbe broj1
- cmpb $'A', %cl
- jb greska
- cmpb $'F', %cl
- jbe slovo1
- jmp greska
- broj1:
- subb $'0', %cl
- mull %ebp
- addl %ecx, %eax
- incl %ebx
- jmp konverzijastep2
- slovo1:
- subb $55, %cl
- mull %ebp
- addl %ecx, %eax
- incl %ebx
- jmp konverzijastep2
- konverzija2:
- movl $0, %esp
- movl $0, %ecx
- leal string2, %ebx
- movl $0, %eax
- movl $0, %edx
- movl $16, %ebp
- konverzija2step2:
- incl %esp
- cmpl $8, %esp
- ja greska
- cmpl $10, (%ebx)
- je dijeljenje
- movb (%ebx), %cl
- cmpb $'0', %cl
- jb greska
- cmpb $'9', %cl
- jbe broj2
- cmpb $'A', %cl
- jb greska
- cmpb $'F', %cl
- jbe slovo2
- jmp greska
- broj2:
- subb $'0', %cl
- mull %ebp
- addl %ecx, %eax
- incl %ebx
- jmp konverzija2step2
- slovo2:
- subb $55, %cl
- mull %ebp
- addl %ecx, %eax
- incl %ebx
- jmp konverzija2step2
- dijeljenje:
- movl %eax, %edi
- movl %edi, %ecx #drugi broj u ecx
- movl %esi, %eax #prvi broj u ebx
- cmpl $0, %ecx
- je greska
- movl $0, %edx
- divl %ecx
- leal rezutat, %esi
- kovnver_nazad:
- cmpl $0, %eax
- je rotiranje
- movl $16, %ecx
- movl $0, %edx
- divl %ecx
- cmpl $9, %edx
- ja povecaj_za_55
- jmp dalje_laki
- povecaj_za_55:
- addl $55, %edx
- jmp dalje_dalje_dalje
- dalje_laki:
- addl $'0', %edx
- dalje_dalje_dalje:
- movl %edx, (%esi)
- incl %esi
- jmp kovnver_nazad
- rotiranje:
- leal rezutat, %edi
- decl %esi
- movl %esi, %esp
- rotiranje1:
- movb (%esi), %ah
- movb (%edi), %al
- movb %ah, (%edi)
- movb %al, (%esi)
- incl %edi
- decl %esi
- cmpl %edi, %esi
- jbe ispis
- jmp rotiranje1
- ispis:
- incl %esp
- movl $10, (%esp)
- movl $4, %eax
- movl $1, %ebx
- leal rezutat, %ecx
- movl $string_max, %edx
- int $0x80
- greska:
- movl $1, %eax
- kraj:
- movl $1, %eax
- int $0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement