home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / as32 / as31.cat < prev    next >
Text File  |  1991-01-27  |  21KB  |  529 lines

  1.  
  2.  
  3.  
  4.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  5.  
  6.  
  7.  
  8.      N✓N✓N✓NA✓A✓A✓AM✓M✓M✓ME✓E✓E✓E
  9.           as31 - An Intel 8031/8051 assembler
  10.  
  11.      S✓S✓S✓SY✓Y✓Y✓YN✓N✓N✓NO✓O✓O✓OP✓P✓P✓PS✓S✓S✓SI✓I✓I✓IS✓S✓S✓S
  12.           a✓a✓a✓as✓s✓s✓s3✓3✓3✓31✓1✓1✓1 [ -✓-✓-✓-F✓F✓F✓Ff✓f✓f✓fo✓o✓o✓or✓r✓r✓rm✓m✓m✓ma✓a✓a✓at✓t✓t✓t ] [ -✓-✓-✓-A✓A✓A✓Aa✓a✓a✓ar✓r✓r✓rg✓g✓g✓g ] [ -✓-✓-✓-l✓l✓l✓l ] i✓i✓i✓in✓n✓n✓nf✓f✓f✓fi✓i✓i✓il✓l✓l✓le✓e✓e✓e.✓.✓.✓.a✓a✓a✓as✓s✓s✓sm✓m✓m✓m
  13.  
  14.      D✓D✓D✓DE✓E✓E✓ES✓S✓S✓SC✓C✓C✓CR✓R✓R✓RI✓I✓I✓IP✓P✓P✓PT✓T✓T✓TI✓I✓I✓IO✓O✓O✓ON✓N✓N✓N
  15.           _✓A_✓s_✓3_✓1 assembles _✓i_✓n_✓f_✓i_✓l_✓e._✓a_✓s_✓m into one of several different
  16.           output formats. The output will be in a file called
  17.           infile.obj. The .asm extenstion is required.
  18.  
  19.  
  20.      O✓O✓O✓OP✓P✓P✓PT✓T✓T✓TI✓I✓I✓IO✓O✓O✓ON✓N✓N✓NS✓S✓S✓S
  21.           The options must appear before the input file name. Both
  22.           options are optional. The text of each flag must appear on
  23.           the same argument as the flag. For example, "-Fod" is a
  24.           valid argument, but "-F od" is not.
  25.  
  26.           -_✓F_✓f_✓o_✓r_✓m_✓a_✓t
  27.                This options specifies the output format that is to be
  28.                used.
  29.  
  30.                Currently the only options available for this are:
  31.  
  32.                tdr  This format generates an asci file of hex digits
  33.                     formatted in such a way, so that they can be read
  34.                     by tdr's debugger. An argument can be specified
  35.                     (See -A option) which will pass a format specific
  36.                     string to the format generator. In this case, the
  37.                     argument string represents an offset to add to the
  38.                     location counter. This offset is specified in
  39.                     decimal and defaults to 64*1024 (0x10000). To
  40.                     specify and offset of 100, you would need "-Ftdr
  41.                     -A100" when invoking the assembler.
  42.  
  43.  
  44.                byte This format is simply an address and a byte on
  45.                     each line, in ascii.  No -A option is used.
  46.  
  47.  
  48.                od   This format is similar to the output from od(1).
  49.                     The format consists of an address followed by
  50.                     sixteen hexadecimal bytes, followed by the
  51.                     equivilant ASCII. No -A option is used.
  52.  
  53.  
  54.                srec2, srec3, srec4
  55.                     The srecord generator is capable of generating
  56.                     output with any one of 2, 3, or 4 byte addresses.
  57.                     The -A option can be used to set the base address
  58.                     offset, the default here is 0x0000 (unlike t✓t✓t✓td✓d✓d✓dr✓r✓r✓r).
  59.  
  60.  
  61.  
  62.  
  63.                                    - 1 -  Formatted:  January 25, 1991
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  71.  
  72.  
  73.  
  74.                NOTE: This assembler allows for the output formats to
  75.                be expanded to include many different output formats.
  76.  
  77.           -Aarg
  78.                This option specifies a format specific string which is
  79.                passed to the format generator. Both format "tdr" and
  80.                the srecord formats use this option.
  81.  
  82.           -l   This option tells the assembler to also generate a
  83.                listing file.  A listing will be placed in the file
  84.                infile.lst. Where 'infile' is the file that is being
  85.                assembled. This option may appear anywhere before
  86.                infile.asm. The option must occur isolated on the
  87.                command line.
  88.  
  89.                The listing file shows the assembler generated code in
  90.                hex, and up to 60 characters are retained from the
  91.                source file.
  92.  
  93.  
  94.      A✓A✓A✓AS✓S✓S✓SS✓S✓S✓SE✓E✓E✓EM✓M✓M✓MB✓B✓B✓BL✓L✓L✓LE✓E✓E✓ER✓R✓R✓R I✓I✓I✓IN✓N✓N✓NS✓S✓S✓ST✓T✓T✓TR✓R✓R✓RU✓U✓U✓UC✓C✓C✓CT✓T✓T✓TI✓I✓I✓IO✓O✓O✓ON✓N✓N✓NS✓S✓S✓S
  95.           This assembler accepts standard 8031/8051 instruction
  96.           formats.  Below is a list of instructions and addressing
  97.           modes.
  98.  
  99.  
  100.                INSTRUCTION                             BYTES     CYCLES
  101.                -----------                             -----     ------
  102.                ACALL     addr11                        2         24
  103.                ADD       A, #data8                     2         12
  104.                ADD       A, @Ri                        1         12
  105.                ADD       A, Rn                         1         12
  106.                ADD       A, direct                     2         12
  107.                ADDC      A, #data8                     2         12
  108.                ADDC      A, @Ri                        1         12
  109.                ADDC      A, Rn                         1         12
  110.                ADDC      A, direct                     2         12
  111.                AJMP      addr11                        2         24
  112.                ANL       A, #data8                     2         12
  113.                ANL       A, @Ri                        1         12
  114.                ANL       A, Rn                         1         12
  115.                ANL       A, direct                     2         12
  116.                ANL       C, /bit                       2         24
  117.                ANL       C, !bit                       2         24
  118.                ANL       C, bit                        2         24
  119.                ANL       direct, #data8                3         24
  120.                ANL       direct, A                     2         12
  121.                CJNE      @Ri, #data8, rel              3         24
  122.                CJNE      A, #data8, rel                3         24
  123.                CJNE      A, direct, rel                3         24
  124.                CJNE      Rn, #data8, rel               3         24
  125.                CLR       A                             1         12
  126.  
  127.  
  128.  
  129.                                    - 2 -  Formatted:  January 25, 1991
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  137.  
  138.  
  139.  
  140.                CLR       C                             1         12
  141.                CLR       bit                           2         12
  142.                CPL       A                             1         12
  143.                CPL       C                             1         12
  144.                CPL       bit                           2         12
  145.                DA        A                             1         12
  146.                DEC       @Ri                           1         12
  147.                DEC       A                             1         12
  148.                DEC       DPTR                          1         12
  149.                DEC       Rn                            1         12
  150.                DEC       direct                        2         12
  151.                DIV       AB                            1         48
  152.                DJNZ      Rn, rel                       2         24
  153.                DJNZ      direct, rel                   3         24
  154.                INC       @Ri                           1         12
  155.                INC       A                             1         12
  156.                INC       DPTR                          1         24
  157.                INC       Rn                            1         12
  158.                INC       direct                        2         12
  159.                JB        bit, rel                      3         24
  160.                JBC       bit, rel                      3         24
  161.                JC        relative                      2         24
  162.                JMP       @A + DPTR                     1         24
  163.                JMP       @DPTR + A                     1         24
  164.                JNB       bit, rel                      3         24
  165.                JNC       relative                      2         24
  166.                JNZ       relative                      2         24
  167.                JZ        relative                      2         24
  168.                LCALL     addr16                        3         24
  169.                LJMP      addr16                        3         24
  170.                MOV       @Ri, #data8                   2         12
  171.                MOV       @Ri, A                        1         12
  172.                MOV       @Ri, direct                   2         24
  173.                MOV       A, #data8                     2         12
  174.                MOV       A, @Ri                        1         12
  175.                MOV       A, Rn                         1         12
  176.                MOV       A, direct                     2         12
  177.                MOV       C, bit                        2         12
  178.                MOV       DPTR, #data16                 3         24
  179.                MOV       Rn, #data8                    2         12
  180.                MOV       Rn, A                         1         12
  181.                MOV       Rn, direct                    2         24
  182.                MOV       bit, C                        2         24
  183.                MOV       direct, #data8                3         24
  184.                MOV       direct, @Ri                   2         24
  185.                MOV       direct, A                     2         12
  186.                MOV       direct, Rn                    2         24
  187.                MOV       direct, direct                3         24
  188.                MOVC      A, @A + DPTR                  1         24
  189.                MOVC      A, @A + PC                    1         24
  190.                MOVC      A, @DPTR + A                  1         24
  191.                MOVC      A, @PC + A                    1         24
  192.  
  193.  
  194.  
  195.                                    - 3 -  Formatted:  January 25, 1991
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  203.  
  204.  
  205.  
  206.                MOVX      @DPTR, A                      1         12
  207.                MOVX      @Ri, A                        1         24
  208.                MOVX      A, @DPTR                      1         24
  209.                MOVX      A, @Ri                        1         24
  210.                MUL       AB                            1         48
  211.                NOP                                     1         12
  212.                ORL       A, #data8                     2         12
  213.                ORL       A, @Ri                        1         12
  214.                ORL       A, Rn                         1         12
  215.                ORL       A, direct                     2         12
  216.                ORL       C, /bit                       2         24
  217.                ORL       C, !bit                       2         24
  218.                ORL       C, bit                        2         24
  219.                ORL       direct, #data8                3         24
  220.                ORL       direct, A                     2         12
  221.                POP       direct                        2         24
  222.                PUSH      direct                        2         24
  223.                RET                                     1         24
  224.                RETI                                    1         24
  225.                RL        A                             1         12
  226.                RLC       A                             1         12
  227.                RR        A                             1         12
  228.                RRC       A                             1         12
  229.                SETB      A                             1         12
  230.                SETB      bit                           2         12
  231.                SJMP      relative                      2         24
  232.                SUBB      A, #data8                     2         12
  233.                SUBB      A, @Ri                        1         12
  234.                SUBB      A, Rn                         1         12
  235.                SUBB      A, direct                     2         12
  236.                SWAP      A                             1         12
  237.                XCH       A, #data8                     2         12
  238.                XCH       A, @Ri                        1         12
  239.                XCH       A, Rn                         1         12
  240.                XCH       A, direct                     2         12
  241.                XCHD      A, #data8                     2         12
  242.                XCHD      A, @Ri                        1         12
  243.                XCHD      A, Rn                         1         12
  244.                XCHD      A, direct                     2         12
  245.                XRL       A, #data8                     2         12
  246.                XRL       A, @Ri                        1         12
  247.                XRL       A, Rn                         1         12
  248.                XRL       A, direct                     2         12
  249.                XRL       direct, #data8                3         12
  250.                XRL       direct, A                     2         12
  251.  
  252.  
  253.      A✓A✓A✓AS✓S✓S✓SS✓S✓S✓SE✓E✓E✓EM✓M✓M✓MB✓B✓B✓BL✓L✓L✓LE✓E✓E✓ER✓R✓R✓R D✓D✓D✓DI✓I✓I✓IR✓R✓R✓RE✓E✓E✓EC✓C✓C✓CT✓T✓T✓TI✓I✓I✓IV✓V✓V✓VE✓E✓E✓ES✓S✓S✓S
  254.           As31 includes the following assembler directives:
  255.  
  256.           .ORG expr
  257.                Start assembling at the address specified by the
  258.  
  259.  
  260.  
  261.                                    - 4 -  Formatted:  January 25, 1991
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  269.  
  270.  
  271.  
  272.                expression expr.  An error occurs if the assembler
  273.                starts assembling over an address space that has
  274.                previously been assembled into.
  275.  
  276.  
  277.           .EQU symbol, expr
  278.                Set symbol to the value of expr. The value for expr
  279.                must be known during the first pass, when the line
  280.                containing the .EQU is encountered.
  281.  
  282.  
  283.           .BYTE expr, expr, ...
  284.                Assemble the bytes specified by the expression into
  285.                memory. A string may also be specified with this
  286.                directive.
  287.  
  288.  
  289.           .WORD expr, expr, ...
  290.                Assemble the words specified by the expression into
  291.                memory.  The byte ordering used, is that used by the
  292.                8031.
  293.  
  294.  
  295.           .FLAG symbol1, symbol.[0-7]
  296.                Sets symbol1 to the bit address specified by the
  297.                symbol.[0-7] expression. Where [0-7] denotes a
  298.                character between 0 and 7.  The resulting bit address
  299.                is checked to see if it is a valid bit address.
  300.  
  301.  
  302.           .END This directive is ignored.
  303.  
  304.  
  305.           .SKIP expr
  306.                Adds the value of expr to the location counter. Used to
  307.                reserve a block of uninitialized data. Expr should be
  308.                in bytes.
  309.  
  310.  
  311.      L✓L✓L✓LE✓E✓E✓EX✓X✓X✓XI✓I✓I✓IC✓C✓C✓CA✓A✓A✓AL✓L✓L✓L C✓C✓C✓CO✓O✓O✓ON✓N✓N✓NV✓V✓V✓VE✓E✓E✓EN✓N✓N✓NT✓T✓T✓TI✓I✓I✓IO✓O✓O✓ON✓N✓N✓NS✓S✓S✓S
  312.           -    All characters following a semi-colon are ignored until
  313.                a newline is encountered.
  314.  
  315.  
  316.           -    All numbers default to decimal, unless the number
  317.                starts with one of the following:
  318.  
  319.                0x or 0X
  320.                     This indicates a hexadecimal number. ie. 0x00ff
  321.  
  322.                0b or 0B
  323.                     This indicates a binary number. (1's and 0's). ie.
  324.  
  325.  
  326.  
  327.                                    - 5 -  Formatted:  January 25, 1991
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  335.  
  336.  
  337.  
  338.                     0b1100110010
  339.  
  340.                0    This indicates an octal number. ie. 0377
  341.  
  342.           -    All numbers default to decimal, unless the number ends
  343.                with one of the following characters:
  344.  
  345.                b or B
  346.                     This indicates a binary number. Unless 0x was used
  347.                     above.  ie. 1010101b
  348.  
  349.                h or H
  350.                     This always indicates a hex number, However the if
  351.                     the first character is non-numerical, then either
  352.                     0x or 0 must be specified.  This avoids confusing
  353.                     the assembler into thinking a hex number is a
  354.                     symbol.  For example: 0ffh, 0xffh, 0XffH, 20h,
  355.                     0x20 and 020h are means to specify a valid
  356.                     hexdigit. But the following are not: ffh, 0ff.
  357.  
  358.                d or D
  359.                     This forces a number to decimal. Unless 0X was
  360.                     used. ie. 129d
  361.  
  362.                o or O
  363.                     This causes the number to be interpreted as octal.
  364.                     ie. 377o
  365.  
  366.  
  367.           -    A character constant can be entered as 'c' where c is
  368.                some character. \b, \n, \r, \t, \' \0 are also valid. A
  369.                character constant can be used anywhere that an integer
  370.                value can.
  371.  
  372.  
  373.           -    A string is entered as a set of characters enclosed in
  374.                double quotes "".  A string is only valid with the
  375.                .BYTE directive. \b, \n, \r, \t, \" are also valid
  376.                escapes. However \0 is not.
  377.  
  378.  
  379.           -    Instructions, directives, and the symbols: R0, R1, R2,
  380.                R3, R4, R5, R6, R7, A, AB, and C can be entered in
  381.                upper or lower case without assembler confusion. These
  382.                words however cannot be defined as a user symbol.  Any
  383.                user symbol may be used, and case will be preserved. So
  384.                the user symbols "foo" and "Foo" are different, but
  385.                "addc" is the same as "aDdC".
  386.  
  387.  
  388.           -    A symbol can be any alpha numerical character plus the
  389.                underscore ('_').
  390.  
  391.  
  392.  
  393.                                    - 6 -  Formatted:  January 25, 1991
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  401.  
  402.  
  403.  
  404.           -    Expressions are accepted in most places where a value
  405.                or a symbol is needed. An expression consists of the
  406.                following operators. All operators evaulate to integer
  407.                objects (higher precedence opertors listed first):
  408.  
  409.                -    Unary minus
  410.  
  411.                &    Bit-wise AND.
  412.  
  413.                |    Bit-Wise OR.
  414.  
  415.                *    Integer multiplication.
  416.  
  417.                     \ Integer division
  418.  
  419.                %    Intieger modulus
  420.  
  421.                +    Integer addition.
  422.  
  423.                -    Integer subtraction.
  424.  
  425.           -    In addition to these operators, a special symbol '*'
  426.                may be used to represent the current location counter.
  427.  
  428.  
  429.      E✓E✓E✓EX✓X✓X✓XA✓A✓A✓AM✓M✓M✓MP✓P✓P✓PL✓L✓L✓LE✓E✓E✓ES✓S✓S✓S
  430.                Below is a sample assembly program.
  431.  
  432.                                .org    0
  433.                start:          mov     P3, #0xff       ; use alternate fns on P3
  434.                                                                        ; leds on P1 are inverted.
  435.                                setb    F0              ; climbing up
  436.                                mov     A, #0x01        ; initial bit
  437.  
  438.                write:          cpl     A               ; write it
  439.                                mov     P1, A
  440.                                cpl     A
  441.                                acall   delay
  442.                                jb      F0, climbup     ; climbing which way?
  443.  
  444.                climbdn:        rr      A               ; down - shift right
  445.                                jnb     ACC.0, write    ; back for more
  446.                                setb    F0
  447.                                ajmp    write
  448.  
  449.                climbup:        rl      A               ; up - shift left
  450.                                jnb     ACC.7, write    ; back for more
  451.                                clr     F0
  452.                                ajmp    write
  453.                                .end                              ; this directive ignored.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                    - 7 -  Formatted:  January 25, 1991
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)                                                 A✓A✓A✓AS✓S✓S✓S3✓3✓3✓31✓1✓1✓1(✓(✓(✓(1✓1✓1✓1L✓L✓L✓L)✓)✓)✓)
  467.  
  468.  
  469.  
  470.      A✓A✓A✓AU✓U✓U✓UT✓T✓T✓TH✓H✓H✓HO✓O✓O✓OR✓R✓R✓R
  471.           Ken Stauffer (University of Calgary)
  472.           stauffer@cpsc.ucalgary.ca
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                    - 8 -  Formatted:  January 25, 1991
  526.  
  527.  
  528.  
  529.