Advertisement
lukicdarkoo

Test34 - Zadatak I grupe

Apr 29th, 2014
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # int PrviPosljednji(int *, int);
  2.  
  3. .section .text
  4. .globl PrviPosljednji
  5.  
  6. PrviPosljednji:
  7.     pushl %ebp
  8.     movl %esp, %ebp
  9.    
  10.     pushl %esi
  11.     pushl %edi
  12.     pushl %ebx
  13.  
  14.     movl 8(%ebp), %esi  # adresa prvog clana niza
  15.     movl 12(%ebp), %eax # n - broj clanova niza
  16.  
  17.  
  18.     movl $0, %ebx   # brojac pozitivnih
  19.     movl $0, %edx   # brojac negativnih
  20.  
  21.     movl $0, %edi
  22.     while:
  23.     cmpl %edi, %eax
  24.     je whileKraj
  25.    
  26.         movl (%esi, %edi, 4), %ecx # u %ecx smjesta vrijednost i-tog clana niza
  27.         cmpl $0, %ecx
  28.         jl whileNegativan
  29.  
  30.         # u suprotnom je pozitivan
  31.         incl %ebx
  32.         jmp whileBrojac
  33.        
  34.         whileNegativan:
  35.             incl %edx
  36.        
  37.         whileBrojac:
  38.             incl %edi
  39.  
  40.     jmp while
  41.     whileKraj:
  42.  
  43.  
  44.     cmpl %edx, %ebx
  45.     jge vratiPrvi
  46.  
  47.         # u suprotnom vrati posljednji
  48.         movl %eax, %ebx # u %ebx smjesta broj clanova niza
  49.         decl %ebx       # smanjuje za 1 kako bi pristupio posljednjem clanu, kako bi dobio (n-1)
  50.         movl (%esi, %ebx, 4), %eax
  51.         jmp kraj
  52.  
  53.  
  54.     vratiPrvi:
  55.            
  56.         movl (%esi), %eax
  57.  
  58.     kraj:
  59.         popl %ebx
  60.         popl %edi
  61.         popl %esi
  62.  
  63.         movl %ebp, %esp
  64.         popl %ebp
  65.         ret
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. ############################## C kod ###############################
  75. #include <stdio.h>
  76.  
  77. int PrviPosljednji(int *, int);
  78.  
  79. int main() {
  80.     int niz[] = {1, -1, -5, -3};
  81.     int n = 4;
  82.  
  83.     printf("%d", PrviPosljednji(niz, n));
  84.  
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement