ack/mach/6500/libem/xor.s
1984-12-17 11:03:13 +00:00

31 lines
652 B
ArmAsm

.define Xor
! This subroutine performs the exclusive or on two groups of bytes.
! The groups consists of atmost 254 bytes.
! The result is on top of the stack.
Xor:
lda SP+1
sta ADDR+1 ! address of first group (lowbyte)
lda SP+2
sta ADDR ! address of first group (highbyte)
clc
tya
adc SP+2
sta SP+2 ! new stackpointer (lowbyte)
sta ADDR+2 ! address of second group (lowbyte)
lda #0
adc SP+1
sta SP+1 ! new stackpointer (highbyte)
sta ADDR+3 ! address of second group (highbyte)
1: dey
lda (ADDR),y ! get byte first group
eor (ADDR+2),y ! exclusive or with byte second group
sta (ADDR+2),y ! restore result
tya
bne 1b
rts