32 lines
		
	
	
	
		
			411 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			411 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define .dvu
 | |
| 
 | |
| .sect .text
 | |
| 
 | |
| .dvu:
 | |
|  LDMFD R12<,{R0,R1}
 | |
|  STMFD R12<,{R4}
 | |
|  CMP R0,#0
 | |
|  BEQ divbyzero
 | |
|  MOV R2,#0
 | |
|  MOV R3,#0
 | |
|  MOV R4,#32
 | |
| DVU11:
 | |
|  SUB.S R4,R4,#1
 | |
|  LDMFD.EQ R12<,{R4}
 | |
|  MOV.EQ R15,R14
 | |
|  MOV.S R1,R1,ASL #1
 | |
|  BPL DVU11
 | |
| DVU22:
 | |
|  MOV.S R1,R1,ASL #1
 | |
|  ADC R2,R2,R2
 | |
|  CMP R2,R0
 | |
|  SUB.CS R2,R2,R0
 | |
|  ADC R3,R3,R3
 | |
|  SUB.S R4,R4,#1
 | |
|  BNE DVU22
 | |
|  LDMFD R12<,{R4}
 | |
|  MOV R15,R14
 | |
| divbyzero:
 | |
|  MOV R0,#6
 | |
|  STMFD R12<,{R0}
 | |
|  BAL _EmTrp
 |