EasyManua.ls Logo

ST ST7 - Page 161

ST ST7
317 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
161/317
6 - STMicroelectronics Programming Tools
95 001F B602 ld A, NbOfApples
95 0021 BB03 add A, NbOfPears
95 0023 #IFB NbOfFruit
95 0023 B704 ld NbOfFruit, A ; result in third argument
95 0025 #ENDIF
96 0025
97
98 Addition NbOfApples, NbOfFruit,
98 0025 B602 ld A, NbOfApples
98 0027 BB04 add A, NbOfFruit
98 0029 #IFB
98 0029 B704 ld NbOfFruit, A ; result in second argument
98 002B #ELSE
#IFLAB <identifier> Conditional.
This conditional tests whether an argument is a label. This may be used to distinguish be-
tween a label and a constant. For example, let us consider again the addition macro, but
changed so that the first two arguments may be at will either labels or constants. The third ar-
gument must be a label. The macro is:
AddFlex MACRO argA, argB, Result
#IFLAB argA
ld A, argA
#ELSE
ld A, #argA ; 1st arg is constant
#ENDIF
#IFLAB argB
add A, argB
#ELSE
add A, #argB ; 2nd arg is constant
#ENDIF
ld Result, A
MEND
We see that according to whether the argument is a label or not , a different addressing mode
is used (extended or immediate). Here are two expansions with different arrangements of ar-
guments:
115 AddFlex NbOfApples, 3, NbOfFruit
115 002D #IFLAB NbOfApples
115 002D B602 ld A, NbOfApples
115 002F #ELSE
115 002F #IFLAB 3
115 002F AB03 add A, #3 ; 2nd arg is constant
115 0031 #ENDIF
115 0031 B704 ld NbOfFruit, A
116 0033
117 AddFlex 3, NbOfApples, NbOfFruit

Table of Contents

Related product manuals