Vielleicht mag wer gucken, was Bascom aus so einem "Select + GOTO" macht
Code:
Do
Select Case Varia1
Case 23:
If Varia2 <> 5 Then
Result = 44
Else
Goto Ende
End If
Case 24:
If Varia2 = 66 Then
Result = 22
Else
Goto Ende
End If
Case Else
Result = 0
End Select
Ende:
Loop
End
Was macht der Bascom draus ?
Code:
//-----------------------------
DO:
// Case 23:
LDS r16,0x0060 // load varia1
CPI r16,0x17 // <> 23 ?
BREQ L_0x0092 // next
JMP L_0x00B0 // --> goto next case
L_0x0092: //
LDS r16,0x0061 // load varia1
CPI r16,0x05 // <> 5 ?
BRNE L_0x009E
JMP L_0x00A8
L_0x009E:
LDI r24,0x2C // load '44'
STS 0x0062,r24 // store Result
JMP L_0x00AC
L_0x00A8:
JMP ENDE
L_0x00AC:
JMP ENDE
//-----------------------------
L_0x00B0:
// Case 24
CPI r16,0x18 // load varia1
BREQ L_0x00B8 // <> 24 ?
JMP L_0x00D6
L_0x00B8:
LDS r16,0x0061
CPI r16,0x42
BREQ L_0x00C4
JMP L_0x00CE
L_0x00C4:
LDI r24,0x16
STS 0x0062,r24
JMP L_0x00D2
L_0x00CE:
JMP ENDE
L_0x00D2:
JMP ENDE
L_0x00D6: // Case ELSE
LDI r24,0x00
STS 0x0062,r24 // result = 0
ENDE: //
JMP DO // "LOOP"
.DB 0xF8, 0x94 ;..
L_0x00E2: // "END"
RJMP L_0x00E2 // forever
Da hüpft er rum wie Rumpelstilzchen.
In "C" hätte man statt GOTO eben "break;" geschrieben.
Lesezeichen