stacktst.asm
1 | .include "tn26def.inc"
| 2 |
| 3 | .org 0x000 ; Programm kommt an Anfang von PROM
| 4 |
| 5 | .def temp = r16
| 6 | .def temp1 = r17 ; temporäre Register definieren
| 7 | .def ergebnis = r18
| 8 |
| 9 | .set Frequenzbyte = 0xc0 ; Stellt 8Mhz ein
| 10 |
| 11 | rjmp reset ; Reset handler
| 12 | reti ; IRQ0 handler
| 13 | reti ; Pin change handler
| 14 | reti ; Timer1 compare match 1A
| 15 | reti ; Timer1 compare match 1B
| 16 | reti ; Timer1 overflow handler
| 17 | reti ; Timer0 overflow handler
| 18 | reti ; USI Start handler
| 19 | reti ; USI Overflow handler
| 20 | reti ; EEPROM Ready handler
| 21 | reti ; Analog Comparator handler
| 22 | reti ; ADC Conversion Handler
| 23 |
| 24 |
| 25 | reset: ldi temp1, RAMEND ; Init aus Datenblatt
| 26 | out SP, temp1
| 27 |
| 28 | ldi temp1, Frequenzbyte ; 8Mhz einstellen
| 29 | out OSCCAL, temp1
| 30 |
| 31 |
| 32 | MAIN:
| 33 | LDI Temp, $10
| 34 | PUSH Temp
| 35 | LDI Temp, $20
| 36 | PUSH Temp
| 37 | RCALL Addiere ;ursprüglich nur call
| 38 | POP Ergebnis
| 39 | POP Temp
| 40 |
| 41 |
| 42 | ;original Subrout:
| 43 |
| 44 | Addiere:
| 45 | MOV ZLow, SPL ;!!!
| 46 | ADD ZLow, 4 ;!!!
| 47 | PUSH R20
| 48 | PUSH R21
| 49 | LD R20, Z
| 50 | LD R21, -Z
| 51 | ADD R20, R21
| 52 | ST Z, R20
| 53 | POP R21
| 54 | POP R20
| 55 | RET
| 56 |
| 57 | ; mit veränderungen, da einige fehler gemeldet wurden:
| 58 |
| 59 | Addiere:
| 60 | push temp
| 61 | in temp, SP
| 62 | add temp, temp1 ; vorher muß aber noch irgendwie 4 in temp1
| 63 | st z, temp
| 64 | pop temp
| 65 | PUSH R20
| 66 | PUSH R21
| 67 | LD R20, Z
| 68 | LD R21, -Z
| 69 | ADD R20, R21
| 70 | ST Z, R20
| 71 | POP R21
| 72 | POP R20
| 73 | RET
|
|