ich hab mir grad den Assembler Code angeschaut. Demzufolge benötigt die
if Abfrage 59 Takte, sehe ich das richtig? Ich hab inAssembler wirklich
0 Ahnung, deshalb die Frage: wozu sind die ganzen NOP da? Und wieweit
könnte man den Code evtl. noch schrumpfen?
112: if ((Pixel[y][x]==1) && (h==0)) LATD |= (1<<y);
0710 0E04 MOVLW 0x4
0712 CFDB MOVFF 0xfdb, 0x14
0714 F014 NOP
0716 0E05 MOVLW 0x5
0718 CFDB MOVFF 0xfdb, 0x15
071A F015 NOP
071C 0E16 MOVLW 0x16
071E 0215 MULWF 0x15, ACCESS
0720 CFF3 MOVFF 0xff3, 0x15
0722 F015 NOP
0724 0214 MULWF 0x14, ACCESS
0726 CFF3 MOVFF 0xff3, 0x14
0728 F014 NOP
072A 50F4 MOVF 0xff4, W, ACCESS
072C 2615 ADDWF 0x15, F, ACCESS
072E 0E00 MOVLW 0
0730 2614 ADDWF 0x14, F, ACCESS
0732 0E01 MOVLW 0x1
0734 2215 ADDWFC 0x15, F, ACCESS
0736 0E02 MOVLW 0x2
0738 6E08 MOVWF 0x8, ACCESS
073A 6A09 CLRF 0x9, ACCESS
073C CFDB MOVFF 0xfdb, 0xd
073E F00D NOP
0740 0E03 MOVLW 0x3
0742 CFDB MOVFF 0xfdb, 0xe
0744 F00E NOP
0746 EC17 CALL 0xa2e, 0
0748 F005 NOP
074A 5014 MOVF 0x14, W, ACCESS
074C 2406 ADDWF 0x6, W, ACCESS
074E 6EE9 MOVWF 0xfe9, ACCESS
0750 5015 MOVF 0x15, W, ACCESS
0752 2007 ADDWFC 0x7, W, ACCESS
0754 6EEA MOVWF 0xfea, ACCESS
0756 0E01 MOVLW 0x1
0758 18EE XORWF 0xfee, W, ACCESS
075A E101 BNZ 0x75e
075C 50ED MOVF 0xfed, W, ACCESS
075E E113 BNZ 0x786
0760 50D9 MOVF 0xfd9, W, ACCESS
0762 0F0A ADDLW 0xa
0764 6EE9 MOVWF 0xfe9, ACCESS
0766 CFDA MOVFF 0xfda, 0xfea
0768 FFEA NOP
076A 50EE MOVF 0xfee, W, ACCESS
076C 10ED IORWF 0xfed, W, ACCESS
076E E10B BNZ 0x786
0770 0E01 MOVLW 0x1
0772 6EF3 MOVWF 0xff3, ACCESS
0774 0E04 MOVLW 0x4
0776 50DB MOVF 0xfdb, W, ACCESS
0778 E004 BZ 0x782
077A 90D8 BCF 0xfd8, 0, ACCESS
077C 36F3 RLCF 0xff3, F, ACCESS
077E 06E8 DECF 0xfe8, F, ACCESS
0780 E1FC BNZ 0x77a
0782 50F3 MOVF 0xff3, W, ACCESS
0784 128C IORWF 0xf8c, F, ACCESS