Facebook
From Paltry Kangaroo, 6 Years ago, written in ARM Assembler.
Embed
Download Paste or View Raw
Hits: 220
  1. # zad1
  2. .macro print_str (%str)
  3.         .data
  4.         myLabel: .asciiz %str
  5.         .text
  6.         li $v0, 4
  7.         la $a0, myLabel
  8.         syscall
  9. .end_macro
  10.  
  11. .macro get # pobiera liczbe i przechwuje w $v0
  12.         li $v0, 5
  13.         syscall
  14. .end_macro
  15.        
  16. .macro calculate # a = $a0, b = $a1, c = $a2, wynik w $v0
  17.         mul $t0, $a0, $a0 # a^2
  18.         nop
  19.         mul $t0, $t0, $a0 # a^3
  20.         nop
  21.         mul $t0, $t0, 3 # 3a^3
  22.         nop
  23.        
  24.         mul $t1, $a1, $a1 # b^2
  25.         nop
  26.         mul $t1, $t1, 2 # 2b^2
  27.         nop
  28.        
  29.         add $v0, $t0, $t1 # $v0 = 3a^3 + 2b^2
  30.         add $v0, $v0, $a2 # $v0 = 3a^3 + 2b^2 + c
  31. .end_macro
  32.  
  33. .macro terminate # konczy program
  34.         li $v0, 10
  35.         syscall
  36. .end_macro
  37.  
  38. .macro zad
  39.         print_str("\nPodaj a: ")
  40.         get
  41.         add $s0, $zero, $v0
  42.        
  43.         print_str("Podaj b: ")
  44.         get
  45.         add $s1, $zero, $v0
  46.        
  47.         print_str("Podaj c: ")
  48.         get
  49.         add $s2, $zero, $v0
  50.        
  51.         # przenosze wartosci do argumentow dla calculate
  52.         add $a0, $zero, $s0
  53.         add $a1, $zero, $s1
  54.         add $a2, $zero, $s2
  55.        
  56.         calculate
  57.         add $s3, $zero, $v0 # wynik w $s3
  58.        
  59.         # przenosze wartosci do argumentow dla max
  60.         add $a0, $zero, $s0
  61.         add $a1, $zero, $s1
  62.         add $a2, $zero, $s2
  63.        
  64.        
  65.         print_str("\nWartosc funkcji: ")
  66.         li $v0, 1
  67.         add $a0, $zero, $s3
  68.         syscall # drukuje wynik
  69. .end_macro
  70.  
  71. .text
  72.         main:
  73.                 zad
  74.                 print_str("\nMaksymalny parametr: ")
  75.                 jal max # $v0 max
  76.                 add $a0, $zero, $v0
  77.                 li $v0, 1
  78.                 syscall
  79.                
  80.                 print_str("\nCzy powtrzyc zadanie? (1 - tak, 0 - nie): ")
  81.                 get
  82.                 beq $v0, 1, main
  83.                 terminate
  84.                
  85.         max: # wynik w $v0
  86.                 add $t0, $0, $s0
  87.                 bgt $s1, $t0, b_g
  88.                 bgt $s2, $t0, c_g
  89.                
  90.                
  91.                 j end
  92.                
  93.                 b_g:
  94.                         add $t0, $0, $s1
  95.                         bgt $s2, $t0, c_g
  96.                         j end
  97.                
  98.                 c_g:
  99.                         add $t0, $0, $s2
  100.                         j end
  101.                        
  102.                 end:
  103.                         add $v0, $0, $t0
  104.         jr $ra
  105.