## AS6808 Assembler

####

    PROCESSOR SPECIFIC DIRECTIVES

       The MC68HC(S)08 processor is a superset of the MC6805 proces-
    sors.  The AS6808 assembler supports the HC08, HCS08, 6805,  and
    HC05 cores.

    .hc08 Directive

    Format:

            .hc08

    The .hc08 directive enables processing of only the HC08 specific
    mnemonics.  6805/HC05/HCS08 mnemonics  encountered  without  the
    .hc08 directive will be flagged with an <o> error.

       The  .hc08  directive  also  selects the HC08 specific cycles
    count output when the -c command line option is specified.

    .hcs08 Directive

    Format:

            .hcs08

    The  .hcs08  directive  enables processing of the HCS08 specific
    mnemonics.

       The  .hcs08  directive also selects the HCS08 specific cycles
    count to be output.

    .6805 Directive

    Format:

            .6805

    The  .6805  directive  enables  processing of only the 6805/HC05
    specific mnemonics.  HC08/HCS08  mnemonics  encountered  without
    the .hc08/.hcs08 directives will be flagged with an <o> error.

       The  .6805  directive also selects the MC6805 specific cycles
    count to be output.

    .hc05 Directive

    Format:

            .hc05

    The  .hc05  directive  enables  processing of only the 6805/HC05
    specific mnemonics.  HC08/HCS08  mnemonics  encountered  without
    the .hc08/.hcs08 directives will be flagged with an <o> error.

       The .hc05 directive also selects the MC68HC05/146805 specific
    cycles count to be output.

    The .__.CPU.  Variable

       The value of the pre-defined symbol '.__.CPU.' corresponds to
    the selected processor type.  The default value is 0 which  cor-
    responds  to  the  default  processor type.  The following table
    lists the processor types and associated values for  the  AS6808
    assembler:

            Processor Type            .__.CPU. Value
            --------------            --------------
                .hc08                        0
                .hcs08                       1
                .6805                        2
                .hc05                        3

       The  variable  '.__.CPU.'  is by default defined as local and
    will not be output to the created .rel file.  The assembler com-
    mand line options -g or -a will not cause the local symbol to be
    output to the created .rel file.

       The  assembler  .globl  directive  may  be used to change the
    variable type to global causing its definition to be  output  to
    the  .rel file.  The inclusion of the definition of the variable
    '.__.CPU.' might be a useful means of validating that seperately
    assembled  files have been compiled for the same processor type.
    The linker will report an error for variables with multiple  non
    equal definitions.

    68HC(S)08 REGISTER SET

    The  following  is  a  list  of  the  68HC(S)08  registers  used
    by AS6808:

            a       -       8-bit accumulator
            x       -       index register  <H:X>
            s       -       stack pointer

    68HC(S)08 INSTRUCTION SET

       The  following tables list all 68HC(S)08 mnemonics recognized
    by the AS6808 assembler.  The designation [] refers to a required
    addressing  mode  argument.   The  following  list specifies the
    format for each addressing mode supported by AS6808:

            #data           immediate data
                            byte or word data

            *dir            direct page addressing
                            (see .setdp directive)
                            0 <= dir <= 255

            ,x              register indexed addressing
                            zero offset

            offset,x        register indexed addressing
                              0 <= offset <= 255   --- byte mode
                            256 <= offset <= 65535 --- word mode
                            (an externally defined offset uses the
                             word mode)

            ,x+             register indexed addressing
                            zero offset with post increment

            offset,x+       register indexed addressing
                            unsigned byte offset with post increment

            offset,s        stack pointer indexed addressing
                              0 <= offset <= 255   --- byte mode
                            256 <= offset <= 65535 --- word mode
                            (an externally defined offset uses the
                             word mode)

            ext             extended addressing

            label           branch label

    The terms data, dir, offset, and ext may all be expressions.

       Note  that  not all addressing modes are valid with every in-
    struction, refer to the 68HC(S)08 technical data for valid modes.

    Control Instructions

            clc             cli             daa             div
            mul             nop             nsa             psha
            pshh            pshx            pula            pulh
            pulx            rsp             rti             rts
            sec             sei             stop            swi
            tap             tax             tpa             tsx
            txa             txs             wait

    Bit Manipulation Instructions

            brset   #data,*dir,label
            brclr   #data,*dir,label

            bset    #data,*dir
            bclr    #data,*dir

    Branch Instructions

            bra     label           brn     label
            bhi     label           bls     label
            bcc     label           bcs     label
            bne     label           beq     label
            bhcc    label           bhcs    label
            bpl     label           bmi     label
            bmc     label           bms     label
            bil     label           bih     label
            bsr     label           bge     label
            blt     label           bgt     label
            ble     label

    Complex Branch Instructions

            cbeqa   [],label
            cbeqx   [],label
            cbeq    [],label
            dbnza   label
            dbnzx   label
            dbnz    [],label

    Read-Modify-Write Instructions

            nega                    negx
            neg     []

            coma                    comx
            com     []

            lsra                    lsrx
            lsr     []

            rora                    rorx
            ror     []

            asra                    asrx
            asr     []

            asla                    aslx
            asl     []

            lsla                    lslx
            lsl     []

            rola                    rolx
            rol     []

            deca                    decx
            dec     []

            inca                    incx
            inc     []

            tsta                    tstx
            tst     []

            clra                    clrx
            clr     []              clrh

            aix     #data

            ais     #data

    E.2.6  Register\Memory Instructions

            sub     []              cmp     []
            sbc     []              cpx     []
            and     []              bit     []
            lda     []              sta     []
            eor     []              adc     []
            ora     []              add     []
            ldx     []              stx     []

    Double Operand Move Instruction

            mov     [],[]

    16-Bit <H:X> Index Register Instructions

            cphx    []
            ldhx    []
            sthx    []

    Jump and Jump to Subroutine Instructions

            jmp     []              jsr     []

##### Go to the Documentation Index

... Exit the ASxxxx Documentation

... Home Page

###### Last Updated: March 2025