Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; WINDLX Ex.3: Factorial
- ; (c) 1991 Guenther Raidl
- ; Modified: 1992 Maziar Khosravipour
- ; Program begin at symbol main
- ; requires module INPUT
- ; read a number from stdin and calculate the factorial (type: double)
- ; the result is written to stdout
- ;---
- .data
- Prompt: .asciiz "An integer value >1 : "
- PrintfFormat: .asciiz "Factorial = %g\n\n"
- .align 2
- PrintfPar: .word PrintfFormat
- PrintfValue:.space 8
- .text
- .global main
- main:
- ;--- Read value from stdin into R1
- addi r1,r0,Prompt
- jal InputUnsigned
- ;--- init values
- movi2fp f10,r1 ;R1 -> D0 D0..Count register
- cvti2d f0,f10
- addi r2,r0,1 ;1 -> D2 D2..result
- movi2fp f11,r2
- cvti2d f2,f11
- movd f4,f2 ;1-> D4 D4..Constant 1
- ;--- Break loop if D0 = 1
- Loop: led f0,f4 ;D0<=1 ?
- bfpt Finish
- ;--- Multiplication and next loop
- multd f2,f2,f0
- subd f0,f0,f4
- j Loop
- Finish: ;--- write result to stdout
- sd PrintfValue,f2
- addi r14,r0,PrintfPar
- trap 5
- ;--- end
- trap 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement