40 lines
		
	
	
	
		
			582 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			40 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
 |