print.s 373 B

12345678910111213141516171819202122232425262728293031
  1. .define .print
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. .sect .text
  8. .print:
  9. save[r0,r1,r2]
  10. movd 16(sp), r0
  11. movd 1000000000, r2
  12. cmpqd 0, r0
  13. ble 4f
  14. movb "-", tos
  15. jsr @.putchar
  16. negd r0, r0
  17. 4:
  18. ! deid r2, r0
  19. movd r0, r1
  20. divd r2, r1
  21. modd r2, r0
  22. addb "0", r1
  23. movb r1, tos
  24. jsr @.putchar
  25. divd 10, r2
  26. cmpqd 0, r2
  27. bne 4b
  28. restore[r0,r1,r2]
  29. ret 4