62 lines
		
	
	
	
		
			597 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			597 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define prdec
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| 
 | |
| ! print hl-reg as a decimal number.
 | |
| 
 | |
| prdec:	push h
 | |
| 	push d
 | |
| 	push b
 | |
| 	push psw
 | |
| 	lxi d,table
 | |
| 	mvi b,4
 | |
| 1:	call convert
 | |
| 	ori 0x30
 | |
| 	call putchar
 | |
| 	dcr b
 | |
| 	jnz 1b
 | |
| 	mov a,l
 | |
| 	ori 0x30
 | |
| 	call putchar
 | |
| 	pop psw
 | |
| 	pop b
 | |
| 	pop d
 | |
| 	pop h
 | |
| 	ret
 | |
| 
 | |
| convert:
 | |
| 	push b
 | |
| 	mov b,h
 | |
| 	mov c,l
 | |
| 	xchg
 | |
| 	mov e,m
 | |
| 	inx h
 | |
| 	mov d,m
 | |
| 	inx h
 | |
| 	push h		! save pointer to new value
 | |
| 	mov h,b
 | |
| 	mov l,c
 | |
| 	mvi b,255
 | |
| 1:	inr b
 | |
| 	mov a,l
 | |
| 	sub e
 | |
| 	mov l,a
 | |
| 	mov a,h
 | |
| 	sbb d
 | |
| 	mov h,a
 | |
| 	jnc 1b
 | |
| 	dad d
 | |
| 	mov a,b
 | |
| 	pop d
 | |
| 	pop b
 | |
| 	ret
 | |
| 
 | |
| table:
 | |
| 	.data2	10000
 | |
| 	.data2	1000
 | |
| 	.data2  100
 | |
| 	.data2	10
 | |
| 
 |