A: 0x00 HX: 0x0D4B SP: 0x0D4A PC: 0x18E0 Z:1 A: 0x00 HX: LUNG/2 SP: 0x0D4A PC: 0x192B Z:1 8: 178806 -> 179480 : 674 = 42+79* 8 16: 178806 -> 180112 : 1306 = 42+79* 16 32: 178806 -> 181376 : 2570 = 42+79* 32 64: 178806 -> 183904 : 5098 = 42+79* 64 128: 178806 -> 188960 : 10154 = 42+79* 128 256: 178806 -> 199072 : 20266 = 42+79* 256 511: 178806 -> 219138 : 40332 = 42+79* 511 512: 178806 -> 219301 : 40495 < 42+79* 512 = 40490 514: 178806 -> 219459 : 40653 < 42+79* 514 = 40648 1024: 178806 -> 259754 : 80948 > 42+79*1024 = 80938 ottima definizione esatta del tempo di esecuzione! T(n)=42+79*n+5*(n/512) oppure T(n)=42+79*n+(n>>9) dati 0x100-> 3072 byte ********************************************** static unsigned char dati[3072]={...}; void swap(unsigned char *a, unsigned char *b) { unsigned char tmp=*a; *a=*b; *b=tmp; return; } 18BE PSHX 18BF PSHH 18C0 LDHX 5,SP 18C3 LDA ,X 18C4 LDHX 1,SP 18C7 PSHA 18C8 LDA ,X 18C9 LDHX 6,SP 18CC STA ,X 18CD LDHX 2,SP 18D0 PULA 18D1 STA ,X 18D2 AIS #2 18D4 RTS 18D5-18DF ... void main(void) { unsigned int pos=0,limit=0; for(limit=3072;pos<(limit/2);pos++) { swap(&dati[pos],&dati[limit-pos-1]); } 18E0 LDHX #LUNG 18E3 STHX 4,SP 18E6 20 32 BRA *+52 ; 191A 18E8 TSX 18E9 LDA 2,X 18EB ADD #0x00 18ED PSHA 18EE LDA 1,X 18F0 ADC #0x01 18F2 PSHA 18F3 LDA 4,X 18F5 SUB 2,X 18F7 STA ,X 18F8 LDA 3,X 18FA SBC 1,X 18FC PSHA 18FD LDX ,X 18FE PULH 18FF AIX #-1 1901 TXA 1902 ADD #0x00 1904 PSHH 1905 TSX 1906 STA 3,X 1908 PULA 1909 ADC #0x01 190B LDX 3,X 190D PSHA 190E PULH 190F AD AD BSR *-81 ; 18BE 1911 AIS #2 1913 TSX 1914 INC 2,X 1916 26 02 BNE *+4 ; 191A 1918 INC 1,X 191A TSX 191B LDA 3,X 191D PSHA 191E PULH 191F LSRA 1920 TSX 1921 LDX 4,X 1923 RORX 1924 PSHA 1925 PULH 1926 CPHX 2,SP 1929 22 BD BHI *-65 ; 18E8