41 lines
582 B
ArmAsm
41 lines
582 B
ArmAsm
.define .cms
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
|
|
! Any size compare
|
|
! Expects: size in de-registers
|
|
! operands on stack
|
|
! Yields in de-registers: 0 if operands are equal
|
|
! 1 if operands are not equal
|
|
|
|
.cms:
|
|
pop h
|
|
shld .retadr
|
|
|
|
mov l,e
|
|
mov h,d
|
|
mov a,l
|
|
rar
|
|
cc eoddz !trap is size is odd
|
|
dad sp !now hl points to second operand
|
|
!and sp points to the first.
|
|
1: dcx sp
|
|
pop psw !get next byte in accumulator
|
|
cmp m
|
|
inx h
|
|
dcx d
|
|
jnz 2f !jump if bytes are not equal
|
|
mov a,d
|
|
ora e
|
|
jnz 1b
|
|
jmp 3f
|
|
2: dad d
|
|
lxi d,1
|
|
3: sphl
|
|
|
|
lhld .retadr
|
|
pchl
|