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

Technological Arts Inc.

Your Shopping Cart

Your Cart is currently empty.

SBASIC Manual - Page 53

Article Index
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
All Pages

     SBasic User's Manual     SBasic Version 2.7             Page 53
     Printed:  December 5, 1999
     ASM and ENDASM

     The ASM and ENDASM statements allow you to imbed assembly language
     source inside your SBasic program.  Assembly language source lines
     between these two statements (with one exception) are not processed by
     SB; instead, they are passed directly to the output file for
     subsequent assembly.

     This feature allows you to drop down into assembly language when
     necessary, should you need to write code that must run faster or take
     up less space.  Additionally, imbedded assembly language gives you
     direct access to registers on the target system not currently
     supported by SBasic.  For example, you can gain access to the 68hc11's
     hardware stack register (S) by using imbedded assembly language.

     The following example shows how to imbed 68hc11 assembly language:

         asm                            ' switch to assembly language

             ldx   #$1000               point x at i/o regs
             ldd   $0e,x                get 16-bit counter TCNT
             std   _time                save in variable TIME

         endasm                         ' switch back to SBasic
         return                         ' and return

     This example shows an SB routine named FOO that uses imbedded assembly
     language to access the 68hc11's TCNT register.  The value read from
     TCNT is stored in the SBasic variable TIME.  The example then uses the
     ENDASM statement to switch back to SBasic, where the RETURN statement
     returns control to the calling routine.

     Note that you will generally use an SBasic label at the start of an
     assembly section; other SBasic routines can use this label to pass
     control to your assembly section.  Note also that imbedded assembly
     language lines can (and should) have comments appended to them.

     With one exception, all source lines between an ASM and an ENDASM
     statement are passed unaltered to the output file for processing by
     the assembler.  Thus, you cannot use SBasic statements or functions
     within an assembly section.  Such statements or functions would be
     processed by the assembler, not by SBasic, and will result in
     assembler errors.

     The sole exception to the above involves an underscore character.  As
     shown in the example above, you can refer to SBasic variables,
     constants, or labels by prepending an underscore to the name.  Before
     SBasic passes each assembly source line to the output file, it scans
     the line for any underscores.  If SB detects an underscore, the
     following characters are parsed and tested against SBasic's list of