OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [sing-op_rrc.s43] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 olivier.gi
/*===========================================================================*/
2
/* Copyright (C) 2001 Authors                                                */
3
/*                                                                           */
4
/* This source file may be used and distributed without restriction provided */
5
/* that this copyright statement is not removed from the file and that any   */
6
/* derivative work contains the original copyright notice and the associated */
7
/* disclaimer.                                                               */
8
/*                                                                           */
9
/* This source file is free software; you can redistribute it and/or modify  */
10
/* it under the terms of the GNU Lesser General Public License as published  */
11
/* by the Free Software Foundation; either version 2.1 of the License, or    */
12
/* (at your option) any later version.                                       */
13
/*                                                                           */
14
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
15
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
16
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
17
/* License for more details.                                                 */
18
/*                                                                           */
19
/* You should have received a copy of the GNU Lesser General Public License  */
20
/* along with this source; if not, write to the Free Software Foundation,    */
21
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
22
/*                                                                           */
23
/*===========================================================================*/
24
/*                 SINGLE-OPERAND ARITHMETIC: RRC[.B] INSTRUCTION            */
25
/*---------------------------------------------------------------------------*/
26
/* Test the RRC[.B] instruction.                                             */
27
/*===========================================================================*/
28
 
29
 
30
.global main
31
 
32
main:
33
        /* -------------- TEST INSTRUCTION IN WORD MODE ------------------- */
34
 
35
 
36
        # Addressing mode: Rn
37
        #------------------------
38
 
39
        mov     #0x0000, r2        ;# Test 1
40
        mov     #0x3332, r4
41
        rrc          r4            ;# RRC ({C=0, r4=0x3332}  => {r4=0x1999, C=0})
42
        mov          r2, r5
43
 
44
        mov     #0x0000, r2        ;# Test 2
45
        mov     #0x3333, r6
46
        rrc          r6            ;# RRC ({C=0, r6=0x3333}  => {r6=0x1999, C=1})
47
        mov          r2, r7
48
 
49
        mov     #0x0001, r2        ;# Test 3
50
        mov     #0x3332, r8
51
        rrc          r8            ;# RRC ({C=1, r9=0x3332}  => {r9=0x9999, C=0})
52
        mov          r2, r9
53
 
54
        mov     #0x0001, r2        ;# Test 4
55
        mov     #0x3333, r10
56
        rrc         r10            ;# RRC ({C=1, r10=0x3333} => {r10=0x9999, C=1})
57
        mov          r2, r11
58
 
59
        mov     #0x1000, r15
60
 
61
 
62
        # Addressing mode: @Rn
63
        #------------------------
64
 
65
        mov     #0x0000, r2        ;# Test 1
66
        mov     #0x3332, &0x0200
67
        mov     #0x0200, r4
68
        mov     #0xaaaa, &0x0202
69
        rrc         @r4            ;# RRC ({C=0, mem00=0x3332}  => {mem00=0x1999, C=0})
70
        mov          r2, r5
71
 
72
        mov     #0x0000, r2        ;# Test 2
73
        mov     #0x3333, &0x0202
74
        mov     #0x0202, r6
75
        mov     #0xaaaa, &0x0204
76
        rrc         @r6            ;# RRC ({C=0, mem01=0x3333}  => {mem01=0x1999, C=1})
77
        mov          r2, r7
78
 
79
        mov     #0x0001, r2        ;# Test 3
80
        mov     #0x3332, &0x0204
81
        mov     #0x0204, r8
82
        mov     #0xaaaa, &0x0206
83
        rrc         @r8            ;# RRC ({C=1, mem02=0x3332}  => {mem02=0x9999, C=0})
84
        mov          r2, r9
85
 
86
        mov     #0x0001, r2        ;# Test 4
87
        mov     #0x3333, &0x0206
88
        mov     #0x0206, r10
89
        mov     #0xaaaa, &0x0208
90
        rrc        @r10            ;# RRC ({C=1, mem03=0x3333}  => {mem03=0x9999, C=1})
91
        mov          r2, r11
92
 
93
        mov     #0x2000, r15
94
 
95
 
96
        # Addressing mode: @Rn+
97
        #------------------------
98
 
99
        mov     #0x0000, r2        ;# Test 1
100
        mov     #0x3332, &0x0208
101
        mov     #0x0208, r4
102
        mov     #0xaaaa, &0x020A
103
        rrc        @r4+            ;# RRC ({C=0, mem04=0x3332}  => {mem04=0x1999, C=0})
104
        mov          r2, r5
105
 
106
        mov     #0x0000, r2        ;# Test 2
107
        mov     #0x3333, &0x020A
108
        mov     #0x020A, r6
109
        mov     #0xaaaa, &0x020C
110
        rrc        @r6+            ;# RRC ({C=0, mem05=0x3333}  => {mem05=0x1999, C=1})
111
        mov          r2, r7
112
 
113
        mov     #0x0001, r2        ;# Test 3
114
        mov     #0x3332, &0x020C
115
        mov     #0x020C, r8
116
        mov     #0xaaaa, &0x020E
117
        rrc        @r8+            ;# RRC ({C=1, mem06=0x3332}  => {mem06=0x9999, C=0})
118
        mov          r2, r9
119
 
120
        mov     #0x0001, r2        ;# Test 4
121
        mov     #0x3333, &0x020E
122
        mov     #0x020E, r10
123
        mov     #0xaaaa, &0x0210
124
        rrc       @r10+            ;# RRC ({C=1, mem07=0x3333}  => {mem07=0x9999, C=1})
125
        mov          r2, r11
126
 
127
        mov     #0x3000, r15
128
 
129
 
130
        # Addressing mode: X(Rn)
131
        #------------------------
132
 
133
        mov     #0x0000, r2        ;# Test 1
134
        mov     #0x3332, &0x0210
135
        mov     #0x0200, r4
136
        mov     #0xaaaa, &0x0212
137
        rrc       16(r4)            ;# RRC ({C=0, mem08=0x3332}  => {mem08=0x1999, C=0})
138
        mov          r2, r5
139
 
140
        mov     #0x0000, r2        ;# Test 2
141
        mov     #0x3333, &0x0212
142
        mov     #0x0200, r6
143
        mov     #0xaaaa, &0x0214
144
        rrc       18(r6)            ;# RRC ({C=0, mem09=0x3333}  => {mem09=0x1999, C=1})
145
        mov          r2, r7
146
 
147
        mov     #0x0001, r2        ;# Test 3
148
        mov     #0x3332, &0x0214
149
        mov     #0x0200, r8
150
        mov     #0xaaaa, &0x0216
151
        rrc       20(r8)            ;# RRC ({C=1, mem0a=0x3332}  => {mem0a=0x9999, C=0})
152
        mov          r2, r9
153
 
154
        mov     #0x0001, r2        ;# Test 4
155
        mov     #0x3333, &0x0216
156
        mov     #0x0200, r10
157
        mov     #0xaaaa, &0x0218
158
        rrc      22(r10)            ;# RRC ({C=1, mem0b=0x3333}  => {mem0b=0x9999, C=1})
159
        mov          r2, r11
160
 
161
        mov     #0x4000, r15
162
 
163
 
164
        # Addressing mode: EDE
165
        #------------------------
166
.set   EDE_218,  (__data_start+0x0018)
167
.set   EDE_21A,  (__data_start+0x001A)
168
.set   EDE_21C,  (__data_start+0x001C)
169
.set   EDE_21E,  (__data_start+0x001E)
170
 
171
        mov     #0x0000, r2        ;# Test 1
172
        mov     #0x3332, &0x0218
173
        mov     #0xaaaa, &0x021A
174
        rrc     EDE_218            ;# RRC ({C=0, mem0c=0x3332}  => {mem0c=0x1999, C=0})
175
        mov          r2, r5
176
 
177
        mov     #0x0000, r2        ;# Test 2
178
        mov     #0x3333, &0x021A
179
        mov     #0xaaaa, &0x021C
180
        rrc     EDE_21A            ;# RRC ({C=0, mem0d=0x3333}  => {mem0d=0x1999, C=1})
181
        mov          r2, r7
182
 
183
        mov     #0x0001, r2        ;# Test 3
184
        mov     #0x3332, &0x021C
185
        mov     #0xaaaa, &0x021E
186
        rrc     EDE_21C            ;# RRC ({C=1, mem0e=0x3332}  => {mem0e=0x9999, C=0})
187
        mov          r2, r9
188
 
189
        mov     #0x0001, r2        ;# Test 4
190
        mov     #0x3333, &0x021E
191
        mov     #0xaaaa, &0x0220
192
        rrc     EDE_21E            ;# RRC ({C=1, mem0f=0x3333}  => {mem0f=0x9999, C=1})
193
        mov          r2, r11
194
 
195
        mov     #0x5000, r15
196
 
197
 
198
        # Addressing mode: &EDE
199
        #------------------------
200
.set   aEDE_220,  0x0220
201
.set   aEDE_222,  0x0222
202
.set   aEDE_224,  0x0224
203
.set   aEDE_226,  0x0226
204
 
205
        mov     #0x0000, r2        ;# Test 1
206
        mov     #0x3332, &0x0220
207
        mov     #0xaaaa, &0x0222
208
        rrc   &aEDE_220            ;# RRC ({C=0, mem10=0x3332}  => {mem10=0x1999, C=0})
209
        mov          r2, r5
210
 
211
        mov     #0x0000, r2        ;# Test 2
212
        mov     #0x3333, &0x0222
213
        mov     #0xaaaa, &0x0224
214
        rrc   &aEDE_222            ;# RRC ({C=0, mem11=0x3333}  => {mem11=0x1999, C=1})
215
        mov          r2, r7
216
 
217
        mov     #0x0001, r2        ;# Test 3
218
        mov     #0x3332, &0x0224
219
        mov     #0xaaaa, &0x0226
220
        rrc   &aEDE_224            ;# RRC ({C=1, mem12=0x3332}  => {mem12=0x9999, C=0})
221
        mov          r2, r9
222
 
223
        mov     #0x0001, r2        ;# Test 4
224
        mov     #0x3333, &0x0226
225
        mov     #0xaaaa, &0x0228
226
        rrc   &aEDE_226            ;# RRC ({C=1, mem13=0x3333}  => {mem13=0x9999, C=1})
227
        mov          r2, r11
228
 
229
        mov     #0x6000, r15
230
 
231
 
232
        /* ----------------------- CLEAR MEMORY --------------------------- */
233
        mov     #0x0015, r4
234
        mov     #0x0200, r5
235
clear_mem_loop:
236
        clr    0(r5)
237
        incd     r5
238
        dec      r4
239
        jnz     clear_mem_loop
240
 
241
        mov     #0x7000, r15
242
 
243
 
244
        /* -------------- TEST INSTRUCTION IN BYTE MODE ------------------- */
245
 
246
        # Addressing mode: Rn
247
        #------------------------
248
 
249
        mov     #0x0000, r2    ;# Test 1
250
        mov     #0xff32, r4
251
        rrc.b        r4        ;# RRC.B ({C=0, r4=0x32}  => {r4=0x19, C=0})
252
        mov          r2, r5
253
 
254
        mov     #0x0000, r2    ;# Test 2
255
        mov     #0xff33, r6
256
        rrc.b        r6        ;# RRC.B ({C=0, r6=0x33}  => {r6=0x19, C=1})
257
        mov          r2, r7
258
 
259
        mov     #0x0001, r2    ;# Test 3
260
        mov     #0xf032, r8
261
        rrc.b        r8        ;# RRC.B ({C=1, r9=0x32}  => {r9=0x99, C=0})
262
        mov          r2, r9
263
 
264
        mov     #0x0001, r2    ;# Test 4
265
        mov     #0xf033, r10
266
        rrc.b       r10        ;# RRC.B ({C=1, r10=0x33} => {r10=0x99, C=1})
267
        mov          r2, r11
268
 
269
        mov     #0x8000, r15
270
 
271
 
272
        # Addressing mode: @Rn (Low Byte)
273
        #---------------------------------
274
 
275
        mov     #0x0000, r2        ;# Test 1: Low Byte
276
        mov     #0x2532, &0x0200
277
        mov     #0x0200, r4
278
        mov     #0xaaaa, &0x0202
279
        rrc.b       @r4            ;# RRC.B ({C=0, mem00=0x2532}  => {mem00=0x2519, C=0})
280
        mov          r2, r5
281
 
282
        mov     #0x0000, r2        ;# Test 2: Low Byte
283
        mov     #0x2533, &0x0202
284
        mov     #0x0202, r6
285
        mov     #0xaaaa, &0x0204
286
        rrc.b       @r6            ;# RRC.B ({C=0, mem01=0x2533}  => {mem01=0x2519, C=1})
287
        mov          r2, r7
288
 
289
        mov     #0x0001, r2        ;# Test 3: Low Byte
290
        mov     #0x2532, &0x0204
291
        mov     #0x0204, r8
292
        mov     #0xaaaa, &0x0206
293
        rrc.b       @r8            ;# RRC.B ({C=1, mem02=0x2532}  => {mem02=0x2599, C=0})
294
        mov          r2, r9
295
 
296
        mov     #0x0001, r2        ;# Test 4: Low Byte
297
        mov     #0x2533, &0x0206
298
        mov     #0x0206, r10
299
        mov     #0xaaaa, &0x0208
300
        rrc.b      @r10            ;# RRC.B ({C=1, mem03=0x2533}  => {mem03=0x2599, C=1})
301
        mov          r2, r11
302
 
303
        mov     #0x9000, r15
304
 
305
        # Addressing mode: @Rn (High Byte)
306
        #---------------------------------
307
 
308
        mov     #0x0000, r2        ;# Test 1: High Byte
309
        mov     #0x3225, &0x0208
310
        mov     #0x0209, r4
311
        mov     #0xaaaa, &0x020A
312
        rrc.b       @r4            ;# RRC.B ({C=0, mem04=0x3225}  => {mem04=0x1925, C=0})
313
        mov          r2, r6
314
 
315
        mov     #0x0000, r2        ;# Test 2: High Byte
316
        mov     #0x3325, &0x020A
317
        mov     #0x020B, r6
318
        mov     #0xaaaa, &0x020C
319
        rrc.b       @r6            ;# RRC.B ({C=0, mem05=0x3325}  => {mem05=0x1925, C=1})
320
        mov          r2, r8
321
 
322
        mov     #0x0001, r2        ;# Test 3: High Byte
323
        mov     #0x3225, &0x020C
324
        mov     #0x020D, r8
325
        mov     #0xaaaa, &0x020E
326
        rrc.b       @r8            ;# RRC.B ({C=1, mem06=0x3225}  => {mem06=0x9925, C=0})
327
        mov          r2, r10
328
 
329
        mov     #0x0001, r2        ;# Test 4: High Byte
330
        mov     #0x3325, &0x020E
331
        mov     #0x020F, r10
332
        mov     #0xaaaa, &0x0210
333
        rrc.b      @r10            ;# RRC.B ({C=1, mem07=0x3325}  => {mem07=0x9925, C=1})
334
        mov          r2, r11
335
 
336
        mov     #0x9001, r15
337
 
338
 
339
        # Addressing mode: @Rn+ (Low Byte)
340
        #---------------------------------
341
 
342
        mov     #0x0000, r2        ;# Test 1: Low Byte
343
        mov     #0x2532, &0x0210
344
        mov     #0x0210, r4
345
        mov     #0xaaaa, &0x0212
346
        rrc.b      @r4+            ;# RRC.B ({C=0, mem08=0x2532}  => {mem08=0x2519, C=0})
347
        mov          r2, r5
348
 
349
        mov     #0x0000, r2        ;# Test 2: Low Byte
350
        mov     #0x2533, &0x0212
351
        mov     #0x0212, r6
352
        mov     #0xaaaa, &0x0214
353
        rrc.b      @r6+            ;# RRC.B ({C=0, mem09=0x2533}  => {mem09=0x2519, C=1})
354
        mov          r2, r7
355
 
356
        mov     #0x0001, r2        ;# Test 3: Low Byte
357
        mov     #0x2532, &0x0214
358
        mov     #0x0214, r8
359
        mov     #0xaaaa, &0x0216
360
        rrc.b      @r8+            ;# RRC.B ({C=1, mem0a=0x2532}  => {mem0a=0x2599, C=0})
361
        mov          r2, r9
362
 
363
        mov     #0x0001, r2        ;# Test 4: Low Byte
364
        mov     #0x2533, &0x0216
365
        mov     #0x0216, r10
366
        mov     #0xaaaa, &0x0218
367
        rrc.b     @r10+            ;# RRC.B ({C=1, mem0b=0x2533}  => {mem0b=0x2599, C=1})
368
        mov          r2, r11
369
 
370
        mov     #0xA000, r15
371
 
372
        # Addressing mode: @Rn+ (High Byte)
373
        #-----------------------------------
374
 
375
        mov     #0x0000, r2        ;# Test 1: High Byte
376
        mov     #0x3225, &0x0218
377
        mov     #0x0219, r4
378
        mov     #0xaaaa, &0x021A
379
        rrc.b      @r4+            ;# RRC.B ({C=0, mem0c=0x3225}  => {mem0c=0x1925, C=0})
380
        mov          r2, r6
381
 
382
        mov     #0x0000, r2        ;# Test 2: High Byte
383
        mov     #0x3325, &0x021A
384
        mov     #0x021B, r6
385
        mov     #0xaaaa, &0x021C
386
        rrc.b      @r6+            ;# RRC.B ({C=0, mem0d=0x3325}  => {mem0d=0x1925, C=1})
387
        mov          r2, r8
388
 
389
        mov     #0x0001, r2        ;# Test 3: High Byte
390
        mov     #0x3225, &0x021C
391
        mov     #0x021D, r8
392
        mov     #0xaaaa, &0x021E
393
        rrc.b      @r8+            ;# RRC.B ({C=1, mem0e=0x3225}  => {mem0e=0x9925, C=0})
394
        mov          r2, r10
395
 
396
        mov     #0x0001, r2        ;# Test 4: High Byte
397
        mov     #0x3325, &0x021E
398
        mov     #0x021F, r10
399
        mov     #0xaaaa, &0x0220
400
        rrc.b     @r10+            ;# RRC.B ({C=1, mem0f=0x3325}  => {mem0f=0x9925, C=1})
401
        mov          r2, r11
402
 
403
        mov     #0xA001, r15
404
 
405
 
406
        # Addressing mode: X(Rn) (Low Byte)
407
        #-----------------------------------
408
 
409
        mov     #0x0000, r2        ;# Test 1
410
        mov     #0x2532, &0x0220
411
        mov     #0x0200, r4
412
        mov     #0xaaaa, &0x0222
413
        rrc.b     32(r4)           ;# RRC ({C=0, mem10=0x2532}  => {mem10=0x2519, C=0})
414
        mov          r2, r5
415
 
416
        mov     #0x0000, r2        ;# Test 2
417
        mov     #0x2533, &0x0222
418
        mov     #0x0200, r6
419
        mov     #0xaaaa, &0x0224
420
        rrc.b     34(r6)           ;# RRC ({C=0, mem11=0x2533}  => {mem11=0x2519, C=1})
421
        mov          r2, r7
422
 
423
        mov     #0x0001, r2        ;# Test 3
424
        mov     #0x2532, &0x0224
425
        mov     #0x0200, r8
426
        mov     #0xaaaa, &0x0226
427
        rrc.b     36(r8)           ;# RRC ({C=1, mem12=0x2532}  => {mem12=0x2599, C=0})
428
        mov          r2, r9
429
 
430
        mov     #0x0001, r2        ;# Test 4
431
        mov     #0x2533, &0x0226
432
        mov     #0x0200, r10
433
        mov     #0xaaaa, &0x0228
434
        rrc.b    38(r10)           ;# RRC ({C=1, mem13=0x2533}  => {mem13=0x2599, C=1})
435
        mov          r2, r11
436
 
437
        mov     #0xB000, r15
438
 
439
        # Addressing mode: X(Rn) (High Byte)
440
        #------------------------------------
441
 
442
        mov     #0x0000, r2        ;# Test 1
443
        mov     #0x3225, &0x0228
444
        mov     #0x0200, r4
445
        mov     #0xaaaa, &0x022A
446
        rrc.b     41(r4)           ;# RRC ({C=0, mem14=0x3225}  => {mem14=0x1925, C=0})
447
        mov          r2, r5
448
 
449
        mov     #0x0000, r2        ;# Test 2
450
        mov     #0x3325, &0x022A
451
        mov     #0x0200, r6
452
        mov     #0xaaaa, &0x022C
453
        rrc.b     43(r6)           ;# RRC ({C=0, mem15=0x3325}  => {mem15=0x1925, C=1})
454
        mov          r2, r7
455
 
456
        mov     #0x0001, r2        ;# Test 3
457
        mov     #0x3225, &0x022C
458
        mov     #0x0200, r8
459
        mov     #0xaaaa, &0x022E
460
        rrc.b     45(r8)           ;# RRC ({C=1, mem16=0x3225}  => {mem16=0x9925, C=0})
461
        mov          r2, r9
462
 
463
        mov     #0x0001, r2        ;# Test 4
464
        mov     #0x3325, &0x022E
465
        mov     #0x0200, r10
466
        mov     #0xaaaa, &0x0230
467
        rrc.b    47(r10)           ;# RRC ({C=1, mem17=0x3325}  => {mem17=0x9925, C=1})
468
        mov          r2, r11
469
 
470
        mov     #0xB001, r15
471
 
472
 
473
        # Addressing mode: EDE (Low Byte)
474
        #---------------------------------
475
.set   EDE_230,  (__data_start+0x0030)
476
.set   EDE_232,  (__data_start+0x0032)
477
.set   EDE_234,  (__data_start+0x0034)
478
.set   EDE_236,  (__data_start+0x0036)
479
 
480
        mov     #0x0000, r2        ;# Test 1
481
        mov     #0x2532, &0x0230
482
        mov     #0xaaaa, &0x0232
483
        rrc.b   EDE_230            ;# RRC ({C=0, mem18=0x2532}  => {mem18=0x2519, C=0})
484
        mov          r2, r5
485
 
486
        mov     #0x0000, r2        ;# Test 2
487
        mov     #0x2533, &0x0232
488
        mov     #0xaaaa, &0x0234
489
        rrc.b   EDE_232            ;# RRC ({C=0, mem19=0x2533}  => {mem19=0x2519, C=1})
490
        mov          r2, r7
491
 
492
        mov     #0x0001, r2        ;# Test 3
493
        mov     #0x2532, &0x0234
494
        mov     #0xaaaa, &0x0236
495
        rrc.b   EDE_234            ;# RRC ({C=1, mem1a=0x2532}  => {mem1a=0x2599, C=0})
496
        mov          r2, r9
497
 
498
        mov     #0x0001, r2        ;# Test 4
499
        mov     #0x2533, &0x0236
500
        mov     #0xaaaa, &0x0238
501
        rrc.b   EDE_236            ;# RRC ({C=1, mem1b=0x2533}  => {mem1b=0x2599, C=1})
502
        mov          r2, r11
503
 
504
        mov     #0xC000, r15
505
 
506
        # Addressing mode: EDE (High Byte)
507
        #----------------------------------
508
.set   EDE_239,  (__data_start+0x0039)
509
.set   EDE_23B,  (__data_start+0x003B)
510
.set   EDE_23D,  (__data_start+0x003D)
511
.set   EDE_23F,  (__data_start+0x003F)
512
 
513
        mov     #0x0000, r2        ;# Test 1
514
        mov     #0x3225, &0x0238
515
        mov     #0xaaaa, &0x023A
516
        rrc.b   EDE_239            ;# RRC ({C=0, mem1c=0x3225}  => {mem1c=0x1925, C=0})
517
        mov          r2, r5
518
 
519
        mov     #0x0000, r2        ;# Test 2
520
        mov     #0x3325, &0x023A
521
        mov     #0xaaaa, &0x023C
522
        rrc.b   EDE_23B            ;# RRC ({C=0, mem1d=0x3325}  => {mem1d=0x1925, C=1})
523
        mov          r2, r7
524
 
525
        mov     #0x0001, r2        ;# Test 3
526
        mov     #0x3225, &0x023C
527
        mov     #0xaaaa, &0x023E
528
        rrc.b   EDE_23D            ;# RRC ({C=1, mem1e=0x3225}  => {mem1e=0x9925, C=0})
529
        mov          r2, r9
530
 
531
        mov     #0x0001, r2        ;# Test 4
532
        mov     #0x3325, &0x023E
533
        mov     #0xaaaa, &0x0240
534
        rrc.b   EDE_23F            ;# RRC ({C=1, mem1f=0x3325}  => {mem1f=0x9925, C=1})
535
        mov          r2, r11
536
 
537
        mov     #0xC001, r15
538
 
539
 
540
        # Addressing mode: &EDE (Low Byte)
541
        #----------------------------------
542
.set   aEDE_240,  0x0240
543
.set   aEDE_242,  0x0242
544
.set   aEDE_244,  0x0244
545
.set   aEDE_246,  0x0246
546
 
547
        mov     #0x0000, r2        ;# Test 1
548
        mov     #0x2532, &0x0240
549
        mov     #0xaaaa, &0x0242
550
        rrc.b &aEDE_240            ;# RRC ({C=0, mem20=0x2532}  => {mem20=0x2519, C=0})
551
        mov          r2, r5
552
 
553
        mov     #0x0000, r2        ;# Test 2
554
        mov     #0x2533, &0x0242
555
        mov     #0xaaaa, &0x0244
556
        rrc.b &aEDE_242            ;# RRC ({C=0, mem21=0x2533}  => {mem21=0x2519, C=1})
557
        mov          r2, r7
558
 
559
        mov     #0x0001, r2        ;# Test 3
560
        mov     #0x2532, &0x0244
561
        mov     #0xaaaa, &0x0246
562
        rrc.b &aEDE_244            ;# RRC ({C=1, mem22=0x2532}  => {mem22=0x2599, C=0})
563
        mov          r2, r9
564
 
565
        mov     #0x0001, r2        ;# Test 4
566
        mov     #0x2533, &0x0246
567
        mov     #0xaaaa, &0x0248
568
        rrc.b &aEDE_246            ;# RRC ({C=1, mem23=0x2533}  => {mem23=0x2599, C=1})
569
        mov          r2, r11
570
 
571
        mov     #0xD000, r15
572
 
573
        # Addressing mode: &EDE (High Byte)
574
        #-----------------------------------
575
.set   aEDE_249,  0x0249
576
.set   aEDE_24B,  0x024B
577
.set   aEDE_24D,  0x024D
578
.set   aEDE_24F,  0x024F
579
 
580
        mov     #0x0000, r2        ;# Test 1
581
        mov     #0x3225, &0x0248
582
        mov     #0xaaaa, &0x024A
583
        rrc.b &aEDE_249            ;# RRC ({C=0, mem24=0x3225}  => {mem24=0x1925, C=0})
584
        mov          r2, r5
585
 
586
        mov     #0x0000, r2        ;# Test 2
587
        mov     #0x3325, &0x024A
588
        mov     #0xaaaa, &0x024C
589
        rrc.b &aEDE_24B            ;# RRC ({C=0, mem25=0x3325}  => {mem25=0x1925, C=1})
590
        mov          r2, r7
591
 
592
        mov     #0x0001, r2        ;# Test 3
593
        mov     #0x3225, &0x024C
594
        mov     #0xaaaa, &0x024E
595
        rrc.b &aEDE_24D            ;# RRC ({C=1, mem26=0x3225}  => {mem26=0x9925, C=0})
596
        mov          r2, r9
597
 
598
        mov     #0x0001, r2        ;# Test 4
599
        mov     #0x3325, &0x024E
600
        mov     #0xaaaa, &0x0250
601
        rrc.b &aEDE_24F            ;# RRC ({C=1, mem27=0x3325}  => {mem27=0x9925, C=1})
602
        mov          r2, r11
603
 
604
        mov     #0xD001, r15
605
 
606
 
607
 
608
        /* ----------------------         END OF TEST        --------------- */
609
end_of_test:
610
        nop
611
        br #0xffff
612
 
613
 
614
 
615
        /* ----------------------         INTERRUPT VECTORS  --------------- */
616
 
617
.section .vectors, "a"
618
.word end_of_test  ; Interrupt  0 (lowest priority)    
619
.word end_of_test  ; Interrupt  1                      
620
.word end_of_test  ; Interrupt  2                      
621
.word end_of_test  ; Interrupt  3                      
622
.word end_of_test  ; Interrupt  4                      
623
.word end_of_test  ; Interrupt  5                      
624
.word end_of_test  ; Interrupt  6                      
625
.word end_of_test  ; Interrupt  7                      
626
.word end_of_test  ; Interrupt  8                      
627
.word end_of_test  ; Interrupt  9                      
628
.word end_of_test  ; Interrupt 10                      Watchdog timer
629
.word end_of_test  ; Interrupt 11                      
630
.word end_of_test  ; Interrupt 12                      
631
.word end_of_test  ; Interrupt 13                      
632
.word end_of_test  ; Interrupt 14                      NMI
633
.word main         ; Interrupt 15 (highest priority)   RESET

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.