Home » Archimedes archive » Acorn User » AU 1995-11.adf » !Regulars » Regulars/StarInfo/Radford/number_e/ASS_ECAL
Regulars/StarInfo/Radford/number_e/ASS_ECAL
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-11.adf » !Regulars |
Filename: | Regulars/StarInfo/Radford/number_e/ASS_ECAL |
Read OK: | ✔ |
File size: | 3186 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10ON ERROR REPORT:PRINT;ERL:END 20DIM code% 400000 30carry=8 40aba=13 50it%=100 60accuracy%=1<<(aba) 70accuracy2%=1<<(aba-1) 80acc2%=100 90FOR pass%=0 TO 2 STEP 2 100P%=code% 110[ 120OPT pass% 130 140.SVIT 150EQUD 0 160 170.Factoriallify 180STMFD R13!,{R14} 190: 200BL get_addresses 210BL fill_e 220MOV R3,#0 \factorial 230.main_for_loopifys1 240 250 STR R0,SVIT 260 SWI "OS_ReadMonotonicTime" 270 STMFD R13!,{R0} 280 LDR R0,SVIT 290 300 MOV R14,#0 310 STRB R14,[R0] 320 STRB R14,[R1] 330 CMP R3,#1 340 MOVLE R14,#1 350 STRLEB R14,[R0,#1] 360 STRLEB R14,[R1,#1] 370 MOVLE R14,#10 380 STRLEB R14,[R0,#2] 390 STRLEB R14,[R1,#2] 400 CMP R3,#1 410 ADRGT R4,adollar 420 MOVGT R0,R4 430 BLGT numbertosamstringfactorial 440 BL begin_multiplication 450 \RESULT IS RETURNED IN answer 460 \copy to adollar 470 MOV R5,#0 480 ADR R7,adollar 490 MOV R14,#0 500 STRB R14,[R7],#1 510 BL address_ans 520 .main_for_loopifys2 530 LDRB R6,[R8,R5] 540 STRB R6,[R7,R5] 550 CMP R6,#10 560 ADD R5,R5,#1 570 BNE main_for_loopifys2 580 590 BL get_addresses 600 MOV R14,#0 610 STRB R14,[R0] 620 MOV R14,#1 630 STRB R14,[R0,#1] 640 MOV R14,#0 650 MOV R5,#2 660 .main_for_loopifysc1 670 STRB R14,[R0,R5] 680 ADD R5,R5,#1 690 CMP R5,#acc2% 700 BNE main_for_loopifysc1 710 MOV R14,#10 720 STRB R14,[R0,R5] 730 740 MOV R14,#0 750 STRB R14,[R1] 760 MOV R5,#1 770 MOV R11,#0 780 BL address_ans 790 .main_for_loopifysc2 800 LDRB R14,[R8,R11] 810 STRB R14,[R1,R5] 820 ADD R11,R11,#1 830 ADD R5,R5,#1 840 CMP R14,#10 850 BNE main_for_loopifysc2 860 870 BL begin_division 880 890 MOV R14,#0 900 STRB R14,[R0] 910 MOV R5,#1 920 MOV R11,#0 930 BL address_ans 940 .main_for_loopifysc3 950 LDRB R14,[R8,R11] 960 STRB R14,[R0,R5] 970 ADD R11,R11,#1 980 ADD R5,R5,#1 990 CMP R14,#10 1000 BNE main_for_loopifysc3 1010 1020 MOV R14,#0 1030 STRB R14,[R1] 1040 MOV R5,#1 1050 MOV R11,#0 1060 BL address_ans 1070 .main_for_loopifysc4 1080 LDRB R14,[R12,R11] 1090 STRB R14,[R1,R5] 1100 ADD R11,R11,#1 1110 ADD R5,R5,#1 1120 CMP R14,#10 1130 BNE main_for_loopifysc4 1140 1150 BL begin_addition 1160 1170 BL get_addresses 1180 BL address_ans 1190 MOV R14,#0 1200 .main_for_loopifysc5 1210 LDRB R5,[R8,R14] 1220 STRB R5,[R12,R14] 1230 ADD R14,R14,#1 1240 CMP R5,#10 1250 BNE main_for_loopifysc5 1260 1270 1280 1290 STMFD R13!,{R0-R5} 1300 SWI 256+12 1310 SWI "OS_RemoveCursors" 1320 SWI 256+5 1330 MOV R0,#4 1340 MOV R1,#200 1350 MOV R2,#800 1360 SWI "OS_Plot" 1370 SWI "OS_WriteS" 1380 EQUS "Iterations Calculated " 1390 EQUB 0 1400 ALIGN 1410 MOV R0,R3 1420 ADR R1,buffer2 1430 MOV R2,#32 1440 SWI "OS_ConvertCardinal4" 1450 SWI "OS_Write0" 1460 1470 MOV R0,#4 1480 MOV R1,#200 1490 MOV R2,#600 1500 SWI "OS_Plot" 1510 SWI "OS_WriteS" 1520 EQUS "Time For Last Calculation " 1530 EQUB 0 1540 ALIGN 1550 1560 LDMFD R13!,{R0-R5} 1570 1580 LDMFD R13!,{R14} 1590 STMFD R13!,{R0-R5} 1600 SWI "OS_ReadMonotonicTime" 1610 SUB R14,R0,R14 1620 MOV R0,R14 1630 ADR R1,buffer2 1640 MOV R2,#32 1650 SWI "OS_ConvertCardinal4" 1660 SWI "OS_Write0" 1670 1680 MOV R0,#4 1690 MOV R1,#200 1700 MOV R2,#400 1710 SWI "OS_Plot" 1720 SWI "OS_WriteS" 1730 EQUS "Remaining Iterations " 1740 EQUB 0 1750 ALIGN 1760 RSB R0,R3,#it% 1770 ADR R1,buffer2 1780 MOV R2,#32 1790 SWI "OS_ConvertCardinal4" 1800 SWI "OS_Write0" 1810 1820 SWI 256+4 1830 LDMFD R13!,{R0-R5} 1840 1850 1860 1870 \RESULT IS RETURNED IN ANSWER 1880 1890 SWI "OS_ReadEscapeState" 1900 LDMCSFD R13!,{PC} 1910 1920 ADD R3,R3,#1 1930 CMP R3,#it% 1940BLE main_for_loopifys1 1950 1960LDMFD R13!,{PC} 1970 1980.buffer2 1990FNBytes(32) 2000 2010.adollar 2020FNBytes(accuracy%) 2030: 2040: 2050.numbertosamstringfactorial 2060STMFD R13!,{R14} 2070STMFD R13!,{R0-R9} 2080: 2090MOV R9,R1 2100 2110MOV R0,R3 2120ADR R1,buffer 2130MOV R2,#32 2140SWI "OS_ConvertCardinal4" 2150MOV R6,#1 2160.ntsfor_loopify1 2170 LDRB R5,[R0],#1 2180 SUB R5,R5,#ASC("0") 2190 STRB R5,[R9,R6] 2200 ADD R6,R6,#1 2210 CMP R0,R1 2220BLE ntsfor_loopify1 2230MOV R14,#10 2240SUB R6,R6,#1 2250STRB R14,[R9,R6] 2260: 2270LDMFD R13!,{R0-R9} 2280LDMFD R13!,{PC} 2290.buffer 2300FNBytes(32) 2310: 2320: 2330\PURPOSE - RE-WRITTEN LOW-LEVEL ADDITION ROUTINE USING INFA ALGORITHM 2340.begin_addition 2350STMFD R13!,{R14} 2360STMFD R13!,{R0-R12} 2370 2380\A VALUE OF TEN CORRESPONDS TO TERMINATING BYTE 2390 2400\find end of operand1 AND operand2 2410 2420MOV R3,R0 2430MOV R5,#0 2440.loop_get_end1 2450 LDRB R4,[R3],#1 2460 ADD R5,R5,#1 2470 CMP R4,#10 2480BNE loop_get_end1 2490 2500MOV R3,R1 2510MOV R6,#0 2520.loop_get_end2 2530 LDRB R4,[R3],#1 2540 ADD R6,R6,#1 2550 CMP R4,#10 2560BNE loop_get_end2 2570 2580\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6 2590 2600SUB R3,R5,R6 \R3 IS DIFF 2610CMP R3,#0 2620RSBLT R3,R3,#0 2630CMP R5,R6 2640MOVLT R4,R1 2650MOVLT R1,R0 2660MOVLT R0,R4 2670 2680MOVGT R4,R5 \R4 IS MAXLENGTH 2690MOVLE R4,R6 2700 2710MOV carry,#0 2720 2730\structure for...next loop 2740 2750SUB R4,R4,#2 2760MOV R7,R4 2770 .for_loopify1c 2780 LDRB R9,[R0,R7] \Q1% 2790 SUBS R14,R7,R3 2800 LDRGTB R10,[R1,R14] 2810 MOVLE R10,#0 \Q2% 2820 ADD R9,R9,R10 2830 ADD R9,R9,carry 2840 2850 2860 \ASSEMBLE MOD AND DIV FUNCTION 2870 STMFD R13!,{R0-R6} 2880 MOV R0,R9 2890 MOV R1,#10 2900 ANDS R6,R0,#1<<31 2910 RSBMI R0,R0,#0 2920 EOR R5,R6,R1 2930 CMP R1,#0 2940 RSBMI R1,R1,#0 2950 2960 MOV R2,#0 2970 MOV R3,#0 2980 MOV R4,#1<<31 2990 3000 .division_loop11 3010 MOVS R0,R0,ASL#1 3020 ADC R2,R2,R2 3030 CMP R2,R1 3040 SUBGE R2,R2,R1 3050 ORRGE R3,R3,R4 3060 MOVS R4,R4,LSR#1 3070 BNE division_loop11 3080 3090 CMP R5,#0 3100 RSBMI R3,R3,#0 3110 CMP R6,#0 3120 RSBMI R2,R2,#0 3130 3140 STR R3,divres 3150 STR R2,modres 3160 3170 LDMFD R13!,{R0-R6} 3180 3190 LDR R14,modres 3200 STRB R14,[R2,R7] 3210 LDR carry,divres 3220 3230 SUBS R7,R7,#1 3240 3250BNE for_loopify1c 3260CMP carry,#0 3270STRB carry,[R2] 3280MOV R14,#10 3290CMP R4,#3 3300ADDGT R4,R4,#1 3310ADD R4,R4,#1 3320STRB R14,[R2,R4] 3330 3340BL Remove_Leading0s 3350 3360LDMFD R13!,{R0-R12} 3370LDMFD R13!,{PC} 3380 3390.divres 3400EQUD 0 3410.modres 3420EQUD 0 3430 3440\PURPOSE - RE-WRITTEN LOW-LEVEL MULTIPLACTION ROUTINE USING INFA ALGORITHM 3450.begin_multiplication 3460STMFD R13!,{R14} 3470STMFD R13!,{R0-R12} 3480 3490 3500\find end of operand1 AND operand2 3510 3520MOV R3,R0 3530MOV R5,#0 3540.loop_get_end1B 3550 LDRB R4,[R3],#1 3560 ADD R5,R5,#1 3570 CMP R4,#10 3580BNE loop_get_end1B 3590 3600MOV R3,R1 3610MOV R6,#0 3620.loop_get_end2B 3630 LDRB R4,[R3],#1 3640 ADD R6,R6,#1 3650 CMP R4,#10 3660BNE loop_get_end2B 3670 3680\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6 3690 3700ADD R7,R5,R6 \CONTAINS TOTAL LENGTHS 3710 3720\REGISTERS AVAILABLE = R3,R4,R8-R12,R14 3730 3740\structure For..next loop- 3750 3760MOV R3,#0 3770MOV R4,R2 3780SUB R14,R7,#1 \LOOP COUNTER 3790.for_loopify1 3800 STRB R3,[R4],#1 3810 SUBS R14,R14,#1 3820BNE for_loopify1 3830MOV R3,#10 3840SUB R4,R4,#1 3850STRB R3,[R4] 3860ADD R4,R4,#1 3870 3880SUB R11,R6,#2 \LOOP COUNTER (J%) 3890.for_loopify2 3900 MOV carry,#0 3910 LDRB R3,[R1,R11] \G%=B%?J% 3920 ADD R4,R2,R11 3930 ADD R4,R4,#1 \V%=D%+J%+1 3940 SUB R10,R5,#2 \LOOP COUNTER (L%) 3950 .for_loopify3 3960 LDRB R9,[R0,R10] \H%=A%?L% 3970 MUL R14,R3,R9 3980 ADD R14,R14,carry 3990 STMFD R13!,{R8} 4000 LDRB R8,[R4,R10] 4010 ADD R14,R14,R8 4020 4030 \ASSEMBLE MOD AND DIV FUNCTION 4040 STMFD R13!,{R0-R6} 4050 MOV R0,R14 4060 MOV R1,#10 4070 ANDS R6,R0,#1<<31 4080 RSBMI R0,R0,#0 4090 EOR R5,R6,R1 4100 CMP R1,#0 4110 RSBMI R1,R1,#0 4120 4130 MOV R2,#0 4140 MOV R3,#0 4150 MOV R4,#1<<31 4160 4170 .division_loop 4180 MOVS R0,R0,ASL#1 4190 ADC R2,R2,R2 4200 CMP R2,R1 4210 SUBGE R2,R2,R1 4220 ORRGE R3,R3,R4 4230 MOVS R4,R4,LSR#1 4240 BNE division_loop 4250 4260 CMP R5,#0 4270 RSBMI R3,R3,#0 4280 CMP R6,#0 4290 RSBMI R2,R2,#0 4300 4310 STR R3,divres2 4320 STR R2,modres2 4330 4340 LDMFD R13!,{R0-R6} 4350 4360 LDR R8,modres2 4370 STRB R8,[R4,R10] \FORMERLY R8 4380 LDMFD R13!,{R8} 4390 LDR R8,divres2 4400 SUBS R10,R10,#1 4410 BNE for_loopify3 4420 STRB R8,[R4,R10] 4430 SUBS R11,R11,#1 4440BNE for_loopify2 4450 4460BL Remove_Leading0s 4470 4480LDMFD R13!,{R0-R12} 4490LDMFD R13!,{PC} 4500 4510.divres2 4520EQUD 0 4530.modres2 4540EQUD 0 4550 4560 4570\PURPOSE - RE-WRITTEN LOW-LEVEL DIVISION ROUTINE USING INFA ALGORITHM 4580.begin_division 4590STMFD R13!,{R14} 4600STMFD R13!,{R0-R12} 4610 4620BL get_addresses 4630 4640\A VALUE OF TEN CORRESPONDS TO TERMINATING BYTE 4650 4660\find end of operand1 AND operand2 4670 4680MOV R3,R0 4690MOV R5,#0 4700.loop_get_end1bC 4710 LDRB R4,[R3],#1 4720 ADD R5,R5,#1 4730 CMP R4,#10 4740BNE loop_get_end1bC 4750ADD R5,R5,#1 4760 4770MOV R3,R1 4780MOV R6,#0 4790.loop_get_end2bC 4800 LDRB R4,[R3],#1 4810 ADD R6,R6,#1 4820 CMP R4,#10 4830BNE loop_get_end2bC 4840SUB R6,R6,#1 4850 4860\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6 4870 4880\REGISTERS AVAILABLE R3,R4,R8-R12,R14 - carry=8 4890 4900MOV R7,#0 \J% 4910.for_loopify1b 4920 ADD R3,R0,R7 \W% 4930 MVN R4,#0 \V% 4940 4950 .repeat1 4960 ADD R4,R4,#1 4970 MOV carry,#1 4980 SUB R9,R6,#1 \L% 4990 .for_loopify2b 5000 MOV R10,#0 \Q% 5010 CMP R9,#0 5020 LDRGEB R10,[R1,R9] 5030 5040 LDRB R14,[R3,R9] 5050 SUB R10,R14,R10 5060 ADD R10,R10,carry 5070 ADD R10,R10,#9 5080 5090 \ASSEMBLE MOD AND DIV FUNCTION 5100 STMFD R13!,{R0-R6} 5110 MOV R0,R10 5120 MOV R1,#10 5130 ANDS R6,R0,#1<<31 5140 RSBMI R0,R0,#0 5150 EOR R5,R6,R1 5160 CMP R1,#0 5170 RSBMI R1,R1,#0 5180 5190 MOV R2,#0 5200 MOV R3,#0 5210 MOV R4,#1<<31 5220 5230 .division_loop2 5240 MOVS R0,R0,ASL#1 5250 ADC R2,R2,R2 5260 CMP R2,R1 5270 SUBGE R2,R2,R1 5280 ORRGE R3,R3,R4 5290 MOVS R4,R4,LSR#1 5300 BNE division_loop2 5310 5320 CMP R5,#0 5330 RSBMI R3,R3,#0 5340 CMP R6,#0 5350 RSBMI R2,R2,#0 5360 5370 STR R3,divres3 5380 STR R2,modres3 5390 5400 LDMFD R13!,{R0-R6} 5410 5420 LDR R14,modres3 5430 STRB R14,[R3,R9] 5440 LDR R8,divres3 5450 SUB R9,R9,#1 5460 CMN R9,R7 5470 5480 5490 BNE for_loopify2b 5500 CMP carry,#0 5510 BNE repeat1 5520 SUB R9,R6,#1 \L% 5530 .for_loopify3b 5540 MOV R10,#0 \Q% 5550 CMP R9,#0 5560 LDRGEB R10,[R1,R9] 5570 LDRB R14,[R3,R9] 5580 ADD R10,R10,R14 5590 ADD R10,R10,carry 5600 5610 \ASSEMBLE MOD AND DIV FUNCTION 5620 STMFD R13!,{R0-R6} 5630 MOV R0,R10 5640 MOV R1,#10 5650 ANDS R6,R0,#1<<31 5660 RSBMI R0,R0,#0 5670 EOR R5,R6,R1 5680 CMP R1,#0 5690 RSBMI R1,R1,#0 5700 5710 MOV R2,#0 5720 MOV R3,#0 5730 MOV R4,#1<<31 5740 5750 .division_loop3 5760 MOVS R0,R0,ASL#1 5770 ADC R2,R2,R2 5780 CMP R2,R1 5790 SUBGE R2,R2,R1 5800 ORRGE R3,R3,R4 5810 MOVS R4,R4,LSR#1 5820 BNE division_loop3 5830 5840 CMP R5,#0 5850 RSBMI R3,R3,#0 5860 CMP R6,#0 5870 RSBMI R2,R2,#0 5880 5890 STR R3,divres3 5900 STR R2,modres3 5910 5920 LDMFD R13!,{R0-R6} 5930 5940 LDR R14,modres3 5950 STRB R14,[R3,R9] 5960 LDR R8,divres3 5970 SUB R9,R9,#1 5980 CMN R9,R7 5990 BNE for_loopify3b 6000 STRB R4,[R2,R7] 6010 ADD R7,R7,#1 6020 SUB R14,R5,R6 6030 CMP R7,R14 6040BLT for_loopify1b 6050MOV R14,#10 6060SUB R7,R7,#1 6070STRB R14,[R2,R7] 6080 6090BL Remove_Leading0s 6100 6110 6120LDMFD R13!,{R0-R12} 6130LDMFD R13!,{PC} 6140 6150 6160.divres3 6170EQUD 0 6180.modres3 6190EQUD 0 6200 6210 6220.Remove_Leading0s 6230STMFD R13!,{R14} 6240: 6250MOV R4,#0 6260.loop_remove0s 6270LDRB R5,[R2,R4] 6280CMP R5,#0 6290ADDEQ R4,R4,#1 6300BEQ loop_remove0s 6310 6320ADR R6,answer 6330MOV R7,#0 6340.loop_swap_string 6350LDRB R5,[R2,R4] 6360STRB R5,[R6,R7] 6370ADD R4,R4,#1 6380ADD R7,R7,#1 6390CMP R5,#10 6400BNE loop_swap_string 6410 6420 6430: 6440LDMFD R13!,{PC} 6450 6460.address_ans 6470STMFD R13!,{R14} 6480ADR R8,answer 6490LDMFD R13!,{PC} 6500.answer 6510FNBytes(accuracy%) 6520 6530 6540.get_addresses 6550STMFD R13!,{R14} 6560ADR R0,operand1 6570B next1 6580.operand1 6590FNBytes(accuracy%) 6600.next1 6610ADR R1,operand2 6620B next2 6630.operand2 6640FNBytes(accuracy%) 6650.next2 6660ADR R2,result 6670B next3 6680.result 6690FNBytes(accuracy%) 6700.next3 6710ADR R12,e_so_far 6720LDMFD R13!,{PC} 6730.e_so_far 6740FNBytes(accuracy%) 6750: 6760: 6770.fill_e 6780STMFD R13!,{R14} 6790: 6800MOV R5,#0 6810MOV R6,#0 6820.loop_fill_e 6830 STRB R5,[R12,R6] 6840 ADD R6,R6,#1 6850 CMP R6,#accuracy2% 6860BNE loop_fill_e 6870MOV R5,#10 6880SUB R6,R6,#1 6890STRB R5,[R12,R6] 6900: 6910LDMFD R13!,{PC} 6920 6930] 6940NEXT 6950: 6960MODE 13 6970GCOL 0,63 6980 6990PRINT "Calculating....." 7000CALL Factoriallify 7010 7020REM *SPOOL E_FILE3 7030 PRINT 7040 PRINT 7050 PRINT 7060 A=0 7070 REPEAT 7080 A+=1 7090 UNTIL (e_so_far?A)=7 7100 PRINT "2."; 7110 REPEAT 7120 PRINT STR$(e_so_far?A); 7130 A+=1 7140 UNTIL (e_so_far?A)=10 7150REM *SPOOL 7160 7170END 7180: 7190DEFFNBytes(inc%) 7200P%+=inc% 7210=0 7220:
� � �:�;�:� � code% 400000 carry=8 ( aba=13 2it%=100 <accuracy%=1<<(aba) Faccuracy2%=1<<(aba-1) P acc2%=100 Z� pass%=0 � 2 � 2 dP%=code% n[ x OPT pass% � � .SVIT � EQUD 0 � �.Factoriallify �STMFD R13!,{R14} �: �BL get_addresses � BL fill_e �$MOV R3,#0 \factorial �.main_for_loopifys1 � � STR R0,SVIT SWI "OS_ReadMonotonicTime" STMFD R13!,{R0} LDR R0,SVIT " , MOV R14,#0 6 STRB R14,[R0] @ STRB R14,[R1] J CMP R3,#1 T MOVLE R14,#1 ^ STRLEB R14,[R0,#1] h STRLEB R14,[R1,#1] r MOVLE R14,#10 | STRLEB R14,[R0,#2] � STRLEB R14,[R1,#2] � CMP R3,#1 � ADRGT R4,adollar � MOVGT R0,R4 �% BLGT numbertosamstringfactorial � BL begin_multiplication �# \RESULT IS RETURNED IN answer � \copy to adollar � MOV R5,#0 � ADR R7,adollar � MOV R14,#0 � STRB R14,[R7],#1 � BL address_ans .main_for_loopifys2 LDRB R6,[R8,R5] STRB R6,[R7,R5] & CMP R6,#10 0 ADD R5,R5,#1 : BNE main_for_loopifys2 D N BL get_addresses X MOV R14,#0 b STRB R14,[R0] l MOV R14,#1 v STRB R14,[R0,#1] � MOV R14,#0 � MOV R5,#2 � .main_for_loopifysc1 � STRB R14,[R0,R5] � ADD R5,R5,#1 � CMP R5,#acc2% � BNE main_for_loopifysc1 � MOV R14,#10 � STRB R14,[R0,R5] � � MOV R14,#0 � STRB R14,[R1] � MOV R5,#1 MOV R11,#0 BL address_ans .main_for_loopifysc2 LDRB R14,[R8,R11] * STRB R14,[R1,R5] 4 ADD R11,R11,#1 > ADD R5,R5,#1 H CMP R14,#10 R BNE main_for_loopifysc2 \ f BL begin_division p z MOV R14,#0 � STRB R14,[R0] � MOV R5,#1 � MOV R11,#0 � BL address_ans � .main_for_loopifysc3 � LDRB R14,[R8,R11] � STRB R14,[R0,R5] � ADD R11,R11,#1 � ADD R5,R5,#1 � CMP R14,#10 � BNE main_for_loopifysc3 � � MOV R14,#0 STRB R14,[R1] MOV R5,#1 MOV R11,#0 $ BL address_ans . .main_for_loopifysc4 8 LDRB R14,[R12,R11] B STRB R14,[R1,R5] L ADD R11,R11,#1 V ADD R5,R5,#1 ` CMP R14,#10 j BNE main_for_loopifysc4 t ~ BL begin_addition � � BL get_addresses � BL address_ans � MOV R14,#0 � .main_for_loopifysc5 � LDRB R5,[R8,R14] � STRB R5,[R12,R14] � ADD R14,R14,#1 � CMP R5,#10 � BNE main_for_loopifysc5 � � STMFD R13!,{R0-R5} SWI 256+12 SWI "OS_RemoveCursors" ( SWI 256+5 2 MOV R0,#4 < MOV R1,#200 F MOV R2,#800 P SWI "OS_Plot" Z SWI "OS_WriteS" d# EQUS "Iterations Calculated " n EQUB 0 x ALIGN � MOV R0,R3 � ADR R1,buffer2 � MOV R2,#32 � SWI "OS_ConvertCardinal4" � SWI "OS_Write0" � � MOV R0,#4 � MOV R1,#200 � MOV R2,#600 � SWI "OS_Plot" � SWI "OS_WriteS" �' EQUS "Time For Last Calculation " � EQUB 0 ALIGN LDMFD R13!,{R0-R5} " , LDMFD R13!,{R14} 6 STMFD R13!,{R0-R5} @ SWI "OS_ReadMonotonicTime" J SUB R14,R0,R14 T MOV R0,R14 ^ ADR R1,buffer2 h MOV R2,#32 r SWI "OS_ConvertCardinal4" | SWI "OS_Write0" � � MOV R0,#4 � MOV R1,#200 � MOV R2,#400 � SWI "OS_Plot" � SWI "OS_WriteS" �" EQUS "Remaining Iterations " � EQUB 0 � ALIGN � RSB R0,R3,#it% � ADR R1,buffer2 � MOV R2,#32 � SWI "OS_ConvertCardinal4" SWI "OS_Write0" SWI 256+4 & LDMFD R13!,{R0-R5} 0 : D N# \RESULT IS RETURNED IN ANSWER X b SWI "OS_ReadEscapeState" l LDMCSFD R13!,{PC} v � ADD R3,R3,#1 � CMP R3,#it% �BLE main_for_loopifys1 � �LDMFD R13!,{PC} � �.buffer2 ��Bytes(32) � �.adollar ��Bytes(accuracy%) �: �: .numbertosamstringfactorial STMFD R13!,{R14} STMFD R13!,{R0-R9} : * MOV R9,R1 4 > MOV R0,R3 HADR R1,buffer RMOV R2,#32 \SWI "OS_ConvertCardinal4" f MOV R6,#1 p.ntsfor_loopify1 z LDRB R5,[R0],#1 � SUB R5,R5,#�("0") � STRB R5,[R9,R6] � ADD R6,R6,#1 � CMP R0,R1 �BLE ntsfor_loopify1 �MOV R14,#10 �SUB R6,R6,#1 �STRB R14,[R9,R6] �: �LDMFD R13!,{R0-R9} �LDMFD R13!,{PC} �.buffer ��Bytes(32) : : I\PURPOSE - RE-WRITTEN LOW-LEVEL ADDITION ROUTINE USING INFA ALGORITHM $.begin_addition .STMFD R13!,{R14} 8STMFD R13!,{R0-R12} B L/\A �UE � TEN CORRESPONDS � TERMINATING BYTE V `$\find end of operand1 � operand2 j t MOV R3,R0 ~ MOV R5,#0 �.loop_get_end1 � LDRB R4,[R3],#1 � ADD R5,R5,#1 � CMP R4,#10 �BNE loop_get_end1 � � MOV R3,R1 � MOV R6,#0 �.loop_get_end2 � LDRB R4,[R3],#1 � ADD R6,R6,#1 � CMP R4,#10 BNE loop_get_end2 B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6 (!SUB R3,R5,R6 \R3 IS DIFF 2 CMP R3,#0 <RSBLT R3,R3,#0 F CMP R5,R6 PMOVLT R4,R1 ZMOVLT R1,R0 dMOVLT R0,R4 n x%MOVGT R4,R5 \R4 IS MAXLENGTH �MOVLE R4,R6 � �MOV carry,#0 � �\structure for...next loop � �SUB R4,R4,#2 � MOV R7,R4 � .for_loopify1c � LDRB R9,[R0,R7] \Q1% � SUBS R14,R7,R3 � LDRGTB R10,[R1,R14] � MOVLE R10,#0 \Q2% ADD R9,R9,R10 ADD R9,R9,carry " , \ASSEMBLE � � � FUNCTION 6 STMFD R13!,{R0-R6} @ MOV R0,R9 J MOV R1,#10 T �S R6,R0,#1<<31 ^ RSBMI R0,R0,#0 h � R5,R6,R1 r CMP R1,#0 | RSBMI R1,R1,#0 � � MOV R2,#0 � MOV R3,#0 � MOV R4,#1<<31 � � .division_loop11 � MOVS R0,R0,ASL#1 � ADC R2,R2,R2 � CMP R2,R1 � SUBGE R2,R2,R1 � �RGE R3,R3,R4 � MOVS R4,R4,LSR#1 � BNE division_loop11 CMP R5,#0 RSBMI R3,R3,#0 & CMP R6,#0 0 RSBMI R2,R2,#0 : D STR R3,divres N STR R2,modres X b LDMFD R13!,{R0-R6} l v LDR R14,modres � STRB R14,[R2,R7] � LDR carry,divres � � SUBS R7,R7,#1 � �BNE for_loopify1c �CMP carry,#0 �STRB carry,[R2] �MOV R14,#10 � CMP R4,#3 �ADDGT R4,R4,#1 �ADD R4,R4,#1 �STRB R14,[R2,R4] BL Remove_Leading0s LDMFD R13!,{R0-R12} *LDMFD R13!,{PC} 4 >.divres H EQUD 0 R.modres \ EQUD 0 f pN\PURPOSE - RE-WRITTEN LOW-LEVEL MULTIPLACTION ROUTINE USING INFA ALGORITHM z.begin_multiplication �STMFD R13!,{R14} �STMFD R13!,{R0-R12} � � �$\find end of operand1 � operand2 � � MOV R3,R0 � MOV R5,#0 �.loop_get_end1B � LDRB R4,[R3],#1 � ADD R5,R5,#1 � CMP R4,#10 �BNE loop_get_end1B MOV R3,R1 MOV R6,#0 $.loop_get_end2B . LDRB R4,[R3],#1 8 ADD R6,R6,#1 B CMP R4,#10 LBNE loop_get_end2B V `B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6 j t1ADD R7,R5,R6 \CONTAINS �TAL �GTHS ~ �+\REGISTERS AVAILABLE = R3,R4,R8-R12,R14 � �\structure For..next loop- � � MOV R3,#0 � MOV R4,R2 �SUB R14,R7,#1 \LOOP COUNTER �.for_loopify1 � STRB R3,[R4],#1 � SUBS R14,R14,#1 �BNE for_loopify1 �MOV R3,#10 SUB R4,R4,#1 STRB R3,[R4] ADD R4,R4,#1 (&SUB R11,R6,#2 \LOOP COUNTER (J%) 2.for_loopify2 < MOV carry,#0 F! LDRB R3,[R1,R11] \G%=B%?J% P ADD R4,R2,R11 Z ADD R4,R4,#1 \V%=D%+J%+1 d& SUB R10,R5,#2 \LOOP COUNTER (L%) n .for_loopify3 x" LDRB R9,[R0,R10] \H%=A%?L% � MUL R14,R3,R9 � ADD R14,R14,carry � STMFD R13!,{R8} � LDRB R8,[R4,R10] � ADD R14,R14,R8 � � \ASSEMBLE � � � FUNCTION � STMFD R13!,{R0-R6} � MOV R0,R14 � MOV R1,#10 � �S R6,R0,#1<<31 � RSBMI R0,R0,#0 � � R5,R6,R1 CMP R1,#0 RSBMI R1,R1,#0 " MOV R2,#0 , MOV R3,#0 6 MOV R4,#1<<31 @ J .division_loop T MOVS R0,R0,ASL#1 ^ ADC R2,R2,R2 h CMP R2,R1 r SUBGE R2,R2,R1 | �RGE R3,R3,R4 � MOVS R4,R4,LSR#1 � BNE division_loop � � CMP R5,#0 � RSBMI R3,R3,#0 � CMP R6,#0 � RSBMI R2,R2,#0 � � STR R3,divres2 � STR R2,modres2 � � LDMFD R13!,{R0-R6} � LDR R8,modres2 ' STRB R8,[R4,R10] \�MERLY R8 LDMFD R13!,{R8} & LDR R8,divres2 0 SUBS R10,R10,#1 : BNE for_loopify3 D STRB R8,[R4,R10] N SUBS R11,R11,#1 XBNE for_loopify2 b lBL Remove_Leading0s v �LDMFD R13!,{R0-R12} �LDMFD R13!,{PC} � �.divres2 � EQUD 0 �.modres2 � EQUD 0 � � �G\PURPOSE - RE-WRITTEN LOW-LEVEL �ISION ROUTINE USING INFA ALGORITHM �.begin_division �STMFD R13!,{R14} �STMFD R13!,{R0-R12} BL get_addresses /\A �UE � TEN CORRESPONDS � TERMINATING BYTE * 4$\find end of operand1 � operand2 > H MOV R3,R0 R MOV R5,#0 \.loop_get_end1bC f LDRB R4,[R3],#1 p ADD R5,R5,#1 z CMP R4,#10 �BNE loop_get_end1bC �ADD R5,R5,#1 � � MOV R3,R1 � MOV R6,#0 �.loop_get_end2bC � LDRB R4,[R3],#1 � ADD R6,R6,#1 � CMP R4,#10 �BNE loop_get_end2bC �SUB R6,R6,#1 � �B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6 3\REGISTERS AVAILABLE R3,R4,R8-R12,R14 - carry=8 $MOV R7,#0 \J% ..for_loopify1b 8 ADD R3,R0,R7 \W% B MVN R4,#0 \V% L V .repeat1 ` ADD R4,R4,#1 j MOV carry,#1 t SUB R9,R6,#1 \L% ~ .for_loopify2b � MOV R10,#0 \Q% � CMP R9,#0 � LDRGEB R10,[R1,R9] � � LDRB R14,[R3,R9] � SUB R10,R14,R10 � ADD R10,R10,carry � ADD R10,R10,#9 � �" \ASSEMBLE � � � FUNCTION � STMFD R13!,{R0-R6} � MOV R0,R10 MOV R1,#10 �S R6,R0,#1<<31 RSBMI R0,R0,#0 � R5,R6,R1 ( CMP R1,#0 2 RSBMI R1,R1,#0 < F MOV R2,#0 P MOV R3,#0 Z MOV R4,#1<<31 d n .division_loop2 x MOVS R0,R0,ASL#1 � ADC R2,R2,R2 � CMP R2,R1 � SUBGE R2,R2,R1 � �RGE R3,R3,R4 � MOVS R4,R4,LSR#1 � BNE division_loop2 � � CMP R5,#0 � RSBMI R3,R3,#0 � CMP R6,#0 � RSBMI R2,R2,#0 � � STR R3,divres3 STR R2,modres3 LDMFD R13!,{R0-R6} " , LDR R14,modres3 6 STRB R14,[R3,R9] @ LDR R8,divres3 J SUB R9,R9,#1 T CMN R9,R7 ^ h r BNE for_loopify2b | CMP carry,#0 � BNE repeat1 � SUB R9,R6,#1 \L% � .for_loopify3b � MOV R10,#0 \Q% � CMP R9,#0 � LDRGEB R10,[R1,R9] � LDRB R14,[R3,R9] � ADD R10,R10,R14 � ADD R10,R10,carry � � \ASSEMBLE � � � FUNCTION � STMFD R13!,{R0-R6} � MOV R0,R10 MOV R1,#10 �S R6,R0,#1<<31 RSBMI R0,R0,#0 & � R5,R6,R1 0 CMP R1,#0 : RSBMI R1,R1,#0 D N MOV R2,#0 X MOV R3,#0 b MOV R4,#1<<31 l v .division_loop3 � MOVS R0,R0,ASL#1 � ADC R2,R2,R2 � CMP R2,R1 � SUBGE R2,R2,R1 � �RGE R3,R3,R4 � MOVS R4,R4,LSR#1 � BNE division_loop3 � � CMP R5,#0 � RSBMI R3,R3,#0 � CMP R6,#0 � RSBMI R2,R2,#0 � STR R3,divres3 STR R2,modres3 LDMFD R13!,{R0-R6} * 4 LDR R14,modres3 > STRB R14,[R3,R9] H LDR R8,divres3 R SUB R9,R9,#1 \ CMN R9,R7 f BNE for_loopify3b p STRB R4,[R2,R7] z ADD R7,R7,#1 � SUB R14,R5,R6 � CMP R7,R14 �BLT for_loopify1b �MOV R14,#10 �SUB R7,R7,#1 �STRB R14,[R2,R7] � �BL Remove_Leading0s � � �LDMFD R13!,{R0-R12} �LDMFD R13!,{PC} � .divres3 EQUD 0 $.modres3 . EQUD 0 8 B L.Remove_Leading0s VSTMFD R13!,{R14} `: j MOV R4,#0 t.loop_remove0s ~LDRB R5,[R2,R4] � CMP R5,#0 �ADDEQ R4,R4,#1 �BEQ loop_remove0s � �ADR R6,answer � MOV R7,#0 �.loop_swap_string �LDRB R5,[R2,R4] �STRB R5,[R6,R7] �ADD R4,R4,#1 �ADD R7,R7,#1 �CMP R5,#10 BNE loop_swap_string : (LDMFD R13!,{PC} 2 <.address_ans FSTMFD R13!,{R14} PADR R8,answer ZLDMFD R13!,{PC} d.answer n�Bytes(accuracy%) x � �.get_addresses �STMFD R13!,{R14} �ADR R0,operand1 �B next1 � .operand1 ��Bytes(accuracy%) � .next1 �ADR R1,operand2 �B next2 � .operand2 ��Bytes(accuracy%) � .next2 ADR R2,result B next3 .result "�Bytes(accuracy%) , .next3 6ADR R12,e_so_far @LDMFD R13!,{PC} J .e_so_far T�Bytes(accuracy%) ^: h: r.fill_e |STMFD R13!,{R14} �: � MOV R5,#0 � MOV R6,#0 �.loop_fill_e � STRB R5,[R12,R6] � ADD R6,R6,#1 � CMP R6,#accuracy2% �BNE loop_fill_e �MOV R5,#10 �SUB R6,R6,#1 �STRB R5,[R12,R6] �: �LDMFD R13!,{PC} ] � &: 0� 13 : � 0,63 D N� "Calculating....." X� Factoriallify b l� *SPOOL E_FILE3 v � � � � � � A=0 � � � A+=1 � � (e_so_far?A)=7 � � "2."; � � � � �(e_so_far?A); � A+=1 � � (e_so_far?A)=10 �� *SPOOL � � : ݤBytes(inc%) P%+=inc% *=0 4: �
00000000 0d 00 0a 0f ee 20 85 20 f6 3a f1 3b 9e 3a e0 0d |..... . .:.;.:..| 00000010 00 14 12 de 20 63 6f 64 65 25 20 34 30 30 30 30 |.... code% 40000| 00000020 30 0d 00 1e 0b 63 61 72 72 79 3d 38 0d 00 28 0a |0....carry=8..(.| 00000030 61 62 61 3d 31 33 0d 00 32 0b 69 74 25 3d 31 30 |aba=13..2.it%=10| 00000040 30 0d 00 3c 16 61 63 63 75 72 61 63 79 25 3d 31 |0..<.accuracy%=1| 00000050 3c 3c 28 61 62 61 29 0d 00 46 19 61 63 63 75 72 |<<(aba)..F.accur| 00000060 61 63 79 32 25 3d 31 3c 3c 28 61 62 61 2d 31 29 |acy2%=1<<(aba-1)| 00000070 0d 00 50 0d 61 63 63 32 25 3d 31 30 30 0d 00 5a |..P.acc2%=100..Z| 00000080 15 e3 20 70 61 73 73 25 3d 30 20 b8 20 32 20 88 |.. pass%=0 . 2 .| 00000090 20 32 0d 00 64 0c 50 25 3d 63 6f 64 65 25 0d 00 | 2..d.P%=code%..| 000000a0 6e 05 5b 0d 00 78 0d 4f 50 54 20 70 61 73 73 25 |n.[..x.OPT pass%| 000000b0 0d 00 82 04 0d 00 8c 09 2e 53 56 49 54 0d 00 96 |.........SVIT...| 000000c0 0a 45 51 55 44 20 30 0d 00 a0 04 0d 00 aa 12 2e |.EQUD 0.........| 000000d0 46 61 63 74 6f 72 69 61 6c 6c 69 66 79 0d 00 b4 |Factoriallify...| 000000e0 14 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 |.STMFD R13!,{R14| 000000f0 7d 0d 00 be 05 3a 0d 00 c8 14 42 4c 20 67 65 74 |}....:....BL get| 00000100 5f 61 64 64 72 65 73 73 65 73 0d 00 d2 0d 42 4c |_addresses....BL| 00000110 20 66 69 6c 6c 5f 65 0d 00 dc 24 4d 4f 56 20 52 | fill_e...$MOV R| 00000120 33 2c 23 30 20 20 20 20 20 20 20 20 20 20 20 20 |3,#0 | 00000130 20 5c 66 61 63 74 6f 72 69 61 6c 0d 00 e6 17 2e | \factorial.....| 00000140 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 79 |main_for_loopify| 00000150 73 31 0d 00 f0 04 0d 00 fa 11 20 20 53 54 52 20 |s1........ STR | 00000160 52 30 2c 53 56 49 54 0d 01 04 20 20 20 53 57 49 |R0,SVIT... SWI| 00000170 20 22 4f 53 5f 52 65 61 64 4d 6f 6e 6f 74 6f 6e | "OS_ReadMonoton| 00000180 69 63 54 69 6d 65 22 0d 01 0e 15 20 20 53 54 4d |icTime".... STM| 00000190 46 44 20 52 31 33 21 2c 7b 52 30 7d 0d 01 18 11 |FD R13!,{R0}....| 000001a0 20 20 4c 44 52 20 52 30 2c 53 56 49 54 0d 01 22 | LDR R0,SVIT.."| 000001b0 04 0d 01 2c 10 20 20 4d 4f 56 20 52 31 34 2c 23 |...,. MOV R14,#| 000001c0 30 0d 01 36 13 20 20 53 54 52 42 20 52 31 34 2c |0..6. STRB R14,| 000001d0 5b 52 30 5d 0d 01 40 13 20 20 53 54 52 42 20 52 |[R0]..@. STRB R| 000001e0 31 34 2c 5b 52 31 5d 0d 01 4a 0f 20 20 43 4d 50 |14,[R1]..J. CMP| 000001f0 20 52 33 2c 23 31 0d 01 54 13 20 20 4d 4f 56 4c | R3,#1..T. MOVL| 00000200 45 20 20 52 31 34 2c 23 31 0d 01 5e 18 20 20 53 |E R14,#1..^. S| 00000210 54 52 4c 45 42 20 52 31 34 2c 5b 52 30 2c 23 31 |TRLEB R14,[R0,#1| 00000220 5d 0d 01 68 18 20 20 53 54 52 4c 45 42 20 52 31 |]..h. STRLEB R1| 00000230 34 2c 5b 52 31 2c 23 31 5d 0d 01 72 14 20 20 4d |4,[R1,#1]..r. M| 00000240 4f 56 4c 45 20 20 52 31 34 2c 23 31 30 0d 01 7c |OVLE R14,#10..|| 00000250 18 20 20 53 54 52 4c 45 42 20 52 31 34 2c 5b 52 |. STRLEB R14,[R| 00000260 30 2c 23 32 5d 0d 01 86 18 20 20 53 54 52 4c 45 |0,#2].... STRLE| 00000270 42 20 52 31 34 2c 5b 52 31 2c 23 32 5d 0d 01 90 |B R14,[R1,#2]...| 00000280 0f 20 20 43 4d 50 20 52 33 2c 23 31 0d 01 9a 16 |. CMP R3,#1....| 00000290 20 20 41 44 52 47 54 20 52 34 2c 61 64 6f 6c 6c | ADRGT R4,adoll| 000002a0 61 72 0d 01 a4 11 20 20 4d 4f 56 47 54 20 52 30 |ar.... MOVGT R0| 000002b0 2c 52 34 0d 01 ae 25 20 20 42 4c 47 54 20 6e 75 |,R4...% BLGT nu| 000002c0 6d 62 65 72 74 6f 73 61 6d 73 74 72 69 6e 67 66 |mbertosamstringf| 000002d0 61 63 74 6f 72 69 61 6c 0d 01 b8 1d 20 20 42 4c |actorial.... BL| 000002e0 20 62 65 67 69 6e 5f 6d 75 6c 74 69 70 6c 69 63 | begin_multiplic| 000002f0 61 74 69 6f 6e 0d 01 c2 23 20 20 5c 52 45 53 55 |ation...# \RESU| 00000300 4c 54 20 49 53 20 52 45 54 55 52 4e 45 44 20 49 |LT IS RETURNED I| 00000310 4e 20 61 6e 73 77 65 72 0d 01 cc 16 20 20 5c 63 |N answer.... \c| 00000320 6f 70 79 20 74 6f 20 61 64 6f 6c 6c 61 72 0d 01 |opy to adollar..| 00000330 d6 0f 20 20 4d 4f 56 20 52 35 2c 23 30 0d 01 e0 |.. MOV R5,#0...| 00000340 14 20 20 41 44 52 20 52 37 2c 61 64 6f 6c 6c 61 |. ADR R7,adolla| 00000350 72 0d 01 ea 10 20 20 4d 4f 56 20 52 31 34 2c 23 |r.... MOV R14,#| 00000360 30 0d 01 f4 16 20 20 53 54 52 42 20 52 31 34 2c |0.... STRB R14,| 00000370 5b 52 37 5d 2c 23 31 0d 01 fe 14 20 20 42 4c 20 |[R7],#1.... BL | 00000380 61 64 64 72 65 73 73 5f 61 6e 73 0d 02 08 19 20 |address_ans.... | 00000390 20 2e 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 | .main_for_loopi| 000003a0 66 79 73 32 0d 02 12 17 20 20 20 20 4c 44 52 42 |fys2.... LDRB| 000003b0 20 52 36 2c 5b 52 38 2c 52 35 5d 0d 02 1c 17 20 | R6,[R8,R5].... | 000003c0 20 20 20 53 54 52 42 20 52 36 2c 5b 52 37 2c 52 | STRB R6,[R7,R| 000003d0 35 5d 0d 02 26 12 20 20 20 20 43 4d 50 20 52 36 |5]..&. CMP R6| 000003e0 2c 23 31 30 0d 02 30 14 20 20 20 20 41 44 44 20 |,#10..0. ADD | 000003f0 52 35 2c 52 35 2c 23 31 0d 02 3a 1c 20 20 42 4e |R5,R5,#1..:. BN| 00000400 45 20 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 |E main_for_loopi| 00000410 66 79 73 32 0d 02 44 04 0d 02 4e 16 20 20 42 4c |fys2..D...N. BL| 00000420 20 67 65 74 5f 61 64 64 72 65 73 73 65 73 0d 02 | get_addresses..| 00000430 58 10 20 20 4d 4f 56 20 52 31 34 2c 23 30 0d 02 |X. MOV R14,#0..| 00000440 62 13 20 20 53 54 52 42 20 52 31 34 2c 5b 52 30 |b. STRB R14,[R0| 00000450 5d 0d 02 6c 10 20 20 4d 4f 56 20 52 31 34 2c 23 |]..l. MOV R14,#| 00000460 31 0d 02 76 16 20 20 53 54 52 42 20 52 31 34 2c |1..v. STRB R14,| 00000470 5b 52 30 2c 23 31 5d 0d 02 80 10 20 20 4d 4f 56 |[R0,#1].... MOV| 00000480 20 52 31 34 2c 23 30 0d 02 8a 0f 20 20 4d 4f 56 | R14,#0.... MOV| 00000490 20 52 35 2c 23 32 0d 02 94 1a 20 20 2e 6d 61 69 | R5,#2.... .mai| 000004a0 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 63 31 |n_for_loopifysc1| 000004b0 0d 02 9e 18 20 20 20 20 53 54 52 42 20 52 31 34 |.... STRB R14| 000004c0 2c 5b 52 30 2c 52 35 5d 0d 02 a8 14 20 20 20 20 |,[R0,R5].... | 000004d0 41 44 44 20 52 35 2c 52 35 2c 23 31 0d 02 b2 15 |ADD R5,R5,#1....| 000004e0 20 20 20 20 43 4d 50 20 52 35 2c 23 61 63 63 32 | CMP R5,#acc2| 000004f0 25 0d 02 bc 1d 20 20 42 4e 45 20 6d 61 69 6e 5f |%.... BNE main_| 00000500 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 63 31 0d 02 |for_loopifysc1..| 00000510 c6 11 20 20 4d 4f 56 20 52 31 34 2c 23 31 30 0d |.. MOV R14,#10.| 00000520 02 d0 16 20 20 53 54 52 42 20 52 31 34 2c 5b 52 |... STRB R14,[R| 00000530 30 2c 52 35 5d 0d 02 da 04 0d 02 e4 10 20 20 4d |0,R5]........ M| 00000540 4f 56 20 52 31 34 2c 23 30 0d 02 ee 13 20 20 53 |OV R14,#0.... S| 00000550 54 52 42 20 52 31 34 2c 5b 52 31 5d 0d 02 f8 0f |TRB R14,[R1]....| 00000560 20 20 4d 4f 56 20 52 35 2c 23 31 0d 03 02 10 20 | MOV R5,#1.... | 00000570 20 4d 4f 56 20 52 31 31 2c 23 30 0d 03 0c 14 20 | MOV R11,#0.... | 00000580 20 42 4c 20 61 64 64 72 65 73 73 5f 61 6e 73 0d | BL address_ans.| 00000590 03 16 1a 20 20 2e 6d 61 69 6e 5f 66 6f 72 5f 6c |... .main_for_l| 000005a0 6f 6f 70 69 66 79 73 63 32 0d 03 20 19 20 20 20 |oopifysc2.. . | 000005b0 20 4c 44 52 42 20 52 31 34 2c 5b 52 38 2c 52 31 | LDRB R14,[R8,R1| 000005c0 31 5d 0d 03 2a 18 20 20 20 20 53 54 52 42 20 52 |1]..*. STRB R| 000005d0 31 34 2c 5b 52 31 2c 52 35 5d 0d 03 34 16 20 20 |14,[R1,R5]..4. | 000005e0 20 20 41 44 44 20 52 31 31 2c 52 31 31 2c 23 31 | ADD R11,R11,#1| 000005f0 0d 03 3e 14 20 20 20 20 41 44 44 20 52 35 2c 52 |..>. ADD R5,R| 00000600 35 2c 23 31 0d 03 48 13 20 20 20 20 43 4d 50 20 |5,#1..H. CMP | 00000610 52 31 34 2c 23 31 30 0d 03 52 1d 20 20 42 4e 45 |R14,#10..R. BNE| 00000620 20 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 | main_for_loopif| 00000630 79 73 63 32 0d 03 5c 04 0d 03 66 17 20 20 42 4c |ysc2..\...f. BL| 00000640 20 62 65 67 69 6e 5f 64 69 76 69 73 69 6f 6e 0d | begin_division.| 00000650 03 70 04 0d 03 7a 10 20 20 4d 4f 56 20 52 31 34 |.p...z. MOV R14| 00000660 2c 23 30 0d 03 84 13 20 20 53 54 52 42 20 52 31 |,#0.... STRB R1| 00000670 34 2c 5b 52 30 5d 0d 03 8e 0f 20 20 4d 4f 56 20 |4,[R0].... MOV | 00000680 52 35 2c 23 31 0d 03 98 10 20 20 4d 4f 56 20 52 |R5,#1.... MOV R| 00000690 31 31 2c 23 30 0d 03 a2 14 20 20 42 4c 20 61 64 |11,#0.... BL ad| 000006a0 64 72 65 73 73 5f 61 6e 73 0d 03 ac 1a 20 20 2e |dress_ans.... .| 000006b0 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 79 |main_for_loopify| 000006c0 73 63 33 0d 03 b6 19 20 20 20 20 4c 44 52 42 20 |sc3.... LDRB | 000006d0 52 31 34 2c 5b 52 38 2c 52 31 31 5d 0d 03 c0 18 |R14,[R8,R11]....| 000006e0 20 20 20 20 53 54 52 42 20 52 31 34 2c 5b 52 30 | STRB R14,[R0| 000006f0 2c 52 35 5d 0d 03 ca 16 20 20 20 20 41 44 44 20 |,R5].... ADD | 00000700 52 31 31 2c 52 31 31 2c 23 31 0d 03 d4 14 20 20 |R11,R11,#1.... | 00000710 20 20 41 44 44 20 52 35 2c 52 35 2c 23 31 0d 03 | ADD R5,R5,#1..| 00000720 de 13 20 20 20 20 43 4d 50 20 52 31 34 2c 23 31 |.. CMP R14,#1| 00000730 30 0d 03 e8 1d 20 20 42 4e 45 20 6d 61 69 6e 5f |0.... BNE main_| 00000740 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 63 33 0d 03 |for_loopifysc3..| 00000750 f2 04 0d 03 fc 10 20 20 4d 4f 56 20 52 31 34 2c |...... MOV R14,| 00000760 23 30 0d 04 06 13 20 20 53 54 52 42 20 52 31 34 |#0.... STRB R14| 00000770 2c 5b 52 31 5d 0d 04 10 0f 20 20 4d 4f 56 20 52 |,[R1].... MOV R| 00000780 35 2c 23 31 0d 04 1a 10 20 20 4d 4f 56 20 52 31 |5,#1.... MOV R1| 00000790 31 2c 23 30 0d 04 24 14 20 20 42 4c 20 61 64 64 |1,#0..$. BL add| 000007a0 72 65 73 73 5f 61 6e 73 0d 04 2e 1a 20 20 2e 6d |ress_ans.... .m| 000007b0 61 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 |ain_for_loopifys| 000007c0 63 34 0d 04 38 1a 20 20 20 20 4c 44 52 42 20 52 |c4..8. LDRB R| 000007d0 31 34 2c 5b 52 31 32 2c 52 31 31 5d 0d 04 42 18 |14,[R12,R11]..B.| 000007e0 20 20 20 20 53 54 52 42 20 52 31 34 2c 5b 52 31 | STRB R14,[R1| 000007f0 2c 52 35 5d 0d 04 4c 16 20 20 20 20 41 44 44 20 |,R5]..L. ADD | 00000800 52 31 31 2c 52 31 31 2c 23 31 0d 04 56 14 20 20 |R11,R11,#1..V. | 00000810 20 20 41 44 44 20 52 35 2c 52 35 2c 23 31 0d 04 | ADD R5,R5,#1..| 00000820 60 13 20 20 20 20 43 4d 50 20 52 31 34 2c 23 31 |`. CMP R14,#1| 00000830 30 0d 04 6a 1d 20 20 42 4e 45 20 6d 61 69 6e 5f |0..j. BNE main_| 00000840 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 63 34 0d 04 |for_loopifysc4..| 00000850 74 04 0d 04 7e 17 20 20 42 4c 20 62 65 67 69 6e |t...~. BL begin| 00000860 5f 61 64 64 69 74 69 6f 6e 0d 04 88 04 0d 04 92 |_addition.......| 00000870 16 20 20 42 4c 20 67 65 74 5f 61 64 64 72 65 73 |. BL get_addres| 00000880 73 65 73 0d 04 9c 14 20 20 42 4c 20 61 64 64 72 |ses.... BL addr| 00000890 65 73 73 5f 61 6e 73 0d 04 a6 10 20 20 4d 4f 56 |ess_ans.... MOV| 000008a0 20 52 31 34 2c 23 30 0d 04 b0 1a 20 20 2e 6d 61 | R14,#0.... .ma| 000008b0 69 6e 5f 66 6f 72 5f 6c 6f 6f 70 69 66 79 73 63 |in_for_loopifysc| 000008c0 35 0d 04 ba 18 20 20 20 20 4c 44 52 42 20 52 35 |5.... LDRB R5| 000008d0 2c 5b 52 38 2c 52 31 34 5d 0d 04 c4 19 20 20 20 |,[R8,R14].... | 000008e0 20 53 54 52 42 20 52 35 2c 5b 52 31 32 2c 52 31 | STRB R5,[R12,R1| 000008f0 34 5d 0d 04 ce 16 20 20 20 20 41 44 44 20 52 31 |4].... ADD R1| 00000900 34 2c 52 31 34 2c 23 31 0d 04 d8 12 20 20 20 20 |4,R14,#1.... | 00000910 43 4d 50 20 52 35 2c 23 31 30 0d 04 e2 1d 20 20 |CMP R5,#10.... | 00000920 42 4e 45 20 6d 61 69 6e 5f 66 6f 72 5f 6c 6f 6f |BNE main_for_loo| 00000930 70 69 66 79 73 63 35 0d 04 ec 04 0d 04 f6 04 0d |pifysc5.........| 00000940 05 00 04 0d 05 0a 18 20 20 53 54 4d 46 44 20 52 |....... STMFD R| 00000950 31 33 21 2c 7b 52 30 2d 52 35 7d 0d 05 14 10 20 |13!,{R0-R5}.... | 00000960 20 53 57 49 20 32 35 36 2b 31 32 0d 05 1e 1c 20 | SWI 256+12.... | 00000970 20 53 57 49 20 22 4f 53 5f 52 65 6d 6f 76 65 43 | SWI "OS_RemoveC| 00000980 75 72 73 6f 72 73 22 0d 05 28 0f 20 20 53 57 49 |ursors"..(. SWI| 00000990 20 32 35 36 2b 35 0d 05 32 0f 20 20 4d 4f 56 20 | 256+5..2. MOV | 000009a0 52 30 2c 23 34 0d 05 3c 11 20 20 4d 4f 56 20 52 |R0,#4..<. MOV R| 000009b0 31 2c 23 32 30 30 0d 05 46 11 20 20 4d 4f 56 20 |1,#200..F. MOV | 000009c0 52 32 2c 23 38 30 30 0d 05 50 13 20 20 53 57 49 |R2,#800..P. SWI| 000009d0 20 22 4f 53 5f 50 6c 6f 74 22 0d 05 5a 15 20 20 | "OS_Plot"..Z. | 000009e0 53 57 49 20 22 4f 53 5f 57 72 69 74 65 53 22 0d |SWI "OS_WriteS".| 000009f0 05 64 23 20 20 45 51 55 53 20 22 49 74 65 72 61 |.d# EQUS "Itera| 00000a00 74 69 6f 6e 73 20 43 61 6c 63 75 6c 61 74 65 64 |tions Calculated| 00000a10 20 22 0d 05 6e 0c 20 20 45 51 55 42 20 30 0d 05 | "..n. EQUB 0..| 00000a20 78 0b 20 20 41 4c 49 47 4e 0d 05 82 0f 20 20 4d |x. ALIGN.... M| 00000a30 4f 56 20 52 30 2c 52 33 0d 05 8c 14 20 20 41 44 |OV R0,R3.... AD| 00000a40 52 20 52 31 2c 62 75 66 66 65 72 32 0d 05 96 10 |R R1,buffer2....| 00000a50 20 20 4d 4f 56 20 52 32 2c 23 33 32 0d 05 a0 1f | MOV R2,#32....| 00000a60 20 20 53 57 49 20 22 4f 53 5f 43 6f 6e 76 65 72 | SWI "OS_Conver| 00000a70 74 43 61 72 64 69 6e 61 6c 34 22 0d 05 aa 15 20 |tCardinal4".... | 00000a80 20 53 57 49 20 22 4f 53 5f 57 72 69 74 65 30 22 | SWI "OS_Write0"| 00000a90 0d 05 b4 04 0d 05 be 0f 20 20 4d 4f 56 20 52 30 |........ MOV R0| 00000aa0 2c 23 34 0d 05 c8 11 20 20 4d 4f 56 20 52 31 2c |,#4.... MOV R1,| 00000ab0 23 32 30 30 0d 05 d2 11 20 20 4d 4f 56 20 52 32 |#200.... MOV R2| 00000ac0 2c 23 36 30 30 0d 05 dc 13 20 20 53 57 49 20 22 |,#600.... SWI "| 00000ad0 4f 53 5f 50 6c 6f 74 22 0d 05 e6 15 20 20 53 57 |OS_Plot".... SW| 00000ae0 49 20 22 4f 53 5f 57 72 69 74 65 53 22 0d 05 f0 |I "OS_WriteS"...| 00000af0 27 20 20 45 51 55 53 20 22 54 69 6d 65 20 46 6f |' EQUS "Time Fo| 00000b00 72 20 4c 61 73 74 20 43 61 6c 63 75 6c 61 74 69 |r Last Calculati| 00000b10 6f 6e 20 22 0d 05 fa 0c 20 20 45 51 55 42 20 30 |on ".... EQUB 0| 00000b20 0d 06 04 0b 20 20 41 4c 49 47 4e 0d 06 0e 04 0d |.... ALIGN.....| 00000b30 06 18 18 20 20 4c 44 4d 46 44 20 52 31 33 21 2c |... LDMFD R13!,| 00000b40 7b 52 30 2d 52 35 7d 0d 06 22 04 0d 06 2c 16 20 |{R0-R5}.."...,. | 00000b50 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 | LDMFD R13!,{R14| 00000b60 7d 0d 06 36 18 20 20 53 54 4d 46 44 20 52 31 33 |}..6. STMFD R13| 00000b70 21 2c 7b 52 30 2d 52 35 7d 0d 06 40 20 20 20 53 |!,{R0-R5}..@ S| 00000b80 57 49 20 22 4f 53 5f 52 65 61 64 4d 6f 6e 6f 74 |WI "OS_ReadMonot| 00000b90 6f 6e 69 63 54 69 6d 65 22 0d 06 4a 14 20 20 53 |onicTime"..J. S| 00000ba0 55 42 20 52 31 34 2c 52 30 2c 52 31 34 0d 06 54 |UB R14,R0,R14..T| 00000bb0 10 20 20 4d 4f 56 20 52 30 2c 52 31 34 0d 06 5e |. MOV R0,R14..^| 00000bc0 14 20 20 41 44 52 20 52 31 2c 62 75 66 66 65 72 |. ADR R1,buffer| 00000bd0 32 0d 06 68 10 20 20 4d 4f 56 20 52 32 2c 23 33 |2..h. MOV R2,#3| 00000be0 32 0d 06 72 1f 20 20 53 57 49 20 22 4f 53 5f 43 |2..r. SWI "OS_C| 00000bf0 6f 6e 76 65 72 74 43 61 72 64 69 6e 61 6c 34 22 |onvertCardinal4"| 00000c00 0d 06 7c 15 20 20 53 57 49 20 22 4f 53 5f 57 72 |..|. SWI "OS_Wr| 00000c10 69 74 65 30 22 0d 06 86 04 0d 06 90 0f 20 20 4d |ite0"........ M| 00000c20 4f 56 20 52 30 2c 23 34 0d 06 9a 11 20 20 4d 4f |OV R0,#4.... MO| 00000c30 56 20 52 31 2c 23 32 30 30 0d 06 a4 11 20 20 4d |V R1,#200.... M| 00000c40 4f 56 20 52 32 2c 23 34 30 30 0d 06 ae 13 20 20 |OV R2,#400.... | 00000c50 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 06 b8 |SWI "OS_Plot"...| 00000c60 15 20 20 53 57 49 20 22 4f 53 5f 57 72 69 74 65 |. SWI "OS_Write| 00000c70 53 22 0d 06 c2 22 20 20 45 51 55 53 20 22 52 65 |S"..." EQUS "Re| 00000c80 6d 61 69 6e 69 6e 67 20 49 74 65 72 61 74 69 6f |maining Iteratio| 00000c90 6e 73 20 22 0d 06 cc 0c 20 20 45 51 55 42 20 30 |ns ".... EQUB 0| 00000ca0 0d 06 d6 0b 20 20 41 4c 49 47 4e 0d 06 e0 14 20 |.... ALIGN.... | 00000cb0 20 52 53 42 20 52 30 2c 52 33 2c 23 69 74 25 0d | RSB R0,R3,#it%.| 00000cc0 06 ea 14 20 20 41 44 52 20 52 31 2c 62 75 66 66 |... ADR R1,buff| 00000cd0 65 72 32 0d 06 f4 10 20 20 4d 4f 56 20 52 32 2c |er2.... MOV R2,| 00000ce0 23 33 32 0d 06 fe 1f 20 20 53 57 49 20 22 4f 53 |#32.... SWI "OS| 00000cf0 5f 43 6f 6e 76 65 72 74 43 61 72 64 69 6e 61 6c |_ConvertCardinal| 00000d00 34 22 0d 07 08 15 20 20 53 57 49 20 22 4f 53 5f |4".... SWI "OS_| 00000d10 57 72 69 74 65 30 22 0d 07 12 04 0d 07 1c 0f 20 |Write0"........ | 00000d20 20 53 57 49 20 32 35 36 2b 34 0d 07 26 18 20 20 | SWI 256+4..&. | 00000d30 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 |LDMFD R13!,{R0-R| 00000d40 35 7d 0d 07 30 04 0d 07 3a 04 0d 07 44 04 0d 07 |5}..0...:...D...| 00000d50 4e 23 20 20 5c 52 45 53 55 4c 54 20 49 53 20 52 |N# \RESULT IS R| 00000d60 45 54 55 52 4e 45 44 20 49 4e 20 41 4e 53 57 45 |ETURNED IN ANSWE| 00000d70 52 0d 07 58 04 0d 07 62 1e 20 20 53 57 49 20 22 |R..X...b. SWI "| 00000d80 4f 53 5f 52 65 61 64 45 73 63 61 70 65 53 74 61 |OS_ReadEscapeSta| 00000d90 74 65 22 0d 07 6c 17 20 20 4c 44 4d 43 53 46 44 |te"..l. LDMCSFD| 00000da0 20 52 31 33 21 2c 7b 50 43 7d 0d 07 76 04 0d 07 | R13!,{PC}..v...| 00000db0 80 12 20 20 41 44 44 20 52 33 2c 52 33 2c 23 31 |.. ADD R3,R3,#1| 00000dc0 0d 07 8a 11 20 20 43 4d 50 20 52 33 2c 23 69 74 |.... CMP R3,#it| 00000dd0 25 0d 07 94 1a 42 4c 45 20 6d 61 69 6e 5f 66 6f |%....BLE main_fo| 00000de0 72 5f 6c 6f 6f 70 69 66 79 73 31 0d 07 9e 04 0d |r_loopifys1.....| 00000df0 07 a8 13 4c 44 4d 46 44 20 52 31 33 21 2c 7b 50 |...LDMFD R13!,{P| 00000e00 43 7d 0d 07 b2 04 0d 07 bc 0c 2e 62 75 66 66 65 |C}.........buffe| 00000e10 72 32 0d 07 c6 0e a4 42 79 74 65 73 28 33 32 29 |r2.....Bytes(32)| 00000e20 0d 07 d0 04 0d 07 da 0c 2e 61 64 6f 6c 6c 61 72 |.........adollar| 00000e30 0d 07 e4 15 a4 42 79 74 65 73 28 61 63 63 75 72 |.....Bytes(accur| 00000e40 61 63 79 25 29 0d 07 ee 05 3a 0d 07 f8 05 3a 0d |acy%)....:....:.| 00000e50 08 02 1f 2e 6e 75 6d 62 65 72 74 6f 73 61 6d 73 |....numbertosams| 00000e60 74 72 69 6e 67 66 61 63 74 6f 72 69 61 6c 0d 08 |tringfactorial..| 00000e70 0c 14 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 31 |..STMFD R13!,{R1| 00000e80 34 7d 0d 08 16 16 53 54 4d 46 44 20 52 31 33 21 |4}....STMFD R13!| 00000e90 2c 7b 52 30 2d 52 39 7d 0d 08 20 05 3a 0d 08 2a |,{R0-R9}.. .:..*| 00000ea0 0d 4d 4f 56 20 52 39 2c 52 31 0d 08 34 04 0d 08 |.MOV R9,R1..4...| 00000eb0 3e 0d 4d 4f 56 20 52 30 2c 52 33 0d 08 48 11 41 |>.MOV R0,R3..H.A| 00000ec0 44 52 20 52 31 2c 62 75 66 66 65 72 0d 08 52 0e |DR R1,buffer..R.| 00000ed0 4d 4f 56 20 52 32 2c 23 33 32 0d 08 5c 1d 53 57 |MOV R2,#32..\.SW| 00000ee0 49 20 22 4f 53 5f 43 6f 6e 76 65 72 74 43 61 72 |I "OS_ConvertCar| 00000ef0 64 69 6e 61 6c 34 22 0d 08 66 0d 4d 4f 56 20 52 |dinal4"..f.MOV R| 00000f00 36 2c 23 31 0d 08 70 14 2e 6e 74 73 66 6f 72 5f |6,#1..p..ntsfor_| 00000f10 6c 6f 6f 70 69 66 79 31 0d 08 7a 15 20 20 4c 44 |loopify1..z. LD| 00000f20 52 42 20 52 35 2c 5b 52 30 5d 2c 23 31 0d 08 84 |RB R5,[R0],#1...| 00000f30 17 20 20 53 55 42 20 52 35 2c 52 35 2c 23 97 28 |. SUB R5,R5,#.(| 00000f40 22 30 22 29 0d 08 8e 15 20 20 53 54 52 42 20 52 |"0").... STRB R| 00000f50 35 2c 5b 52 39 2c 52 36 5d 0d 08 98 12 20 20 41 |5,[R9,R6].... A| 00000f60 44 44 20 52 36 2c 52 36 2c 23 31 0d 08 a2 0f 20 |DD R6,R6,#1.... | 00000f70 20 43 4d 50 20 52 30 2c 52 31 0d 08 ac 17 42 4c | CMP R0,R1....BL| 00000f80 45 20 6e 74 73 66 6f 72 5f 6c 6f 6f 70 69 66 79 |E ntsfor_loopify| 00000f90 31 0d 08 b6 0f 4d 4f 56 20 52 31 34 2c 23 31 30 |1....MOV R14,#10| 00000fa0 0d 08 c0 10 53 55 42 20 52 36 2c 52 36 2c 23 31 |....SUB R6,R6,#1| 00000fb0 0d 08 ca 14 53 54 52 42 20 52 31 34 2c 5b 52 39 |....STRB R14,[R9| 00000fc0 2c 52 36 5d 0d 08 d4 05 3a 0d 08 de 16 4c 44 4d |,R6]....:....LDM| 00000fd0 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 39 7d 0d |FD R13!,{R0-R9}.| 00000fe0 08 e8 13 4c 44 4d 46 44 20 52 31 33 21 2c 7b 50 |...LDMFD R13!,{P| 00000ff0 43 7d 0d 08 f2 0b 2e 62 75 66 66 65 72 0d 08 fc |C}.....buffer...| 00001000 0e a4 42 79 74 65 73 28 33 32 29 0d 09 06 05 3a |..Bytes(32)....:| 00001010 0d 09 10 05 3a 0d 09 1a 49 5c 50 55 52 50 4f 53 |....:...I\PURPOS| 00001020 45 20 2d 20 52 45 2d 57 52 49 54 54 45 4e 20 4c |E - RE-WRITTEN L| 00001030 4f 57 2d 4c 45 56 45 4c 20 41 44 44 49 54 49 4f |OW-LEVEL ADDITIO| 00001040 4e 20 52 4f 55 54 49 4e 45 20 55 53 49 4e 47 20 |N ROUTINE USING | 00001050 49 4e 46 41 20 41 4c 47 4f 52 49 54 48 4d 0d 09 |INFA ALGORITHM..| 00001060 24 13 2e 62 65 67 69 6e 5f 61 64 64 69 74 69 6f |$..begin_additio| 00001070 6e 0d 09 2e 14 53 54 4d 46 44 20 52 31 33 21 2c |n....STMFD R13!,| 00001080 7b 52 31 34 7d 0d 09 38 17 53 54 4d 46 44 20 52 |{R14}..8.STMFD R| 00001090 31 33 21 2c 7b 52 30 2d 52 31 32 7d 0d 09 42 04 |13!,{R0-R12}..B.| 000010a0 0d 09 4c 2f 5c 41 20 bb 55 45 20 ca 20 54 45 4e |..L/\A .UE . TEN| 000010b0 20 43 4f 52 52 45 53 50 4f 4e 44 53 20 b8 20 54 | CORRESPONDS . T| 000010c0 45 52 4d 49 4e 41 54 49 4e 47 20 42 59 54 45 0d |ERMINATING BYTE.| 000010d0 09 56 04 0d 09 60 24 5c 66 69 6e 64 20 65 6e 64 |.V...`$\find end| 000010e0 20 6f 66 20 6f 70 65 72 61 6e 64 31 20 80 20 6f | of operand1 . o| 000010f0 70 65 72 61 6e 64 32 0d 09 6a 04 0d 09 74 0d 4d |perand2..j...t.M| 00001100 4f 56 20 52 33 2c 52 30 0d 09 7e 0d 4d 4f 56 20 |OV R3,R0..~.MOV | 00001110 52 35 2c 23 30 0d 09 88 12 2e 6c 6f 6f 70 5f 67 |R5,#0.....loop_g| 00001120 65 74 5f 65 6e 64 31 0d 09 92 15 20 20 4c 44 52 |et_end1.... LDR| 00001130 42 20 52 34 2c 5b 52 33 5d 2c 23 31 0d 09 9c 12 |B R4,[R3],#1....| 00001140 20 20 41 44 44 20 52 35 2c 52 35 2c 23 31 0d 09 | ADD R5,R5,#1..| 00001150 a6 10 20 20 43 4d 50 20 52 34 2c 23 31 30 0d 09 |.. CMP R4,#10..| 00001160 b0 15 42 4e 45 20 6c 6f 6f 70 5f 67 65 74 5f 65 |..BNE loop_get_e| 00001170 6e 64 31 0d 09 ba 04 0d 09 c4 0d 4d 4f 56 20 52 |nd1........MOV R| 00001180 33 2c 52 31 0d 09 ce 0d 4d 4f 56 20 52 36 2c 23 |3,R1....MOV R6,#| 00001190 30 0d 09 d8 12 2e 6c 6f 6f 70 5f 67 65 74 5f 65 |0.....loop_get_e| 000011a0 6e 64 32 0d 09 e2 15 20 20 4c 44 52 42 20 52 34 |nd2.... LDRB R4| 000011b0 2c 5b 52 33 5d 2c 23 31 0d 09 ec 12 20 20 41 44 |,[R3],#1.... AD| 000011c0 44 20 52 36 2c 52 36 2c 23 31 0d 09 f6 10 20 20 |D R6,R6,#1.... | 000011d0 43 4d 50 20 52 34 2c 23 31 30 0d 0a 00 15 42 4e |CMP R4,#10....BN| 000011e0 45 20 6c 6f 6f 70 5f 67 65 74 5f 65 6e 64 32 0d |E loop_get_end2.| 000011f0 0a 0a 04 0d 0a 14 42 5c a9 47 54 48 20 ca 20 4f |......B\.GTH . O| 00001200 50 45 52 41 4e 44 20 31 20 49 53 20 52 45 54 55 |PERAND 1 IS RETU| 00001210 52 4e 45 44 20 49 4e 20 52 35 2c 20 a9 47 54 48 |RNED IN R5, .GTH| 00001220 20 ca 20 4f 50 45 52 41 4e 44 20 32 20 49 53 20 | . OPERAND 2 IS | 00001230 49 4e 20 52 36 0d 0a 1e 04 0d 0a 28 21 53 55 42 |IN R6......(!SUB| 00001240 20 52 33 2c 52 35 2c 52 36 20 20 20 20 20 20 5c | R3,R5,R6 \| 00001250 52 33 20 49 53 20 44 49 46 46 0d 0a 32 0d 43 4d |R3 IS DIFF..2.CM| 00001260 50 20 52 33 2c 23 30 0d 0a 3c 12 52 53 42 4c 54 |P R3,#0..<.RSBLT| 00001270 20 52 33 2c 52 33 2c 23 30 0d 0a 46 0d 43 4d 50 | R3,R3,#0..F.CMP| 00001280 20 52 35 2c 52 36 0d 0a 50 0f 4d 4f 56 4c 54 20 | R5,R6..P.MOVLT | 00001290 52 34 2c 52 31 0d 0a 5a 0f 4d 4f 56 4c 54 20 52 |R4,R1..Z.MOVLT R| 000012a0 31 2c 52 30 0d 0a 64 0f 4d 4f 56 4c 54 20 52 30 |1,R0..d.MOVLT R0| 000012b0 2c 52 34 0d 0a 6e 04 0d 0a 78 25 4d 4f 56 47 54 |,R4..n...x%MOVGT| 000012c0 20 52 34 2c 52 35 20 20 20 20 20 20 5c 52 34 20 | R4,R5 \R4 | 000012d0 49 53 20 4d 41 58 4c 45 4e 47 54 48 0d 0a 82 0f |IS MAXLENGTH....| 000012e0 4d 4f 56 4c 45 20 52 34 2c 52 36 0d 0a 8c 04 0d |MOVLE R4,R6.....| 000012f0 0a 96 10 4d 4f 56 20 63 61 72 72 79 2c 23 30 0d |...MOV carry,#0.| 00001300 0a a0 04 0d 0a aa 1e 5c 73 74 72 75 63 74 75 72 |.......\structur| 00001310 65 20 66 6f 72 2e 2e 2e 6e 65 78 74 20 6c 6f 6f |e for...next loo| 00001320 70 0d 0a b4 04 0d 0a be 10 53 55 42 20 52 34 2c |p........SUB R4,| 00001330 52 34 2c 23 32 0d 0a c8 0d 4d 4f 56 20 52 37 2c |R4,#2....MOV R7,| 00001340 52 34 0d 0a d2 14 20 20 2e 66 6f 72 5f 6c 6f 6f |R4.... .for_loo| 00001350 70 69 66 79 31 63 0d 0a dc 1d 20 20 4c 44 52 42 |pify1c.... LDRB| 00001360 20 52 39 2c 5b 52 30 2c 52 37 5d 20 20 20 20 5c | R9,[R0,R7] \| 00001370 51 31 25 0d 0a e6 14 20 20 53 55 42 53 20 52 31 |Q1%.... SUBS R1| 00001380 34 2c 52 37 2c 52 33 0d 0a f0 19 20 20 4c 44 52 |4,R7,R3.... LDR| 00001390 47 54 42 20 52 31 30 2c 5b 52 31 2c 52 31 34 5d |GTB R10,[R1,R14]| 000013a0 0d 0a fa 1d 20 20 4d 4f 56 4c 45 20 52 31 30 2c |.... MOVLE R10,| 000013b0 23 30 20 20 20 20 20 20 20 5c 51 32 25 0d 0b 04 |#0 \Q2%...| 000013c0 13 20 20 41 44 44 20 52 39 2c 52 39 2c 52 31 30 |. ADD R9,R9,R10| 000013d0 0d 0b 0e 15 20 20 41 44 44 20 52 39 2c 52 39 2c |.... ADD R9,R9,| 000013e0 63 61 72 72 79 0d 0b 18 04 0d 0b 22 04 0d 0b 2c |carry......"...,| 000013f0 20 20 20 20 20 5c 41 53 53 45 4d 42 4c 45 20 83 | \ASSEMBLE .| 00001400 20 80 20 81 20 46 55 4e 43 54 49 4f 4e 0d 0b 36 | . . FUNCTION..6| 00001410 1a 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c |. STMFD R13!,| 00001420 7b 52 30 2d 52 36 7d 0d 0b 40 11 20 20 20 20 4d |{R0-R6}..@. M| 00001430 4f 56 20 52 30 2c 52 39 0d 0b 4a 12 20 20 20 20 |OV R0,R9..J. | 00001440 4d 4f 56 20 52 31 2c 23 31 30 0d 0b 54 17 20 20 |MOV R1,#10..T. | 00001450 20 20 80 53 20 52 36 2c 52 30 2c 23 31 3c 3c 33 | .S R6,R0,#1<<3| 00001460 31 0d 0b 5e 16 20 20 20 20 52 53 42 4d 49 20 52 |1..^. RSBMI R| 00001470 30 2c 52 30 2c 23 30 0d 0b 68 12 20 20 20 20 82 |0,R0,#0..h. .| 00001480 20 52 35 2c 52 36 2c 52 31 0d 0b 72 11 20 20 20 | R5,R6,R1..r. | 00001490 20 43 4d 50 20 52 31 2c 23 30 0d 0b 7c 16 20 20 | CMP R1,#0..|. | 000014a0 20 20 52 53 42 4d 49 20 52 31 2c 52 31 2c 23 30 | RSBMI R1,R1,#0| 000014b0 0d 0b 86 04 0d 0b 90 11 20 20 20 20 4d 4f 56 20 |........ MOV | 000014c0 52 32 2c 23 30 0d 0b 9a 11 20 20 20 20 4d 4f 56 |R2,#0.... MOV| 000014d0 20 52 33 2c 23 30 0d 0b a4 15 20 20 20 20 4d 4f | R3,#0.... MO| 000014e0 56 20 52 34 2c 23 31 3c 3c 33 31 0d 0b ae 04 0d |V R4,#1<<31.....| 000014f0 0b b8 18 20 20 20 20 2e 64 69 76 69 73 69 6f 6e |... .division| 00001500 5f 6c 6f 6f 70 31 31 0d 0b c2 18 20 20 20 20 4d |_loop11.... M| 00001510 4f 56 53 20 52 30 2c 52 30 2c 41 53 4c 23 31 0d |OVS R0,R0,ASL#1.| 00001520 0b cc 14 20 20 20 20 41 44 43 20 52 32 2c 52 32 |... ADC R2,R2| 00001530 2c 52 32 0d 0b d6 11 20 20 20 20 43 4d 50 20 52 |,R2.... CMP R| 00001540 32 2c 52 31 0d 0b e0 16 20 20 20 20 53 55 42 47 |2,R1.... SUBG| 00001550 45 20 52 32 2c 52 32 2c 52 31 0d 0b ea 15 20 20 |E R2,R2,R1.... | 00001560 20 20 84 52 47 45 20 52 33 2c 52 33 2c 52 34 0d | .RGE R3,R3,R4.| 00001570 0b f4 18 20 20 20 20 4d 4f 56 53 20 52 34 2c 52 |... MOVS R4,R| 00001580 34 2c 4c 53 52 23 31 0d 0b fe 1b 20 20 20 20 42 |4,LSR#1.... B| 00001590 4e 45 20 64 69 76 69 73 69 6f 6e 5f 6c 6f 6f 70 |NE division_loop| 000015a0 31 31 0d 0c 08 04 0d 0c 12 11 20 20 20 20 43 4d |11........ CM| 000015b0 50 20 52 35 2c 23 30 0d 0c 1c 16 20 20 20 20 52 |P R5,#0.... R| 000015c0 53 42 4d 49 20 52 33 2c 52 33 2c 23 30 0d 0c 26 |SBMI R3,R3,#0..&| 000015d0 11 20 20 20 20 43 4d 50 20 52 36 2c 23 30 0d 0c |. CMP R6,#0..| 000015e0 30 16 20 20 20 20 52 53 42 4d 49 20 52 32 2c 52 |0. RSBMI R2,R| 000015f0 32 2c 23 30 0d 0c 3a 04 0d 0c 44 15 20 20 20 20 |2,#0..:...D. | 00001600 53 54 52 20 52 33 2c 64 69 76 72 65 73 0d 0c 4e |STR R3,divres..N| 00001610 15 20 20 20 20 53 54 52 20 52 32 2c 6d 6f 64 72 |. STR R2,modr| 00001620 65 73 0d 0c 58 04 0d 0c 62 1a 20 20 20 20 4c 44 |es..X...b. LD| 00001630 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 36 7d |MFD R13!,{R0-R6}| 00001640 0d 0c 6c 04 0d 0c 76 14 20 20 4c 44 52 20 52 31 |..l...v. LDR R1| 00001650 34 2c 6d 6f 64 72 65 73 0d 0c 80 16 20 20 53 54 |4,modres.... ST| 00001660 52 42 20 52 31 34 2c 5b 52 32 2c 52 37 5d 0d 0c |RB R14,[R2,R7]..| 00001670 8a 16 20 20 4c 44 52 20 63 61 72 72 79 2c 64 69 |.. LDR carry,di| 00001680 76 72 65 73 0d 0c 94 04 0d 0c 9e 13 20 20 53 55 |vres........ SU| 00001690 42 53 20 52 37 2c 52 37 2c 23 31 0d 0c a8 04 0d |BS R7,R7,#1.....| 000016a0 0c b2 15 42 4e 45 20 66 6f 72 5f 6c 6f 6f 70 69 |...BNE for_loopi| 000016b0 66 79 31 63 0d 0c bc 10 43 4d 50 20 63 61 72 72 |fy1c....CMP carr| 000016c0 79 2c 23 30 0d 0c c6 13 53 54 52 42 20 63 61 72 |y,#0....STRB car| 000016d0 72 79 2c 5b 52 32 5d 0d 0c d0 0f 4d 4f 56 20 52 |ry,[R2]....MOV R| 000016e0 31 34 2c 23 31 30 0d 0c da 0d 43 4d 50 20 52 34 |14,#10....CMP R4| 000016f0 2c 23 33 0d 0c e4 12 41 44 44 47 54 20 52 34 2c |,#3....ADDGT R4,| 00001700 52 34 2c 23 31 0d 0c ee 10 41 44 44 20 52 34 2c |R4,#1....ADD R4,| 00001710 52 34 2c 23 31 0d 0c f8 14 53 54 52 42 20 52 31 |R4,#1....STRB R1| 00001720 34 2c 5b 52 32 2c 52 34 5d 0d 0d 02 04 0d 0d 0c |4,[R2,R4].......| 00001730 17 42 4c 20 52 65 6d 6f 76 65 5f 4c 65 61 64 69 |.BL Remove_Leadi| 00001740 6e 67 30 73 0d 0d 16 04 0d 0d 20 17 4c 44 4d 46 |ng0s...... .LDMF| 00001750 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 32 7d 0d |D R13!,{R0-R12}.| 00001760 0d 2a 13 4c 44 4d 46 44 20 52 31 33 21 2c 7b 50 |.*.LDMFD R13!,{P| 00001770 43 7d 0d 0d 34 04 0d 0d 3e 0b 2e 64 69 76 72 65 |C}..4...>..divre| 00001780 73 0d 0d 48 0a 45 51 55 44 20 30 0d 0d 52 0b 2e |s..H.EQUD 0..R..| 00001790 6d 6f 64 72 65 73 0d 0d 5c 0a 45 51 55 44 20 30 |modres..\.EQUD 0| 000017a0 0d 0d 66 04 0d 0d 70 4e 5c 50 55 52 50 4f 53 45 |..f...pN\PURPOSE| 000017b0 20 2d 20 52 45 2d 57 52 49 54 54 45 4e 20 4c 4f | - RE-WRITTEN LO| 000017c0 57 2d 4c 45 56 45 4c 20 4d 55 4c 54 49 50 4c 41 |W-LEVEL MULTIPLA| 000017d0 43 54 49 4f 4e 20 52 4f 55 54 49 4e 45 20 55 53 |CTION ROUTINE US| 000017e0 49 4e 47 20 49 4e 46 41 20 41 4c 47 4f 52 49 54 |ING INFA ALGORIT| 000017f0 48 4d 0d 0d 7a 19 2e 62 65 67 69 6e 5f 6d 75 6c |HM..z..begin_mul| 00001800 74 69 70 6c 69 63 61 74 69 6f 6e 0d 0d 84 14 53 |tiplication....S| 00001810 54 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 7d 0d |TMFD R13!,{R14}.| 00001820 0d 8e 17 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 |...STMFD R13!,{R| 00001830 30 2d 52 31 32 7d 0d 0d 98 04 0d 0d a2 04 0d 0d |0-R12}..........| 00001840 ac 24 5c 66 69 6e 64 20 65 6e 64 20 6f 66 20 6f |.$\find end of o| 00001850 70 65 72 61 6e 64 31 20 80 20 6f 70 65 72 61 6e |perand1 . operan| 00001860 64 32 0d 0d b6 04 0d 0d c0 0d 4d 4f 56 20 52 33 |d2........MOV R3| 00001870 2c 52 30 0d 0d ca 0d 4d 4f 56 20 52 35 2c 23 30 |,R0....MOV R5,#0| 00001880 0d 0d d4 13 2e 6c 6f 6f 70 5f 67 65 74 5f 65 6e |.....loop_get_en| 00001890 64 31 42 0d 0d de 15 20 20 4c 44 52 42 20 52 34 |d1B.... LDRB R4| 000018a0 2c 5b 52 33 5d 2c 23 31 0d 0d e8 12 20 20 41 44 |,[R3],#1.... AD| 000018b0 44 20 52 35 2c 52 35 2c 23 31 0d 0d f2 10 20 20 |D R5,R5,#1.... | 000018c0 43 4d 50 20 52 34 2c 23 31 30 0d 0d fc 16 42 4e |CMP R4,#10....BN| 000018d0 45 20 6c 6f 6f 70 5f 67 65 74 5f 65 6e 64 31 42 |E loop_get_end1B| 000018e0 0d 0e 06 04 0d 0e 10 0d 4d 4f 56 20 52 33 2c 52 |........MOV R3,R| 000018f0 31 0d 0e 1a 0d 4d 4f 56 20 52 36 2c 23 30 0d 0e |1....MOV R6,#0..| 00001900 24 13 2e 6c 6f 6f 70 5f 67 65 74 5f 65 6e 64 32 |$..loop_get_end2| 00001910 42 0d 0e 2e 15 20 20 4c 44 52 42 20 52 34 2c 5b |B.... LDRB R4,[| 00001920 52 33 5d 2c 23 31 0d 0e 38 12 20 20 41 44 44 20 |R3],#1..8. ADD | 00001930 52 36 2c 52 36 2c 23 31 0d 0e 42 10 20 20 43 4d |R6,R6,#1..B. CM| 00001940 50 20 52 34 2c 23 31 30 0d 0e 4c 16 42 4e 45 20 |P R4,#10..L.BNE | 00001950 6c 6f 6f 70 5f 67 65 74 5f 65 6e 64 32 42 0d 0e |loop_get_end2B..| 00001960 56 04 0d 0e 60 42 5c a9 47 54 48 20 ca 20 4f 50 |V...`B\.GTH . OP| 00001970 45 52 41 4e 44 20 31 20 49 53 20 52 45 54 55 52 |ERAND 1 IS RETUR| 00001980 4e 45 44 20 49 4e 20 52 35 2c 20 a9 47 54 48 20 |NED IN R5, .GTH | 00001990 ca 20 4f 50 45 52 41 4e 44 20 32 20 49 53 20 49 |. OPERAND 2 IS I| 000019a0 4e 20 52 36 0d 0e 6a 04 0d 0e 74 31 41 44 44 20 |N R6..j...t1ADD | 000019b0 52 37 2c 52 35 2c 52 36 20 20 20 20 20 20 20 20 |R7,R5,R6 | 000019c0 20 20 20 20 20 5c 43 4f 4e 54 41 49 4e 53 20 b8 | \CONTAINS .| 000019d0 54 41 4c 20 a9 47 54 48 53 0d 0e 7e 04 0d 0e 88 |TAL .GTHS..~....| 000019e0 2b 5c 52 45 47 49 53 54 45 52 53 20 41 56 41 49 |+\REGISTERS AVAI| 000019f0 4c 41 42 4c 45 20 3d 20 52 33 2c 52 34 2c 52 38 |LABLE = R3,R4,R8| 00001a00 2d 52 31 32 2c 52 31 34 0d 0e 92 04 0d 0e 9c 1e |-R12,R14........| 00001a10 5c 73 74 72 75 63 74 75 72 65 20 46 6f 72 2e 2e |\structure For..| 00001a20 6e 65 78 74 20 6c 6f 6f 70 2d 0d 0e a6 04 0d 0e |next loop-......| 00001a30 b0 0d 4d 4f 56 20 52 33 2c 23 30 0d 0e ba 0d 4d |..MOV R3,#0....M| 00001a40 4f 56 20 52 34 2c 52 32 0d 0e c4 1f 53 55 42 20 |OV R4,R2....SUB | 00001a50 52 31 34 2c 52 37 2c 23 31 20 5c 4c 4f 4f 50 20 |R14,R7,#1 \LOOP | 00001a60 43 4f 55 4e 54 45 52 0d 0e ce 11 2e 66 6f 72 5f |COUNTER.....for_| 00001a70 6c 6f 6f 70 69 66 79 31 0d 0e d8 15 20 20 53 54 |loopify1.... ST| 00001a80 52 42 20 52 33 2c 5b 52 34 5d 2c 23 31 0d 0e e2 |RB R3,[R4],#1...| 00001a90 15 20 20 53 55 42 53 20 52 31 34 2c 52 31 34 2c |. SUBS R14,R14,| 00001aa0 23 31 0d 0e ec 14 42 4e 45 20 66 6f 72 5f 6c 6f |#1....BNE for_lo| 00001ab0 6f 70 69 66 79 31 0d 0e f6 0e 4d 4f 56 20 52 33 |opify1....MOV R3| 00001ac0 2c 23 31 30 0d 0f 00 10 53 55 42 20 52 34 2c 52 |,#10....SUB R4,R| 00001ad0 34 2c 23 31 0d 0f 0a 10 53 54 52 42 20 52 33 2c |4,#1....STRB R3,| 00001ae0 5b 52 34 5d 0d 0f 14 10 41 44 44 20 52 34 2c 52 |[R4]....ADD R4,R| 00001af0 34 2c 23 31 0d 0f 1e 04 0d 0f 28 26 53 55 42 20 |4,#1......(&SUB | 00001b00 52 31 31 2c 52 36 2c 23 32 20 20 20 5c 4c 4f 4f |R11,R6,#2 \LOO| 00001b10 50 20 43 4f 55 4e 54 45 52 20 28 4a 25 29 0d 0f |P COUNTER (J%)..| 00001b20 32 11 2e 66 6f 72 5f 6c 6f 6f 70 69 66 79 32 0d |2..for_loopify2.| 00001b30 0f 3c 12 20 20 4d 4f 56 20 63 61 72 72 79 2c 23 |.<. MOV carry,#| 00001b40 30 0d 0f 46 21 20 20 4c 44 52 42 20 52 33 2c 5b |0..F! LDRB R3,[| 00001b50 52 31 2c 52 31 31 5d 20 20 5c 47 25 3d 42 25 3f |R1,R11] \G%=B%?| 00001b60 4a 25 0d 0f 50 13 20 20 41 44 44 20 52 34 2c 52 |J%..P. ADD R4,R| 00001b70 32 2c 52 31 31 0d 0f 5a 1f 20 20 41 44 44 20 52 |2,R11..Z. ADD R| 00001b80 34 2c 52 34 2c 23 31 20 20 5c 56 25 3d 44 25 2b |4,R4,#1 \V%=D%+| 00001b90 4a 25 2b 31 0d 0f 64 26 20 20 53 55 42 20 52 31 |J%+1..d& SUB R1| 00001ba0 30 2c 52 35 2c 23 32 20 5c 4c 4f 4f 50 20 43 4f |0,R5,#2 \LOOP CO| 00001bb0 55 4e 54 45 52 20 28 4c 25 29 0d 0f 6e 13 20 20 |UNTER (L%)..n. | 00001bc0 2e 66 6f 72 5f 6c 6f 6f 70 69 66 79 33 0d 0f 78 |.for_loopify3..x| 00001bd0 22 20 20 20 20 4c 44 52 42 20 52 39 2c 5b 52 30 |" LDRB R9,[R0| 00001be0 2c 52 31 30 5d 20 5c 48 25 3d 41 25 3f 4c 25 0d |,R10] \H%=A%?L%.| 00001bf0 0f 82 15 20 20 20 20 4d 55 4c 20 52 31 34 2c 52 |... MUL R14,R| 00001c00 33 2c 52 39 0d 0f 8c 19 20 20 20 20 41 44 44 20 |3,R9.... ADD | 00001c10 52 31 34 2c 52 31 34 2c 63 61 72 72 79 0d 0f 96 |R14,R14,carry...| 00001c20 17 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c |. STMFD R13!,| 00001c30 7b 52 38 7d 0d 0f a0 18 20 20 20 20 4c 44 52 42 |{R8}.... LDRB| 00001c40 20 52 38 2c 5b 52 34 2c 52 31 30 5d 0d 0f aa 16 | R8,[R4,R10]....| 00001c50 20 20 20 20 41 44 44 20 52 31 34 2c 52 31 34 2c | ADD R14,R14,| 00001c60 52 38 0d 0f b4 04 0d 0f be 20 20 20 20 20 5c 41 |R8....... \A| 00001c70 53 53 45 4d 42 4c 45 20 83 20 80 20 81 20 46 55 |SSEMBLE . . . FU| 00001c80 4e 43 54 49 4f 4e 0d 0f c8 1a 20 20 20 20 53 54 |NCTION.... ST| 00001c90 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 36 7d |MFD R13!,{R0-R6}| 00001ca0 0d 0f d2 12 20 20 20 20 4d 4f 56 20 52 30 2c 52 |.... MOV R0,R| 00001cb0 31 34 0d 0f dc 12 20 20 20 20 4d 4f 56 20 52 31 |14.... MOV R1| 00001cc0 2c 23 31 30 0d 0f e6 17 20 20 20 20 80 53 20 52 |,#10.... .S R| 00001cd0 36 2c 52 30 2c 23 31 3c 3c 33 31 0d 0f f0 16 20 |6,R0,#1<<31.... | 00001ce0 20 20 20 52 53 42 4d 49 20 52 30 2c 52 30 2c 23 | RSBMI R0,R0,#| 00001cf0 30 0d 0f fa 12 20 20 20 20 82 20 52 35 2c 52 36 |0.... . R5,R6| 00001d00 2c 52 31 0d 10 04 11 20 20 20 20 43 4d 50 20 52 |,R1.... CMP R| 00001d10 31 2c 23 30 0d 10 0e 16 20 20 20 20 52 53 42 4d |1,#0.... RSBM| 00001d20 49 20 52 31 2c 52 31 2c 23 30 0d 10 18 04 0d 10 |I R1,R1,#0......| 00001d30 22 11 20 20 20 20 4d 4f 56 20 52 32 2c 23 30 0d |". MOV R2,#0.| 00001d40 10 2c 11 20 20 20 20 4d 4f 56 20 52 33 2c 23 30 |.,. MOV R3,#0| 00001d50 0d 10 36 15 20 20 20 20 4d 4f 56 20 52 34 2c 23 |..6. MOV R4,#| 00001d60 31 3c 3c 33 31 0d 10 40 04 0d 10 4a 16 20 20 20 |1<<31..@...J. | 00001d70 20 2e 64 69 76 69 73 69 6f 6e 5f 6c 6f 6f 70 0d | .division_loop.| 00001d80 10 54 18 20 20 20 20 4d 4f 56 53 20 52 30 2c 52 |.T. MOVS R0,R| 00001d90 30 2c 41 53 4c 23 31 0d 10 5e 14 20 20 20 20 41 |0,ASL#1..^. A| 00001da0 44 43 20 52 32 2c 52 32 2c 52 32 0d 10 68 11 20 |DC R2,R2,R2..h. | 00001db0 20 20 20 43 4d 50 20 52 32 2c 52 31 0d 10 72 16 | CMP R2,R1..r.| 00001dc0 20 20 20 20 53 55 42 47 45 20 52 32 2c 52 32 2c | SUBGE R2,R2,| 00001dd0 52 31 0d 10 7c 15 20 20 20 20 84 52 47 45 20 52 |R1..|. .RGE R| 00001de0 33 2c 52 33 2c 52 34 0d 10 86 18 20 20 20 20 4d |3,R3,R4.... M| 00001df0 4f 56 53 20 52 34 2c 52 34 2c 4c 53 52 23 31 0d |OVS R4,R4,LSR#1.| 00001e00 10 90 19 20 20 20 20 42 4e 45 20 64 69 76 69 73 |... BNE divis| 00001e10 69 6f 6e 5f 6c 6f 6f 70 0d 10 9a 04 0d 10 a4 11 |ion_loop........| 00001e20 20 20 20 20 43 4d 50 20 52 35 2c 23 30 0d 10 ae | CMP R5,#0...| 00001e30 16 20 20 20 20 52 53 42 4d 49 20 52 33 2c 52 33 |. RSBMI R3,R3| 00001e40 2c 23 30 0d 10 b8 11 20 20 20 20 43 4d 50 20 52 |,#0.... CMP R| 00001e50 36 2c 23 30 0d 10 c2 16 20 20 20 20 52 53 42 4d |6,#0.... RSBM| 00001e60 49 20 52 32 2c 52 32 2c 23 30 0d 10 cc 04 0d 10 |I R2,R2,#0......| 00001e70 d6 16 20 20 20 20 53 54 52 20 52 33 2c 64 69 76 |.. STR R3,div| 00001e80 72 65 73 32 0d 10 e0 16 20 20 20 20 53 54 52 20 |res2.... STR | 00001e90 52 32 2c 6d 6f 64 72 65 73 32 0d 10 ea 04 0d 10 |R2,modres2......| 00001ea0 f4 1a 20 20 20 20 4c 44 4d 46 44 20 52 31 33 21 |.. LDMFD R13!| 00001eb0 2c 7b 52 30 2d 52 36 7d 0d 10 fe 04 0d 11 08 16 |,{R0-R6}........| 00001ec0 20 20 20 20 4c 44 52 20 52 38 2c 6d 6f 64 72 65 | LDR R8,modre| 00001ed0 73 32 0d 11 12 27 20 20 20 20 53 54 52 42 20 52 |s2...' STRB R| 00001ee0 38 2c 5b 52 34 2c 52 31 30 5d 20 20 20 20 20 5c |8,[R4,R10] \| 00001ef0 e3 4d 45 52 4c 59 20 52 38 0d 11 1c 17 20 20 20 |.MERLY R8.... | 00001f00 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 38 7d | LDMFD R13!,{R8}| 00001f10 0d 11 26 16 20 20 20 20 4c 44 52 20 52 38 2c 64 |..&. LDR R8,d| 00001f20 69 76 72 65 73 32 0d 11 30 17 20 20 20 20 53 55 |ivres2..0. SU| 00001f30 42 53 20 52 31 30 2c 52 31 30 2c 23 31 0d 11 3a |BS R10,R10,#1..:| 00001f40 16 20 20 42 4e 45 20 66 6f 72 5f 6c 6f 6f 70 69 |. BNE for_loopi| 00001f50 66 79 33 0d 11 44 16 20 20 53 54 52 42 20 52 38 |fy3..D. STRB R8| 00001f60 2c 5b 52 34 2c 52 31 30 5d 0d 11 4e 15 20 20 53 |,[R4,R10]..N. S| 00001f70 55 42 53 20 52 31 31 2c 52 31 31 2c 23 31 0d 11 |UBS R11,R11,#1..| 00001f80 58 14 42 4e 45 20 66 6f 72 5f 6c 6f 6f 70 69 66 |X.BNE for_loopif| 00001f90 79 32 0d 11 62 04 0d 11 6c 17 42 4c 20 52 65 6d |y2..b...l.BL Rem| 00001fa0 6f 76 65 5f 4c 65 61 64 69 6e 67 30 73 0d 11 76 |ove_Leading0s..v| 00001fb0 04 0d 11 80 17 4c 44 4d 46 44 20 52 31 33 21 2c |.....LDMFD R13!,| 00001fc0 7b 52 30 2d 52 31 32 7d 0d 11 8a 13 4c 44 4d 46 |{R0-R12}....LDMF| 00001fd0 44 20 52 31 33 21 2c 7b 50 43 7d 0d 11 94 04 0d |D R13!,{PC}.....| 00001fe0 11 9e 0c 2e 64 69 76 72 65 73 32 0d 11 a8 0a 45 |....divres2....E| 00001ff0 51 55 44 20 30 0d 11 b2 0c 2e 6d 6f 64 72 65 73 |QUD 0.....modres| 00002000 32 0d 11 bc 0a 45 51 55 44 20 30 0d 11 c6 04 0d |2....EQUD 0.....| 00002010 11 d0 04 0d 11 da 47 5c 50 55 52 50 4f 53 45 20 |......G\PURPOSE | 00002020 2d 20 52 45 2d 57 52 49 54 54 45 4e 20 4c 4f 57 |- RE-WRITTEN LOW| 00002030 2d 4c 45 56 45 4c 20 81 49 53 49 4f 4e 20 52 4f |-LEVEL .ISION RO| 00002040 55 54 49 4e 45 20 55 53 49 4e 47 20 49 4e 46 41 |UTINE USING INFA| 00002050 20 41 4c 47 4f 52 49 54 48 4d 0d 11 e4 13 2e 62 | ALGORITHM.....b| 00002060 65 67 69 6e 5f 64 69 76 69 73 69 6f 6e 0d 11 ee |egin_division...| 00002070 14 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 |.STMFD R13!,{R14| 00002080 7d 0d 11 f8 17 53 54 4d 46 44 20 52 31 33 21 2c |}....STMFD R13!,| 00002090 7b 52 30 2d 52 31 32 7d 0d 12 02 04 0d 12 0c 14 |{R0-R12}........| 000020a0 42 4c 20 67 65 74 5f 61 64 64 72 65 73 73 65 73 |BL get_addresses| 000020b0 0d 12 16 04 0d 12 20 2f 5c 41 20 bb 55 45 20 ca |...... /\A .UE .| 000020c0 20 54 45 4e 20 43 4f 52 52 45 53 50 4f 4e 44 53 | TEN CORRESPONDS| 000020d0 20 b8 20 54 45 52 4d 49 4e 41 54 49 4e 47 20 42 | . TERMINATING B| 000020e0 59 54 45 0d 12 2a 04 0d 12 34 24 5c 66 69 6e 64 |YTE..*...4$\find| 000020f0 20 65 6e 64 20 6f 66 20 6f 70 65 72 61 6e 64 31 | end of operand1| 00002100 20 80 20 6f 70 65 72 61 6e 64 32 0d 12 3e 04 0d | . operand2..>..| 00002110 12 48 0d 4d 4f 56 20 52 33 2c 52 30 0d 12 52 0d |.H.MOV R3,R0..R.| 00002120 4d 4f 56 20 52 35 2c 23 30 0d 12 5c 14 2e 6c 6f |MOV R5,#0..\..lo| 00002130 6f 70 5f 67 65 74 5f 65 6e 64 31 62 43 0d 12 66 |op_get_end1bC..f| 00002140 15 20 20 4c 44 52 42 20 52 34 2c 5b 52 33 5d 2c |. LDRB R4,[R3],| 00002150 23 31 0d 12 70 12 20 20 41 44 44 20 52 35 2c 52 |#1..p. ADD R5,R| 00002160 35 2c 23 31 0d 12 7a 10 20 20 43 4d 50 20 52 34 |5,#1..z. CMP R4| 00002170 2c 23 31 30 0d 12 84 17 42 4e 45 20 6c 6f 6f 70 |,#10....BNE loop| 00002180 5f 67 65 74 5f 65 6e 64 31 62 43 0d 12 8e 10 41 |_get_end1bC....A| 00002190 44 44 20 52 35 2c 52 35 2c 23 31 0d 12 98 04 0d |DD R5,R5,#1.....| 000021a0 12 a2 0d 4d 4f 56 20 52 33 2c 52 31 0d 12 ac 0d |...MOV R3,R1....| 000021b0 4d 4f 56 20 52 36 2c 23 30 0d 12 b6 14 2e 6c 6f |MOV R6,#0.....lo| 000021c0 6f 70 5f 67 65 74 5f 65 6e 64 32 62 43 0d 12 c0 |op_get_end2bC...| 000021d0 15 20 20 4c 44 52 42 20 52 34 2c 5b 52 33 5d 2c |. LDRB R4,[R3],| 000021e0 23 31 0d 12 ca 12 20 20 41 44 44 20 52 36 2c 52 |#1.... ADD R6,R| 000021f0 36 2c 23 31 0d 12 d4 10 20 20 43 4d 50 20 52 34 |6,#1.... CMP R4| 00002200 2c 23 31 30 0d 12 de 17 42 4e 45 20 6c 6f 6f 70 |,#10....BNE loop| 00002210 5f 67 65 74 5f 65 6e 64 32 62 43 0d 12 e8 10 53 |_get_end2bC....S| 00002220 55 42 20 52 36 2c 52 36 2c 23 31 0d 12 f2 04 0d |UB R6,R6,#1.....| 00002230 12 fc 42 5c a9 47 54 48 20 ca 20 4f 50 45 52 41 |..B\.GTH . OPERA| 00002240 4e 44 20 31 20 49 53 20 52 45 54 55 52 4e 45 44 |ND 1 IS RETURNED| 00002250 20 49 4e 20 52 35 2c 20 a9 47 54 48 20 ca 20 4f | IN R5, .GTH . O| 00002260 50 45 52 41 4e 44 20 32 20 49 53 20 49 4e 20 52 |PERAND 2 IS IN R| 00002270 36 0d 13 06 04 0d 13 10 33 5c 52 45 47 49 53 54 |6.......3\REGIST| 00002280 45 52 53 20 41 56 41 49 4c 41 42 4c 45 20 52 33 |ERS AVAILABLE R3| 00002290 2c 52 34 2c 52 38 2d 52 31 32 2c 52 31 34 20 2d |,R4,R8-R12,R14 -| 000022a0 20 63 61 72 72 79 3d 38 0d 13 1a 04 0d 13 24 1d | carry=8......$.| 000022b0 4d 4f 56 20 52 37 2c 23 30 20 20 20 20 20 20 20 |MOV R7,#0 | 000022c0 20 20 20 20 20 20 5c 4a 25 0d 13 2e 12 2e 66 6f | \J%.....fo| 000022d0 72 5f 6c 6f 6f 70 69 66 79 31 62 0d 13 38 1d 20 |r_loopify1b..8. | 000022e0 20 41 44 44 20 52 33 2c 52 30 2c 52 37 20 20 20 | ADD R3,R0,R7 | 000022f0 20 20 20 20 20 5c 57 25 0d 13 42 1d 20 20 4d 56 | \W%..B. MV| 00002300 4e 20 52 34 2c 23 30 20 20 20 20 20 20 20 20 20 |N R4,#0 | 00002310 20 20 5c 56 25 0d 13 4c 04 0d 13 56 0e 20 20 2e | \V%..L...V. .| 00002320 72 65 70 65 61 74 31 0d 13 60 14 20 20 20 20 41 |repeat1..`. A| 00002330 44 44 20 52 34 2c 52 34 2c 23 31 0d 13 6a 14 20 |DD R4,R4,#1..j. | 00002340 20 20 20 4d 4f 56 20 63 61 72 72 79 2c 23 31 0d | MOV carry,#1.| 00002350 13 74 1c 20 20 20 20 53 55 42 20 52 39 2c 52 36 |.t. SUB R9,R6| 00002360 2c 23 31 20 20 20 20 20 5c 4c 25 0d 13 7e 16 20 |,#1 \L%..~. | 00002370 20 20 20 2e 66 6f 72 5f 6c 6f 6f 70 69 66 79 32 | .for_loopify2| 00002380 62 0d 13 88 1c 20 20 20 20 20 20 4d 4f 56 20 52 |b.... MOV R| 00002390 31 30 2c 23 30 20 20 20 20 20 5c 51 25 0d 13 92 |10,#0 \Q%...| 000023a0 13 20 20 20 20 20 20 43 4d 50 20 52 39 2c 23 30 |. CMP R9,#0| 000023b0 0d 13 9c 1c 20 20 20 20 20 20 4c 44 52 47 45 42 |.... LDRGEB| 000023c0 20 52 31 30 2c 5b 52 31 2c 52 39 5d 0d 13 a6 04 | R10,[R1,R9]....| 000023d0 0d 13 b0 1a 20 20 20 20 20 20 4c 44 52 42 20 52 |.... LDRB R| 000023e0 31 34 2c 5b 52 33 2c 52 39 5d 0d 13 ba 19 20 20 |14,[R3,R9].... | 000023f0 20 20 20 20 53 55 42 20 52 31 30 2c 52 31 34 2c | SUB R10,R14,| 00002400 52 31 30 0d 13 c4 1b 20 20 20 20 20 20 41 44 44 |R10.... ADD| 00002410 20 52 31 30 2c 52 31 30 2c 63 61 72 72 79 0d 13 | R10,R10,carry..| 00002420 ce 18 20 20 20 20 20 20 41 44 44 20 52 31 30 2c |.. ADD R10,| 00002430 52 31 30 2c 23 39 0d 13 d8 04 0d 13 e2 22 20 20 |R10,#9......." | 00002440 20 20 20 20 5c 41 53 53 45 4d 42 4c 45 20 83 20 | \ASSEMBLE . | 00002450 80 20 81 20 46 55 4e 43 54 49 4f 4e 0d 13 ec 1c |. . FUNCTION....| 00002460 20 20 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 | STMFD R13!| 00002470 2c 7b 52 30 2d 52 36 7d 0d 13 f6 14 20 20 20 20 |,{R0-R6}.... | 00002480 20 20 4d 4f 56 20 52 30 2c 52 31 30 0d 14 00 14 | MOV R0,R10....| 00002490 20 20 20 20 20 20 4d 4f 56 20 52 31 2c 23 31 30 | MOV R1,#10| 000024a0 0d 14 0a 19 20 20 20 20 20 20 80 53 20 52 36 2c |.... .S R6,| 000024b0 52 30 2c 23 31 3c 3c 33 31 0d 14 14 18 20 20 20 |R0,#1<<31.... | 000024c0 20 20 20 52 53 42 4d 49 20 52 30 2c 52 30 2c 23 | RSBMI R0,R0,#| 000024d0 30 0d 14 1e 14 20 20 20 20 20 20 82 20 52 35 2c |0.... . R5,| 000024e0 52 36 2c 52 31 0d 14 28 13 20 20 20 20 20 20 43 |R6,R1..(. C| 000024f0 4d 50 20 52 31 2c 23 30 0d 14 32 18 20 20 20 20 |MP R1,#0..2. | 00002500 20 20 52 53 42 4d 49 20 52 31 2c 52 31 2c 23 30 | RSBMI R1,R1,#0| 00002510 0d 14 3c 04 0d 14 46 13 20 20 20 20 20 20 4d 4f |..<...F. MO| 00002520 56 20 52 32 2c 23 30 0d 14 50 13 20 20 20 20 20 |V R2,#0..P. | 00002530 20 4d 4f 56 20 52 33 2c 23 30 0d 14 5a 17 20 20 | MOV R3,#0..Z. | 00002540 20 20 20 20 4d 4f 56 20 52 34 2c 23 31 3c 3c 33 | MOV R4,#1<<3| 00002550 31 0d 14 64 04 0d 14 6e 19 20 20 20 20 20 20 2e |1..d...n. .| 00002560 64 69 76 69 73 69 6f 6e 5f 6c 6f 6f 70 32 0d 14 |division_loop2..| 00002570 78 1a 20 20 20 20 20 20 4d 4f 56 53 20 52 30 2c |x. MOVS R0,| 00002580 52 30 2c 41 53 4c 23 31 0d 14 82 16 20 20 20 20 |R0,ASL#1.... | 00002590 20 20 41 44 43 20 52 32 2c 52 32 2c 52 32 0d 14 | ADC R2,R2,R2..| 000025a0 8c 13 20 20 20 20 20 20 43 4d 50 20 52 32 2c 52 |.. CMP R2,R| 000025b0 31 0d 14 96 18 20 20 20 20 20 20 53 55 42 47 45 |1.... SUBGE| 000025c0 20 52 32 2c 52 32 2c 52 31 0d 14 a0 17 20 20 20 | R2,R2,R1.... | 000025d0 20 20 20 84 52 47 45 20 52 33 2c 52 33 2c 52 34 | .RGE R3,R3,R4| 000025e0 0d 14 aa 1a 20 20 20 20 20 20 4d 4f 56 53 20 52 |.... MOVS R| 000025f0 34 2c 52 34 2c 4c 53 52 23 31 0d 14 b4 1c 20 20 |4,R4,LSR#1.... | 00002600 20 20 20 20 42 4e 45 20 64 69 76 69 73 69 6f 6e | BNE division| 00002610 5f 6c 6f 6f 70 32 0d 14 be 04 0d 14 c8 13 20 20 |_loop2........ | 00002620 20 20 20 20 43 4d 50 20 52 35 2c 23 30 0d 14 d2 | CMP R5,#0...| 00002630 18 20 20 20 20 20 20 52 53 42 4d 49 20 52 33 2c |. RSBMI R3,| 00002640 52 33 2c 23 30 0d 14 dc 13 20 20 20 20 20 20 43 |R3,#0.... C| 00002650 4d 50 20 52 36 2c 23 30 0d 14 e6 18 20 20 20 20 |MP R6,#0.... | 00002660 20 20 52 53 42 4d 49 20 52 32 2c 52 32 2c 23 30 | RSBMI R2,R2,#0| 00002670 0d 14 f0 04 0d 14 fa 18 20 20 20 20 20 20 53 54 |........ ST| 00002680 52 20 52 33 2c 64 69 76 72 65 73 33 0d 15 04 18 |R R3,divres3....| 00002690 20 20 20 20 20 20 53 54 52 20 52 32 2c 6d 6f 64 | STR R2,mod| 000026a0 72 65 73 33 0d 15 0e 04 0d 15 18 1c 20 20 20 20 |res3........ | 000026b0 20 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 30 | LDMFD R13!,{R0| 000026c0 2d 52 36 7d 0d 15 22 04 0d 15 2c 19 20 20 20 20 |-R6}.."...,. | 000026d0 20 20 4c 44 52 20 52 31 34 2c 6d 6f 64 72 65 73 | LDR R14,modres| 000026e0 33 0d 15 36 1a 20 20 20 20 20 20 53 54 52 42 20 |3..6. STRB | 000026f0 52 31 34 2c 5b 52 33 2c 52 39 5d 0d 15 40 18 20 |R14,[R3,R9]..@. | 00002700 20 20 20 20 20 4c 44 52 20 52 38 2c 64 69 76 72 | LDR R8,divr| 00002710 65 73 33 0d 15 4a 16 20 20 20 20 20 20 53 55 42 |es3..J. SUB| 00002720 20 52 39 2c 52 39 2c 23 31 0d 15 54 13 20 20 20 | R9,R9,#1..T. | 00002730 20 20 20 43 4d 4e 20 52 39 2c 52 37 0d 15 5e 04 | CMN R9,R7..^.| 00002740 0d 15 68 04 0d 15 72 19 20 20 20 20 42 4e 45 20 |..h...r. BNE | 00002750 66 6f 72 5f 6c 6f 6f 70 69 66 79 32 62 0d 15 7c |for_loopify2b..|| 00002760 14 20 20 20 20 43 4d 50 20 63 61 72 72 79 2c 23 |. CMP carry,#| 00002770 30 0d 15 86 11 20 20 42 4e 45 20 72 65 70 65 61 |0.... BNE repea| 00002780 74 31 0d 15 90 1a 20 20 53 55 42 20 52 39 2c 52 |t1.... SUB R9,R| 00002790 36 2c 23 31 20 20 20 20 20 5c 4c 25 0d 15 9a 16 |6,#1 \L%....| 000027a0 20 20 20 20 2e 66 6f 72 5f 6c 6f 6f 70 69 66 79 | .for_loopify| 000027b0 33 62 0d 15 a4 1a 20 20 20 20 4d 4f 56 20 52 31 |3b.... MOV R1| 000027c0 30 2c 23 30 20 20 20 20 20 5c 51 25 0d 15 ae 11 |0,#0 \Q%....| 000027d0 20 20 20 20 43 4d 50 20 52 39 2c 23 30 0d 15 b8 | CMP R9,#0...| 000027e0 1a 20 20 20 20 4c 44 52 47 45 42 20 52 31 30 2c |. LDRGEB R10,| 000027f0 5b 52 31 2c 52 39 5d 0d 15 c2 18 20 20 20 20 4c |[R1,R9].... L| 00002800 44 52 42 20 52 31 34 2c 5b 52 33 2c 52 39 5d 0d |DRB R14,[R3,R9].| 00002810 15 cc 17 20 20 20 20 41 44 44 20 52 31 30 2c 52 |... ADD R10,R| 00002820 31 30 2c 52 31 34 0d 15 d6 19 20 20 20 20 41 44 |10,R14.... AD| 00002830 44 20 52 31 30 2c 52 31 30 2c 63 61 72 72 79 0d |D R10,R10,carry.| 00002840 15 e0 04 0d 15 ea 20 20 20 20 20 5c 41 53 53 45 |...... \ASSE| 00002850 4d 42 4c 45 20 83 20 80 20 81 20 46 55 4e 43 54 |MBLE . . . FUNCT| 00002860 49 4f 4e 0d 15 f4 1a 20 20 20 20 53 54 4d 46 44 |ION.... STMFD| 00002870 20 52 31 33 21 2c 7b 52 30 2d 52 36 7d 0d 15 fe | R13!,{R0-R6}...| 00002880 12 20 20 20 20 4d 4f 56 20 52 30 2c 52 31 30 0d |. MOV R0,R10.| 00002890 16 08 12 20 20 20 20 4d 4f 56 20 52 31 2c 23 31 |... MOV R1,#1| 000028a0 30 0d 16 12 17 20 20 20 20 80 53 20 52 36 2c 52 |0.... .S R6,R| 000028b0 30 2c 23 31 3c 3c 33 31 0d 16 1c 16 20 20 20 20 |0,#1<<31.... | 000028c0 52 53 42 4d 49 20 52 30 2c 52 30 2c 23 30 0d 16 |RSBMI R0,R0,#0..| 000028d0 26 12 20 20 20 20 82 20 52 35 2c 52 36 2c 52 31 |&. . R5,R6,R1| 000028e0 0d 16 30 11 20 20 20 20 43 4d 50 20 52 31 2c 23 |..0. CMP R1,#| 000028f0 30 0d 16 3a 16 20 20 20 20 52 53 42 4d 49 20 52 |0..:. RSBMI R| 00002900 31 2c 52 31 2c 23 30 0d 16 44 04 0d 16 4e 11 20 |1,R1,#0..D...N. | 00002910 20 20 20 4d 4f 56 20 52 32 2c 23 30 0d 16 58 11 | MOV R2,#0..X.| 00002920 20 20 20 20 4d 4f 56 20 52 33 2c 23 30 0d 16 62 | MOV R3,#0..b| 00002930 15 20 20 20 20 4d 4f 56 20 52 34 2c 23 31 3c 3c |. MOV R4,#1<<| 00002940 33 31 0d 16 6c 04 0d 16 76 17 20 20 20 20 2e 64 |31..l...v. .d| 00002950 69 76 69 73 69 6f 6e 5f 6c 6f 6f 70 33 0d 16 80 |ivision_loop3...| 00002960 18 20 20 20 20 4d 4f 56 53 20 52 30 2c 52 30 2c |. MOVS R0,R0,| 00002970 41 53 4c 23 31 0d 16 8a 14 20 20 20 20 41 44 43 |ASL#1.... ADC| 00002980 20 52 32 2c 52 32 2c 52 32 0d 16 94 11 20 20 20 | R2,R2,R2.... | 00002990 20 43 4d 50 20 52 32 2c 52 31 0d 16 9e 16 20 20 | CMP R2,R1.... | 000029a0 20 20 53 55 42 47 45 20 52 32 2c 52 32 2c 52 31 | SUBGE R2,R2,R1| 000029b0 0d 16 a8 15 20 20 20 20 84 52 47 45 20 52 33 2c |.... .RGE R3,| 000029c0 52 33 2c 52 34 0d 16 b2 18 20 20 20 20 4d 4f 56 |R3,R4.... MOV| 000029d0 53 20 52 34 2c 52 34 2c 4c 53 52 23 31 0d 16 bc |S R4,R4,LSR#1...| 000029e0 1a 20 20 20 20 42 4e 45 20 64 69 76 69 73 69 6f |. BNE divisio| 000029f0 6e 5f 6c 6f 6f 70 33 0d 16 c6 04 0d 16 d0 11 20 |n_loop3........ | 00002a00 20 20 20 43 4d 50 20 52 35 2c 23 30 0d 16 da 16 | CMP R5,#0....| 00002a10 20 20 20 20 52 53 42 4d 49 20 52 33 2c 52 33 2c | RSBMI R3,R3,| 00002a20 23 30 0d 16 e4 11 20 20 20 20 43 4d 50 20 52 36 |#0.... CMP R6| 00002a30 2c 23 30 0d 16 ee 16 20 20 20 20 52 53 42 4d 49 |,#0.... RSBMI| 00002a40 20 52 32 2c 52 32 2c 23 30 0d 16 f8 04 0d 17 02 | R2,R2,#0.......| 00002a50 16 20 20 20 20 53 54 52 20 52 33 2c 64 69 76 72 |. STR R3,divr| 00002a60 65 73 33 0d 17 0c 16 20 20 20 20 53 54 52 20 52 |es3.... STR R| 00002a70 32 2c 6d 6f 64 72 65 73 33 0d 17 16 04 0d 17 20 |2,modres3...... | 00002a80 1a 20 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c |. LDMFD R13!,| 00002a90 7b 52 30 2d 52 36 7d 0d 17 2a 04 0d 17 34 17 20 |{R0-R6}..*...4. | 00002aa0 20 20 20 4c 44 52 20 52 31 34 2c 6d 6f 64 72 65 | LDR R14,modre| 00002ab0 73 33 0d 17 3e 18 20 20 20 20 53 54 52 42 20 52 |s3..>. STRB R| 00002ac0 31 34 2c 5b 52 33 2c 52 39 5d 0d 17 48 16 20 20 |14,[R3,R9]..H. | 00002ad0 20 20 4c 44 52 20 52 38 2c 64 69 76 72 65 73 33 | LDR R8,divres3| 00002ae0 0d 17 52 14 20 20 20 20 53 55 42 20 52 39 2c 52 |..R. SUB R9,R| 00002af0 39 2c 23 31 0d 17 5c 11 20 20 20 20 43 4d 4e 20 |9,#1..\. CMN | 00002b00 52 39 2c 52 37 0d 17 66 17 20 20 42 4e 45 20 66 |R9,R7..f. BNE f| 00002b10 6f 72 5f 6c 6f 6f 70 69 66 79 33 62 0d 17 70 15 |or_loopify3b..p.| 00002b20 20 20 53 54 52 42 20 52 34 2c 5b 52 32 2c 52 37 | STRB R4,[R2,R7| 00002b30 5d 0d 17 7a 12 20 20 41 44 44 20 52 37 2c 52 37 |]..z. ADD R7,R7| 00002b40 2c 23 31 0d 17 84 13 20 20 53 55 42 20 52 31 34 |,#1.... SUB R14| 00002b50 2c 52 35 2c 52 36 0d 17 8e 10 20 20 43 4d 50 20 |,R5,R6.... CMP | 00002b60 52 37 2c 52 31 34 0d 17 98 15 42 4c 54 20 66 6f |R7,R14....BLT fo| 00002b70 72 5f 6c 6f 6f 70 69 66 79 31 62 0d 17 a2 0f 4d |r_loopify1b....M| 00002b80 4f 56 20 52 31 34 2c 23 31 30 0d 17 ac 10 53 55 |OV R14,#10....SU| 00002b90 42 20 52 37 2c 52 37 2c 23 31 0d 17 b6 14 53 54 |B R7,R7,#1....ST| 00002ba0 52 42 20 52 31 34 2c 5b 52 32 2c 52 37 5d 0d 17 |RB R14,[R2,R7]..| 00002bb0 c0 04 0d 17 ca 17 42 4c 20 52 65 6d 6f 76 65 5f |......BL Remove_| 00002bc0 4c 65 61 64 69 6e 67 30 73 0d 17 d4 04 0d 17 de |Leading0s.......| 00002bd0 04 0d 17 e8 17 4c 44 4d 46 44 20 52 31 33 21 2c |.....LDMFD R13!,| 00002be0 7b 52 30 2d 52 31 32 7d 0d 17 f2 13 4c 44 4d 46 |{R0-R12}....LDMF| 00002bf0 44 20 52 31 33 21 2c 7b 50 43 7d 0d 17 fc 04 0d |D R13!,{PC}.....| 00002c00 18 06 04 0d 18 10 0c 2e 64 69 76 72 65 73 33 0d |........divres3.| 00002c10 18 1a 0a 45 51 55 44 20 30 0d 18 24 0c 2e 6d 6f |...EQUD 0..$..mo| 00002c20 64 72 65 73 33 0d 18 2e 0a 45 51 55 44 20 30 0d |dres3....EQUD 0.| 00002c30 18 38 04 0d 18 42 04 0d 18 4c 15 2e 52 65 6d 6f |.8...B...L..Remo| 00002c40 76 65 5f 4c 65 61 64 69 6e 67 30 73 0d 18 56 14 |ve_Leading0s..V.| 00002c50 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 7d |STMFD R13!,{R14}| 00002c60 0d 18 60 05 3a 0d 18 6a 0d 4d 4f 56 20 52 34 2c |..`.:..j.MOV R4,| 00002c70 23 30 0d 18 74 12 2e 6c 6f 6f 70 5f 72 65 6d 6f |#0..t..loop_remo| 00002c80 76 65 30 73 0d 18 7e 13 4c 44 52 42 20 52 35 2c |ve0s..~.LDRB R5,| 00002c90 5b 52 32 2c 52 34 5d 0d 18 88 0d 43 4d 50 20 52 |[R2,R4]....CMP R| 00002ca0 35 2c 23 30 0d 18 92 12 41 44 44 45 51 20 52 34 |5,#0....ADDEQ R4| 00002cb0 2c 52 34 2c 23 31 0d 18 9c 15 42 45 51 20 6c 6f |,R4,#1....BEQ lo| 00002cc0 6f 70 5f 72 65 6d 6f 76 65 30 73 0d 18 a6 04 0d |op_remove0s.....| 00002cd0 18 b0 11 41 44 52 20 52 36 2c 61 6e 73 77 65 72 |...ADR R6,answer| 00002ce0 0d 18 ba 0d 4d 4f 56 20 52 37 2c 23 30 0d 18 c4 |....MOV R7,#0...| 00002cf0 15 2e 6c 6f 6f 70 5f 73 77 61 70 5f 73 74 72 69 |..loop_swap_stri| 00002d00 6e 67 0d 18 ce 13 4c 44 52 42 20 52 35 2c 5b 52 |ng....LDRB R5,[R| 00002d10 32 2c 52 34 5d 0d 18 d8 13 53 54 52 42 20 52 35 |2,R4]....STRB R5| 00002d20 2c 5b 52 36 2c 52 37 5d 0d 18 e2 10 41 44 44 20 |,[R6,R7]....ADD | 00002d30 52 34 2c 52 34 2c 23 31 0d 18 ec 10 41 44 44 20 |R4,R4,#1....ADD | 00002d40 52 37 2c 52 37 2c 23 31 0d 18 f6 0e 43 4d 50 20 |R7,R7,#1....CMP | 00002d50 52 35 2c 23 31 30 0d 19 00 18 42 4e 45 20 6c 6f |R5,#10....BNE lo| 00002d60 6f 70 5f 73 77 61 70 5f 73 74 72 69 6e 67 0d 19 |op_swap_string..| 00002d70 0a 04 0d 19 14 04 0d 19 1e 05 3a 0d 19 28 13 4c |..........:..(.L| 00002d80 44 4d 46 44 20 52 31 33 21 2c 7b 50 43 7d 0d 19 |DMFD R13!,{PC}..| 00002d90 32 04 0d 19 3c 10 2e 61 64 64 72 65 73 73 5f 61 |2...<..address_a| 00002da0 6e 73 0d 19 46 14 53 54 4d 46 44 20 52 31 33 21 |ns..F.STMFD R13!| 00002db0 2c 7b 52 31 34 7d 0d 19 50 11 41 44 52 20 52 38 |,{R14}..P.ADR R8| 00002dc0 2c 61 6e 73 77 65 72 0d 19 5a 13 4c 44 4d 46 44 |,answer..Z.LDMFD| 00002dd0 20 52 31 33 21 2c 7b 50 43 7d 0d 19 64 0b 2e 61 | R13!,{PC}..d..a| 00002de0 6e 73 77 65 72 0d 19 6e 15 a4 42 79 74 65 73 28 |nswer..n..Bytes(| 00002df0 61 63 63 75 72 61 63 79 25 29 0d 19 78 04 0d 19 |accuracy%)..x...| 00002e00 82 04 0d 19 8c 12 2e 67 65 74 5f 61 64 64 72 65 |.......get_addre| 00002e10 73 73 65 73 0d 19 96 14 53 54 4d 46 44 20 52 31 |sses....STMFD R1| 00002e20 33 21 2c 7b 52 31 34 7d 0d 19 a0 13 41 44 52 20 |3!,{R14}....ADR | 00002e30 52 30 2c 6f 70 65 72 61 6e 64 31 0d 19 aa 0b 42 |R0,operand1....B| 00002e40 20 6e 65 78 74 31 0d 19 b4 0d 2e 6f 70 65 72 61 | next1.....opera| 00002e50 6e 64 31 0d 19 be 15 a4 42 79 74 65 73 28 61 63 |nd1.....Bytes(ac| 00002e60 63 75 72 61 63 79 25 29 0d 19 c8 0a 2e 6e 65 78 |curacy%).....nex| 00002e70 74 31 0d 19 d2 13 41 44 52 20 52 31 2c 6f 70 65 |t1....ADR R1,ope| 00002e80 72 61 6e 64 32 0d 19 dc 0b 42 20 6e 65 78 74 32 |rand2....B next2| 00002e90 0d 19 e6 0d 2e 6f 70 65 72 61 6e 64 32 0d 19 f0 |.....operand2...| 00002ea0 15 a4 42 79 74 65 73 28 61 63 63 75 72 61 63 79 |..Bytes(accuracy| 00002eb0 25 29 0d 19 fa 0a 2e 6e 65 78 74 32 0d 1a 04 11 |%).....next2....| 00002ec0 41 44 52 20 52 32 2c 72 65 73 75 6c 74 0d 1a 0e |ADR R2,result...| 00002ed0 0b 42 20 6e 65 78 74 33 0d 1a 18 0b 2e 72 65 73 |.B next3.....res| 00002ee0 75 6c 74 0d 1a 22 15 a4 42 79 74 65 73 28 61 63 |ult.."..Bytes(ac| 00002ef0 63 75 72 61 63 79 25 29 0d 1a 2c 0a 2e 6e 65 78 |curacy%)..,..nex| 00002f00 74 33 0d 1a 36 14 41 44 52 20 52 31 32 2c 65 5f |t3..6.ADR R12,e_| 00002f10 73 6f 5f 66 61 72 0d 1a 40 13 4c 44 4d 46 44 20 |so_far..@.LDMFD | 00002f20 52 31 33 21 2c 7b 50 43 7d 0d 1a 4a 0d 2e 65 5f |R13!,{PC}..J..e_| 00002f30 73 6f 5f 66 61 72 0d 1a 54 15 a4 42 79 74 65 73 |so_far..T..Bytes| 00002f40 28 61 63 63 75 72 61 63 79 25 29 0d 1a 5e 05 3a |(accuracy%)..^.:| 00002f50 0d 1a 68 05 3a 0d 1a 72 0b 2e 66 69 6c 6c 5f 65 |..h.:..r..fill_e| 00002f60 0d 1a 7c 14 53 54 4d 46 44 20 52 31 33 21 2c 7b |..|.STMFD R13!,{| 00002f70 52 31 34 7d 0d 1a 86 05 3a 0d 1a 90 0d 4d 4f 56 |R14}....:....MOV| 00002f80 20 52 35 2c 23 30 0d 1a 9a 0d 4d 4f 56 20 52 36 | R5,#0....MOV R6| 00002f90 2c 23 30 0d 1a a4 10 2e 6c 6f 6f 70 5f 66 69 6c |,#0.....loop_fil| 00002fa0 6c 5f 65 0d 1a ae 16 20 20 53 54 52 42 20 52 35 |l_e.... STRB R5| 00002fb0 2c 5b 52 31 32 2c 52 36 5d 0d 1a b8 12 20 20 41 |,[R12,R6].... A| 00002fc0 44 44 20 52 36 2c 52 36 2c 23 31 0d 1a c2 18 20 |DD R6,R6,#1.... | 00002fd0 20 43 4d 50 20 52 36 2c 23 61 63 63 75 72 61 63 | CMP R6,#accurac| 00002fe0 79 32 25 0d 1a cc 13 42 4e 45 20 6c 6f 6f 70 5f |y2%....BNE loop_| 00002ff0 66 69 6c 6c 5f 65 0d 1a d6 0e 4d 4f 56 20 52 35 |fill_e....MOV R5| 00003000 2c 23 31 30 0d 1a e0 10 53 55 42 20 52 36 2c 52 |,#10....SUB R6,R| 00003010 36 2c 23 31 0d 1a ea 14 53 54 52 42 20 52 35 2c |6,#1....STRB R5,| 00003020 5b 52 31 32 2c 52 36 5d 0d 1a f4 05 3a 0d 1a fe |[R12,R6]....:...| 00003030 13 4c 44 4d 46 44 20 52 31 33 21 2c 7b 50 43 7d |.LDMFD R13!,{PC}| 00003040 0d 1b 08 04 0d 1b 12 05 5d 0d 1b 1c 05 ed 0d 1b |........].......| 00003050 26 05 3a 0d 1b 30 08 eb 20 31 33 0d 1b 3a 0a e6 |&.:..0.. 13..:..| 00003060 20 30 2c 36 33 0d 1b 44 04 0d 1b 4e 18 f1 20 22 | 0,63..D...N.. "| 00003070 43 61 6c 63 75 6c 61 74 69 6e 67 2e 2e 2e 2e 2e |Calculating.....| 00003080 22 0d 1b 58 13 d6 20 46 61 63 74 6f 72 69 61 6c |"..X.. Factorial| 00003090 6c 69 66 79 0d 1b 62 04 0d 1b 6c 14 f4 20 2a 53 |lify..b...l.. *S| 000030a0 50 4f 4f 4c 20 45 5f 46 49 4c 45 33 0d 1b 76 07 |POOL E_FILE3..v.| 000030b0 20 20 f1 0d 1b 80 07 20 20 f1 0d 1b 8a 07 20 20 | ..... ..... | 000030c0 f1 0d 1b 94 09 20 20 41 3d 30 0d 1b 9e 07 20 20 |..... A=0.... | 000030d0 f5 0d 1b a8 0c 20 20 20 20 41 2b 3d 31 0d 1b b2 |..... A+=1...| 000030e0 16 20 20 fd 20 28 65 5f 73 6f 5f 66 61 72 3f 41 |. . (e_so_far?A| 000030f0 29 3d 37 0d 1b bc 0d 20 20 f1 20 22 32 2e 22 3b |)=7.... . "2.";| 00003100 0d 1b c6 07 20 20 f5 0d 1b d0 18 20 20 20 20 f1 |.... ..... .| 00003110 20 c3 28 65 5f 73 6f 5f 66 61 72 3f 41 29 3b 0d | .(e_so_far?A);.| 00003120 1b da 0c 20 20 20 20 41 2b 3d 31 0d 1b e4 17 20 |... A+=1.... | 00003130 20 fd 20 28 65 5f 73 6f 5f 66 61 72 3f 41 29 3d | . (e_so_far?A)=| 00003140 31 30 0d 1b ee 0c f4 20 2a 53 50 4f 4f 4c 0d 1b |10..... *SPOOL..| 00003150 f8 04 0d 1c 02 05 e0 0d 1c 0c 05 3a 0d 1c 16 11 |...........:....| 00003160 dd a4 42 79 74 65 73 28 69 6e 63 25 29 0d 1c 20 |..Bytes(inc%).. | 00003170 0c 50 25 2b 3d 69 6e 63 25 0d 1c 2a 06 3d 30 0d |.P%+=inc%..*.=0.| 00003180 1c 34 05 3a 0d ff |.4.:..| 00003186