Advertisement
Guest User

Za shanDoo-a

a guest
Jan 25th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Program za konverziju neoznacenog broja iz internog u znakovni oblik.
  2. # Proveriti da li pretvoreni broj staje u bafer, ukoliko stane ispisati broj
  3. # u suprotnom ispisati gresku!
  4. .section .data
  5.     broj: .long 1234567890
  6.     baza: .long 10
  7.  
  8.     dec_br_max = 12
  9.     dec_br: .fill dec_br_max, 1, 0
  10.  
  11.     greska_str: .ascii "Greska\!\n\0"
  12.     greska_str_max = . - greska_str
  13.  
  14. .section .text
  15. .globl main
  16. main:
  17.     movl broj, %eax
  18.     movl baza, %ebx
  19.     leal dec_br, %edi
  20.    
  21.     movl %edi, %ecx          # Postavljanje krajnje adrese bafera
  22.     addl $dec_br_max-2, %ecx # Oduzimamo 2 jer su 2 lokacije zauzete za '\n' i '\0'
  23.  
  24. dec_cifra:
  25.     xorl %edx, %edx
  26.     divl %ebx
  27.     addb $'0', %dl
  28.    
  29.     cmpl %ecx, %edi          # Provera da li smo izasli van bafera
  30.     jnl ispisi_gresku
  31.    
  32.     movb %dl, (%edi)
  33.     incl %edi
  34.  
  35.     andl %eax, %eax          # Provera da li je eax = 0
  36.     jnz dec_cifra
  37.  
  38.     movb $10, (%edi)
  39.     movb $0, 1(%edi)
  40.  
  41.     decl %edi                # Priprema za obrtanje stringa
  42.     leal dec_br, %esi
  43.  
  44. reverse:                     # Obrtanje stringa
  45.     cmpl %edi, %esi
  46.     jae ispisi
  47.  
  48.     movb (%esi), %ah
  49.     movb (%edi), %al
  50.     movb %ah, (%edi)
  51.     movb %al, (%esi)
  52.  
  53.     incl %esi
  54.     decl %edi
  55.     jmp reverse
  56.  
  57. ispisi_gresku:              # Sistemski poziv za ispis greske
  58.     movl $4, %eax
  59.     movl $1, %ebx
  60.     leal greska_str, %ecx
  61.     movl $greska_str_max, %edx
  62.     int $0x80
  63.     jmp kraj
  64.  
  65. ispisi:                     # Sistemski poziv za ispis na ekran
  66.     movl $4, %eax
  67.     movl $1, %ebx
  68.     leal dec_br, %ecx
  69.     movl $dec_br_max, %edx
  70.     int $0x80
  71.  
  72. kraj:
  73.     movl $1, %eax
  74.     movl $0, %ebx
  75.     int $0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement