1 ; 68HC11 demo program
2 ; Bill Rison
3 ; 1/2/96
4
5 ; This program takes a table of data, and creates
6 ; new table which is the original table divided by 2
7
8 .title LAB 1 Demo Program
9
0000 10 EVBRAM = 0x0000 ;0x0000 is start of user ram
0000 11 DATARAM = EVBRAM
0100 12 PROG = EVBRAM+0x100 ;start program above BUFFALO
0002 13 COUNT = 2 ;number of entries in table
14
15 .area CODE (ABS)
16
17 .org PROG ;set prog counter to 0x0100
0100 C6 02 18 ldab #COUNT ;ACC B = num entries left
0102 CE 00 00 19 ldx #table1 ;Reg X points to next entry
0105 A6 00 20 repeat: ldaa 0,x ;Get table1 entry into ACC A
0107 47 21 asra ;Divide by 2
0108 A7 02 22 staa COUNT,x ;Save in table2
010A 08 23 inx ;REG X points to next entry
010B 5A 24 decb ;Decrement number left
010C 26 F7 25 bne repeat ;If not done, do next entry
010E 3F 26 swi ;Done -- Exit
27
28
29 .area DATA (ABS)
30
31 .org DATARAM
32 ;initialize table1 (COUNT bytes long)
0000 07 AE 33 table1: .db 0x07,0xae
0002 34 table2: .ds COUNT ;reserve space for table2
Symbol Table
COUNT = 0002
DATARAM = 0000
EVBRAM = 0000
PROG = 0100
1 repeat 0105 R
2 table1 0000 R
2 table2 0002 R
Cycle by cycle execution of above program
ADDR DATA| | A | B | X | PC | addr |data|R/W| cycles
---- -- | |-----|----|------|------|------|----|---|-------
0000 07 | | | | | 0100 | 0100 | C6 | R | 1
| | | 02 | | | 0101 | 02 | R | 2
0001 AE | | | | | 0102 | 0102 | CE | R | 3
| | | | | | 0103 | 00 | R | 4
---- -- | | | | 0000 | | 0104 | 00 | R | 5
| | | | | 0105 | 0105 | A6 | R | 6
0100 C6 | | | | | | 0106 | 00 | R | 7
| | | | | | FFFF | ?? | R | 8
0101 02 | | 07 | | | | 0000 | 07 | R | 9
| | | | | 0107 | 0107 | 47 | R | 10
0102 CE | | 03 | | | | 0108 | A7 | R | 11
| | | | | 0108 | 0108 | A7 | R | 12
0103 00 | | | | | | 0109 | 02 | R | 13
| | | | | | FFFF | ?? | R | 14
0104 00 | | | | | | 0002 | 03 | W | 15
| | | | | 010A | 010A | 08 | R | 16
0105 A6 | | | | | | 010B | 5A | R | 17
| | | | 0001 | | FFFF | ?? | R | 18
0106 00 | | | | | 010B | 010B | 5A | R | 19
| | | 01 | | | 010C | 26 | R | 20
0107 47 | | | | | 010C | 010C | 26 | R | 21
| | | | | | 010D | F7 | R | 22
0108 A7 | | | | | | FFFF | ?? | R | 23
| | | | | 0105 | 0105 | A6 | R | 24
0109 02 | | | | | | 0106 | 00 | R | 25
| | | | | | FFFF | ?? | R | 26
010A 08 | | AE | | | | 0001 | AE | R | 27
| | | | | 0107 | 0107 | 47 | R | 28
010B 5A | | D7 | | | | 0108 | A7 | R | 29
| | | | | 0108 | 0108 | A7 | R | 30
010C 26 | | | | | | 0109 | 02 | R | 31
| | | | | | FFFF | ?? | R | 32
010D F7 | | | | | | 0003 | D7 | W | 33
| | | | | 010A | 010A | 08 | R | 34
010E 3F | | | | | | 010B | 5A | R | 35
| | | | 0002 | | FFFF | ?? | R | 36
| | | | 010B | 010B | 5A | R | 37
| | 00 | | | 010C | 26 | R | 38
| | | | 010C | 010C | 26 | R | 39
| | | | | 010D | F7 | R | 40
| | | | | FFFF | ?? | R | 41
| | | | | 010E | 3F | R | 42