53 lines
576 B
ArmAsm
53 lines
576 B
ArmAsm
.define .ror4
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
|
|
! Rotate 4 bytes right
|
|
! Expects in de-reg: number of rotates
|
|
! Expects on stack: operand
|
|
! Yields on stack: result
|
|
|
|
.ror4: pop h
|
|
shld .retadr
|
|
mov h,b
|
|
mov l,c
|
|
shld .bcreg
|
|
|
|
.ror4: pop h ! low-order bytes of operand
|
|
pop b ! high order bytes of operand
|
|
|
|
mov a,e
|
|
ani 31
|
|
jz 2f
|
|
mov e,a
|
|
|
|
mov a,l
|
|
rar
|
|
1: mov a,b
|
|
rar
|
|
mov b,a
|
|
mov a,c
|
|
rar
|
|
mov c,a
|
|
mov a,h
|
|
rar
|
|
mov h,a
|
|
mov a,l
|
|
rar
|
|
mov l,a
|
|
|
|
dcr e
|
|
jnz 1b ! keep looping
|
|
|
|
2: push b
|
|
push h
|
|
|
|
lhld .bcreg
|
|
mov b,h
|
|
mov c,l
|
|
lhld .retadr
|
|
pchl
|