]]> ]]>

Факториал в Assembler

Пример для версий MIPS32

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   

Комментарии

]]>

blog comments powered by Disqus

]]>

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