BasCom Code2


Wertzuweisungen von DIM-Variablen

Bit
DIM One as Bit

One = 1

LDS r23,D_$0060
ORI r23,$80
STS D_$0060,r23

Byte
DIM One as Byte

One = 15

Der generierte Code

LDI r24 , $0F
STS $0060 , r24


Byte.Bit
DIM One as Byte

One.1 = 1

SET set T-Bit
LDI XL,$60
LDI XH,$00
LD r24,X
BLD r24,1 T -->reg.1
ST X,r24 store


Word /Integer
(signed / unsigned spielt hier keine Rolle)
DIM One as Word
One = 15

LDI r24,$0F Literal Value
LDI r25,$00
LDI XL,$60 address Target
LDI XH,$00
ST X++,r24 Store
ST X,r25


Long

DIM One as Long
One = 15

LDI r16,$0F Literal Value
LDI r17,$00
LDI r18,$00
LDI r19,$00
LDI XL,$60 address Target
LDI XH,$00
ST X++,r16 store
ST X++,r17
ST X++,r18
ST X,r19

Single

DIM One as Single
One = 1.0

LDI XL,$60 ; adresse von „One“
LDI XH,$00
LDI ZL,$A2 ; Das Single-Literal für "1.0" wurde vom Compiler
LDI ZH,$02 ; an der Adresse $02A3 im Flash-Speicher erzeugt
CALL FlashToSram4 ; es wird eine Call-Function verwendet
---

$02A2 00 00 .. ; single literal (=1.0)

;---------------------------------------------------------------------------
FlashToSram4:
LDI r24,$04 ; Counter : 4 Byte to move
FlashToSram:
LPM ; Read flash (Z) to R0
ADIW ZL,$0001 ; increment pointer (Z)
ST X++,r0 ; R0 to (X)
DEC r24 ; byte counter
BRNE FlashToSram ; repeat
RET ; ready

Es werden 5 + (1 + 5*4 + 1) = 27 Instructions durchgeführt.