You are here: Home DOCUMENTATION information SBASIC Manual - Page 7

Technological Arts Inc.

Your Shopping Cart

Your Cart is currently empty.

SBASIC Manual - Page 7

Article Index
SBASIC Manual
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11
Page 12
Page 13
Page 14
Page 15
Page 16
Page 17
Page 18
Page 19
Page 20
Page 21
Page 22
Page 23
Page 24
Page 25
Page 26
Page 27
Page 28
Page 29
Page 30
Page 31
Page 32
Page 33
Page 34
Page 35
Page 36
Page 37
Page 38
Page 39
Page 40
Page 41
Page 42
Page 43
Page 44
Page 45
Page 46
Page 47
Page 48
Page 49
Page 50
Page 51
Page 52
Page 53
Page 54
Page 55
Page 56
Page 57
Page 58
Page 59
Page 60
Table of Contents
Index
All Pages

     SBasic User's Manual     SBasic Version 2.7              Page 7
     Printed:  December 5, 1999
     contains a branch instruction that tests the value of variable N and
     branches back to the WHILE statement if N equals 3.

     For the 68hc11 and 68hc12 MCUs, SBasic normally generates code similar
     to:

     whl000
          ldd  var001
          cpd  #3
          bne  *+5                      branch instruction, line 1
          jmp  whl000                   branch instruction, line 2

     For short transfers, where the branch target is within the relative
     addressing limit of the target MCU, this code is larger and will run
     more slowly than necessary.

     Using the /b option forces SBasic to generate relative branches
     directly to all targets.  If the /b option is in effect, SBasic would
     generate the following code for the above example:

     whl000
          ldd  var001
          cpd  #3
          beq  whl000                   branch instruction

     Note that the branch has reversed sense, and the JMP instruction has
     disappeared.


          WARNING:  Branches to addresses beyond the target MCU's
          relative branch limit will result in assembler errors, even
          though SBasic will not report any compilation errors.
          SBasic does not maintain an internal program counter, and
          will not detect that a branch target is out of range.


     Beginning users should omit the /b option, and accept the slight
     increase in size and execution times caused by the default branch code
     generation.

     Experienced users may, however, use the /b option to gain improved
     performance.  In this case, however, you must carefully monitor the
     assembler's output for any errors resulting in out-of-range branches.

     If your code generates out-of-range branches using the /b option,
     recompile without the option.  SBasic currently does not support any
     method for selectively compiling direct branches.

     You can select the target MCU by using the /m option.  The format of
     this option is:

          /mxxxx