fact.s
上传用户:wecan5
上传日期:2021-07-24
资源大小:529k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ;*********** WINDLX Ex.3: Factorial *************
  2. ;*********** (c) 1991 G黱ther Raidl *************
  3. ;*********** Modified: 1992 Maziar Khosravipour *************
  4. ;--------------------------------------------------------------------------
  5. ; Program begin at symbol main
  6. ; requires module INPUT
  7. ; read a number from stdin and calculate the factorial (type: double)
  8. ; the result is written to stdout
  9. ;--------------------------------------------------------------------------
  10. .data
  11. Prompt:  .asciiz  "An integer value >1 : "
  12. PrintfFormat: .asciiz  "Factorial = %gnn"
  13. .align 2
  14. PrintfPar: .word PrintfFormat
  15. PrintfValue: .space 8
  16. .text
  17. .global main
  18. main:
  19. ;*** Read value from stdin into R1
  20. addi r1,r0,Prompt
  21. jal InputUnsigned
  22. ;*** init values
  23. movi2fp  f10,r1 ;R1 -> D0 D0..Count register
  24. cvti2d f0,f10
  25. addi r2,r0,1  ;1 -> D2 D2..result
  26. movi2fp f11,r2
  27. cvti2d f2,f11
  28. movd f4,f2 ;1-> D4  D4..Constant 1
  29. ;*** Break loop if D0 = 1
  30. Loop: led f0,f4 ;D0<=1 ?
  31. bfpt Finish
  32. ;*** Multiplication and next loop
  33. multd f2,f2,f0
  34. subd f0,f0,f4
  35. j Loop
  36. Finish:  ;*** write result to stdout
  37. sd PrintfValue,f2
  38. addi r14,r0,PrintfPar
  39. trap 5
  40. ;*** end
  41. trap 0