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

模拟服务器

开发平台:

C/C++

  1. ;*********** WINDLX Ex.1: Read a positive integer number *************
  2. ;*********** (c) 1991 G黱ther Raidl  *************
  3. ;*********** Modified 1992 Maziar Khosravipour  *************
  4. ;-----------------------------------------------------------------------------
  5. ;Subprogram call by symbol "InputUnsigned"
  6. ;expect the address of a zero-terminated prompt string in R1
  7. ;returns the read value in R1
  8. ;changes the contents of registers R1,R13,R14
  9. ;-----------------------------------------------------------------------------
  10. .data
  11. ;*** Data for Read-Trap
  12. ReadBuffer: .space 80
  13. ReadPar: .word 0,ReadBuffer,80
  14. ;*** Data for Printf-Trap
  15. PrintfPar: .space 4
  16. SaveR2: .space 4
  17. SaveR3: .space 4
  18. SaveR4: .space 4
  19. SaveR5: .space 4
  20. .text
  21. .global InputUnsigned
  22. InputUnsigned:
  23. ;*** save register contents
  24. sw SaveR2,r2
  25. sw SaveR3,r3
  26. sw SaveR4,r4
  27. sw SaveR5,r5
  28. ;*** Prompt
  29. sw PrintfPar,r1
  30. addi r14,r0,PrintfPar
  31. trap 5
  32. ;*** call Trap-3 to read line
  33. addi r14,r0,ReadPar
  34. trap 3
  35. ;*** determine value
  36. addi r2,r0,ReadBuffer
  37. addi r1,r0,0
  38. addi r4,r0,10 ;Decimal system
  39. Loop: ;*** reads digits to end of line
  40. lbu r3,0(r2)
  41. seqi r5,r3,10 ;LF -> Exit
  42. bnez r5,Finish
  43. subi r3,r3,48 ;