sar.s 417 B

12345678910111213141516171819202122232425
  1. .define sar
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. !R1 contains description address
  8. !R3 contains element number
  9. !base address is on stack
  10. sar:
  11. popl saveret, *RR14
  12. sub R3, 0(R1)
  13. ld R0, 4(R1) !nr of bytes per element
  14. mult RR2, R0
  15. add R3, *RR14
  16. inc R15, $2
  17. sra R0 !nr of words per element
  18. jr EQ, 1f
  19. ldir *RR2, *RR14, R0
  20. jr 2f
  21. 1: pop R1, *RR14
  22. ldb *RR2, RL1
  23. 2: ldl RR2, saveret
  24. jp *RR2