67 lines
		
	
	
	
		
			710 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			710 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| loop = 100
 | |
| dvi4:
 | |
| 	xor a
 | |
| 	ld (.flag1),a
 | |
| 	ld (.flag2),a
 | |
| 	ld ix,0
 | |
| 	add ix,sp
 | |
| 	ld b,(ix+7)		! dividend
 | |
| 	bit 7,b
 | |
| 	jr z,1f
 | |
| 	ld c,(ix+6)
 | |
| 	ld d,(ix+5)
 | |
| 	ld e,(ix+4)
 | |
| 	call .negbd
 | |
| 	ld (ix+7),d
 | |
| 	ld (ix+6),e
 | |
| 	ld (ix+5),h
 | |
| 	ld (ix+4),l
 | |
| 	ld a,1
 | |
| 	ld (.flag1),a
 | |
| 1:
 | |
| 	ld b,(ix+3)
 | |
| 	bit 7,b
 | |
| 	jr z,2f
 | |
| 	call .negst
 | |
| 	ld a,1
 | |
| 	ld (.flag2),a
 | |
| 2:
 | |
| 	call .dvu4
 | |
| 	ld a,(.flag1)
 | |
| 	jr z,3f
 | |
| 	call .negbd
 | |
| 3:
 | |
| 	ld a,(.flag2)
 | |
| 	ld b,a
 | |
| 	ld a,(.flag1)
 | |
| 	xor b
 | |
| 	jr z,4f
 | |
| 	call .negst
 | |
| 4:
 | |
| 	jr loop
 | |
| .negbd:
 | |
| 	xor a
 | |
| 	ld h,a
 | |
| 	ld l,a
 | |
| 	sbc hl,de
 | |
| 	ex de,hl
 | |
| 	ld h,a
 | |
| 	ld l,a
 | |
| 	sbc hl,bc
 | |
| 	ret
 | |
| .negst:
 | |
| 	pop iy
 | |
| 	pop de
 | |
| 	pop bc
 | |
| 	call .negbd
 | |
| 	push hl
 | |
| 	push de
 | |
| 	jp (iy)
 | |
| .sect .data
 | |
| 	.flag1: .data1 0
 | |
| 	.flag2: .data1 0
 |