Imported Upstream version 2.9.0
[debian/cc1111] / as / doc / appendk.txt
1 \f
2
3
4
5
6
7
8
9
10
11
12
13
14
15                                    APPENDIX K
16
17                                 AS8051 ASSEMBLER
18
19
20
21
22
23         K.1  8051 REGISTER SET 
24
25         The following is a list of the 8051 registers used by AS8051:  
26
27                 a,b             -       8-bit accumulators
28                 r0,r1,r2,r3     -       8-bit registers
29                 r4,r5,r6,r7
30                 dptr            -       data pointer
31                 sp              -       stack pointer
32                 pc              -       program counter
33                 psw             -       status word
34                 c               -       carry (bit in status word)
35
36
37         K.2  8051 INSTRUCTION SET 
38
39
40            The  following tables list all 8051 mnemonics recognized
41         by the AS8051  assembler.   The  following  list  specifies  the
42         format for each addressing mode supported by AS8051:  
43
44                 #data           immediate data
45                                 byte or word data
46         
47                 r,r1,r2         register r0,r1,r2,r3,r4,r5,r6, or r7
48         
49                 @r              indirect on register r0 or r1
50                 @dptr           indirect on data pointer
51                 @a+dptr         indirect on accumulator plus data pointer
52                 @a+pc           indirect on accumulator plus program counter
53                 
54                 addr            direct memory address
55
56                 bitaddr         bit address
57         
58                 label           call or jump label
59
60         The terms data, addr, bitaddr, and label may all be expressions.  
61
62            Note  that  not all addressing modes are valid with every in-
63         struction.  Refer to  the  8051  technical  data  for  valid
64         modes.  
65
66
67         K.2.1  Inherent Instructions 
68
69                 nop
70
71
72         K.2.6  Move Instructions 
73
74                 mov     a,#data         mov     a,addr
75                 mov     a,r             mov     a,@r
76
77                 mov     r,#data         mov     r,addr
78                 mov     r,a
79
80                 mov     addr,a          mov     addr,#data
81                 mov     addr,r          mov     addr,@r
82                 mov     addr1,addr2     mov     bitaddr,c
83         
84                 mov     @r,#data        mov     @r,addr
85                 mov     @r,a
86
87                 mov     c,bitaddr
88                 mov     dptr,#data
89
90                 movc    a,@a+dptr       movc    a,@a+pc
91                 movx    a,@dptr         movx    a,@r
92                 movx    @dptr,a         movx    @r,a
93
94
95         K.2.8  Single Operand Instructions
96
97                 clr     a               clr     c       
98                 clr     bitaddr
99                 cpl     a               cpl     c       
100                 cpl     bitaddr
101                 setb    c               setb    bitaddr
102
103                 da      a               
104                 rr      a               rrc     a
105                 rl      a               rlc     a
106                 swap    a
107
108                 dec     a               dec     r       
109                 dec     @r
110                 inc     a               inc     r       
111                 inc     dptr            inc     @r
112
113                 div     ab              mul     ab
114
115                 pop     addr            push    addr
116
117
118         K.2.8  Two Operand Instructions
119
120                 add     a,#data         add     a,addr  
121                 add     a,r             add     a,@r
122                 addc    a,#data         addc    a,addr  
123                 addc    a,r             addc    a,@r
124                 subb    a,#data         subb    a,addr  
125                 subb    a,r             subb    a,@r
126                 orl     a,#data         orl     a,addr  
127                 orl     a,r             orl     a,@r
128                 orl     addr,a          orl     addr,#data
129                 orl     c,bitaddr       orl     c,/bitaddr
130                 anl     a,#data         anl     a,addr
131                 anl     a,r             anl     a,@r
132                 anl     addr,a          anl     addr,#data
133                 anl     c,bitaddr       anl     c,/bitaddr
134                 xrl     a,#data         xrl     a,addr
135                 xrl     a,r             xrl     a,@r
136                 xrl     addr,a          xrl     addr,#data
137                 xrl     c,bitaddr       xrl     c,/bitaddr
138                 xch     a,addr          xch     a,r     
139                 xch     a,@r            xchd    a,@r
140
141
142         K.2.3  Call and Return Instructions 
143
144                 acall   label           lcall   label
145                 ret                     reti
146
147         K.2.4  Jump Instructions 
148
149                 ajmp    label
150                 cjne    a,#data,label   cjne    a,addr,label
151                 cjne    r,#data,label   cjne    @r,#data,label
152                 djnz    r,label         djnz    addr,label
153                 jbc     bitadr,label
154                 jb      bitadr,label    jnb     bitadr,label
155                 jc      label           jnc     label
156                 jz      label           jnz     label
157                 jmp     @a+dptr
158                 ljmp    label           sjmp    label