ack/mach/i80/libem/sli2.s
1987-01-28 18:57:04 +00:00

34 lines
454 B
ArmAsm

.define .sli2
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
! Shift 16 bits integer left
! Expects on stack: number of shifts
! number to be shifted
! Yields in de-reg: result
.sli2: pop h
shld .retadr
pop d !de = number of shifts
pop h !hl= number to be shifted
mov a,d !if de>15 return zero
ora a
jnz 2f
mov a,e
cpi 16
jnc 2f
1: dcr e
jm 3f
dad h
jmp 1b
2: lxi h,0
3: xchg !result in de-registers
lhld .retadr
pchl