a=b+c : 11.5 cycles (+-1.3 cycles)

a=b/3 : 460.8 cycles (+-12.8 cycles)

a=b/2 : 7.68 cycles (+-1.3 cycles) *

a.a=b.b+c.c : 11.52 cycles (+-1.3 cycles)

a.d=b.b+c.c : 11.52 cycles (+-1.3 cycles)

a.d=b.b+c.f : 11.52 cycles (+-1.3 cycles)

a.d=b.e+c.c : 160.0 cycles (+-6.4 cycles) **

a.d=b.e+c.f : 20.48 cycles (+-1.3 cycles)

gosub+return : 25.6 cycles (+-1.3 cycles)

gosub_with_bankswitch+return : 123.73 cycles (+-4.2 cycles)

goto: 2.56 cycles (+-1.28) ***

goto_with_bankswitch : 49.06 cycles (+-4.2)

These numbers are wrong, because of the way you tested them. The easiest way to test them is as follows:

loop
rem * code to be tested goes here
goto loop

For example:

loop
a = b + c
goto loop

When you compile and run this, you just get a blank screen, but that's okay, since all you really want to do is see how long the instruction takes. Once the program is up and running in Stella (you do need to be using Stella for this), hit the `/~ key (backwards apostrophe, with a tilde on top, just left of the 1/! key) to switch to the debugger screen. If necessary, scroll the disassembly window until you can see all the code in your little loop. Then add up the cycle counts, but don't add the one for the JMP at the end of the loop. This is what you should get:

; a = b + c
LDA $D7 ; 3
CLC ; 2
ADC $D8 ; 3
STA $D6 ; 3
; total = 11

; a = b / 3
; This one is trickier, because you need include div_mul.asm,
; and must include the cycles used by the division loop,
; plus the JSR and RTS. You should also step through the
; entire process to see which branches are taken, so you can
; add up how many cycles are actually used.
; The simplest way to do this is to step until you get to the
; start of the loop, note the frame cycle, then step through
; until you get to the JMP that loops back, note the new
; frame cycles, and subtract to get the cycles used.
; When you compile, your addresses may come out different
; than the ones shown here:
LF4A1 CPY #$02 ; 2
BCC LF4AF ; 2
STY $9C ; 3
LDY #$FF ; 2
LF4A9 SBC $9C ; 3
INY ; 2
BCS LF4A9 ; 2
TYA ; 2
LF4AF RTS ; 6
LF4B0 LDA $D7 ; 3 <-- start here, F. Cyc = 01451
LDY #$03 ; 2
JSR LF4A1 ; 6
STA $D6 ; 3
JMP LF4B0 ; 3 <-- stop here, F. Cyc = 01489
; total = 1489 - 1451 = 38

; a = b / 2
LDA $D7 ; 3
LSR A ; 2
STA $D6 ; 3
; total = 8

; a.a = b.b + c.c
; dim a1 = a.a
; dim b2 = b.b
; dim c3 = c.c
; a1 = b2 + c3
LDA $D7 ; 3
CLC ; 2
ADC $D8 ; 3
STA $D6 ; 3
; total = 11

; a.d = b.b + c.c
; dim a1 = a.d
; dim b2 = b.b
; dim c3 = c.c
; a1 = b2 + c3
LDA $D7 ; 3
CLC ; 2
ADC $D8 ; 3
STA $D6 ; 3
; total = 11

; a.d = b.b + c.f
; dim a1 = a.d
; dim b2 = b.b
; dim c3 = c.f
; a1 = b2 + c3
LF49E STA $9C ; 3
LDA #$00 ; 2
ASL $9C ; 5
SBC #$00 ; 2
EOR #$FF ; 2
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
LDX $9C ; 3
RTS ; 6
LF4C7 STA $9D ; 3
STX $9E ; 3
TYA ; 2
JSR LF49E ; 6
CLC ; 2
STA $9C ; 3
TXA ; 2
ADC $9E ; 3
TAX ; 2
LDA $9C ; 3
ADC $9D ; 3
RTS ; 6
LF4F2 LDY $D7 ; 3 <-- Start here, F. Cyc = 90192
LDX $D8 ; 3
LDA $D8 ; 3
JSR LF4C7 ; 6
STX $D9 ; 3
STA $D6 ; 3
JMP LF4F2 ; 3 <-- stop here, F. Cyc = 90297
; total = 90297 - 90192 = 105

; a.d = b.e + c.c
; dim a1 = a.d
; dim b2 = b.e
; dim c3 = c.c
; a1 = b2 + c3
LF49E STA $9C ; 3
LDA #$00 ; 2
ASL $9C ; 5
SBC #$00 ; 2
EOR #$FF ; 2
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
ASL $9C ; 5
ROL A ; 2
LDX $9C ; 3
RTS ; 6
LF4C7 STA $9D ; 3
STX $9E ; 3
TYA ; 2
JSR LF49E ; 6
CLC ; 2
STA $9C ; 3
TXA ; 2
ADC $9E ; 3
TAX ; 2
LDA $9C ; 3
ADC $9D ; 3
RTS ; 6
LF4F2 LDY $D8 ; 3 <-- Start here, F. Cyc = 99332
LDX $DA ; 3
LDA $D7 ; 3
JSR LF4C7 ; 6
STX $D9 ; 3
STA $D6 ; 3
JMP LF4F2 ; 3 <-- stop here, F. Cyc = 99437
; total = 99437 - 99332 = 105

; a.d = b.e + c.f
; dim a1 = a.d
; dim b2 = b.e
; dim c3 = c.f
; a1 = b2 + c3
LDA $DA ; 3
CLC ; 2
ADC $DB ; 3
STA $D9 ; 3
LDA $D7 ; 3
ADC $D8 ; 3
STA $D6 ; 3
; total = 20

; gosub+return
; loop
; gosub routine
; goto loop
; routine
; return
LF487 JSR LF495 ; 6
JMP LF487 ; 3 <-- don't count this
LF495 RTS ; 6
; total = 12

; gosub_with_bankswitch+return
; loop
; gosub routine bank2
; goto loop
; bank 2
; routine
; return
LD000 STA $D4 ; 3 <-- start here, F. Cyc = 91290
LDA #$D0 ; 2
PHA ; 3
LDA #$17 ; 2
PHA ; 3
LDA #$F4 ; 2
PHA ; 3
LDA #$D6 ; 2
PHA ; 3
LDA $D4 ; 3
PHA ; 3
TXA ; 2
PHA ; 3
LDX #$02 ; 2
JMP LDFED ; 3
JMP LD000 ; 3 <-- stop here, F. Cyc = 91412
LFFED LDA LFFF7,X ; 4
PLA ; 4
TAX ; 2
PLA ; 4
RTS ; 6
LF4D7 TSX ; 2
LDA CXP0FB,X ; 4
EOR #$F4 ; 2
AND #$E0 ; 2
BEQ LF4E3 ; 2
JMP LFFDF ; 3
LF4E3 RTS ; 6
LFFDF PHA ; 3
TXA ; 2
PHA ; 3
TSX ; 2
LDA CXM0FB,X ; 4
ROL A ; 2
ROL A ; 2
ROL A ; 2
ROL A ; 2
AND #$01 ; 2
TAX ; 2
INX ; 2
LFFED LDA LFFF7,X ; 4
PLA ; 4
TAX ; 2
PLA ; 4
RTS ; 6
; total = 91412 - 91290 = 122

(Note: This one jumps around and switches banks, so it's impossible to figure without just stepping through it and noting the frame cycles.)

; gosub_with_bankswitch+return_with_bankswitch
; (you didn't try this one, it's quicker)
; loop
; gosub routine bank2
; goto loop
; bank 2
; routine
; return otherbank
LD000 STA $D4 ; 3 <-- start here, F. Cyc = 38801
LDA #$D0 ; 2
PHA ; 3
LDA #$17 ; 2
PHA ; 3
LDA #$F4 ; 2
PHA ; 3
LDA #$D6 ; 2
PHA ; 3
LDA $D4 ; 3
PHA ; 3
TXA ; 2
PHA ; 3
LDX #$02 ; 2
JMP LDFED ; 3
JMP LD000 ; 3 <-- stop here, F. Cyc = 38911
; total = 38911 - 38801 = 110

(I omitted the bankswitching code to keep the listing simpler.)

; goto
; loop
; goto loop
LF48F JMP LF48F ; 3
; total = 3

; goto_with_bankswitch
; loop
; goto routine bank2
; bank 2
; routine
; goto loop bank1
LD000 STA $D4 ; 3 <-- start here, F. Cyc = 43306
LDA #$F4 ; 2
PHA ; 3
LDA #$D6 ; 2
PHA ; 3
LDA $D4 ; 3
PHA ; 3
TXA ; 2
PHA ; 3
LDX #$02 ; 2
JMP LDFED ; 3
LFFED LDA LFFF7,X ; 4
PLA ; 4
TAX ; 2
PLA ; 4
RTS ; 6
LF4D7 STA $D4 ; 3 <-- stop here, F. Cyc = 43355
; total = 43355 - 43306 = 49

So the correct numbers are as follows:

a=b+c : 11 cycles

a=b/3 : 38 cycles

a=b/2 : 8 cycles

a.a=b.b+c.c : 11 cycles

a.d=b.b+c.c : 11 cycles

a.d=b.b+c.f : 105 cycles

a.d=b.e+c.c : 105 cycles

a.d=b.e+c.f : 20 cycles

gosub+return : 12 cycles

gosub_with_bankswitch+return : 122 cycles

gosub_with_bankswitch+return_with_bankswitch : 110 cycles

goto: 3 cycles

goto_with_bankswitch : 49 cycles

I'm not sure why your a=b/3 was so far off.

Michael