]]> ]]>

MIPS32

Версия реализации MIPS языка программирования Assembler

32 битная реализация MIPS.

Примеры:

Факториал - Assembler (525):

13! и дальше вызывают переполнение, поэтому вывод такой:

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 1932053504
14! = 1278945280
15! = 2004310016

.data
  string1: .asciiz "! = " 
  string2: .asciiz "\n"

  
.text

main:

 li $t1, 1
 li $t2, 1

 j loop

loop:

  li $v0, 1
  la $a0, ($t2)
  syscall
  
  la $a0, string1
  li $v0, 4
  syscall 
  
  mult $t1,$t2
  mflo $t1
  
  li $v0, 1
  la $a0, ($t1)
  syscall
  
  la $a0, string2
  li $v0, 4
  syscall 
  
  addiu $t2,$t2,1
  
  beq $t2, 16, endloop
  j loop
  
  

endloop:
  
  li $v0, 10
  syscall   

Числа Фибоначчи - Assembler (524):

Эмулятор MARS. Вывод консоли MARS:

      The Fibonacci numbers are:
      1 1 2 3 5 8 13 21 34 55 89 144 
      -- program is finished running --

Программа выводит 15 чисел Фибоначчи. Количество чисел можно изменить в секции .data.

.data

  space:.asciiz  " "      
  head: .asciiz  "The Fibonacci numbers are:\n"
  fib: .word   0 : 15    
  size: .word  15  
       
.text

main:
  la   $t0, fib   
  la   $t5, size    
  lw   $t5, 0($t5)  
  li   $t2, 1       
  add.d $f0, $f2, $f4
  sw   $t2, 0($t0)  
  sw   $t2, 4($t0)  
  addi $t1, $t5, -2    
   
loop: 
  lw   $t3, 0($t0)   
  lw   $t4, 4($t0)  
  add  $t2, $t3, $t4    
  sw   $t2, 8($t0)  
  addi $t0, $t0, 4  
  addi $t1, $t1, -1     
  bgtz $t1, loop    
  la   $a0, fib    
  move $a1, $t5
  jal  print    
  li   $v0, 10      
  syscall  
       
print:
  add  $t0, $zero, $a0  
  add  $t1, $zero, $a1  
  la   $a0, head    
  li   $v0, 4       
  syscall       
      
out:  
  lw   $a0, 0($t0)     
  li   $v0, 1      
  syscall       
  la   $a0, space   
  li   $v0, 4       
  syscall      
  addi $t0, $t0, 4  
  addi $t1, $t1, -1    
  bgtz $t1, out  
  jr   $ra     

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам