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

44 lines
540 B
ArmAsm

.define .xor
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
! Any size exclusive-or.
! Expects: size in de-registers
! operands on stack
! Yields: result on stack
.xor: pop h
shld .retadr
mov h,b
mov l,c
shld .bcreg
lxi h,0
dad sp
mov c,l
mov b,h !now bc points to top of first operand
dad d !and hl points to top of second operand
push h !this will be the new stackpointer
1: ldax b
xra m
mov m,a
inx h
inx b
dcx d
mov a,e
ora d
jnz 1b
pop h
sphl
lhld .bcreg
mov b,h
mov c,l
lhld .retadr
pchl