BT2k
|
Mikrocontroller III
Der Disassemlber
Zurückübersetzen in Assembler
Die wesentliche Funktion des Excel-Blattes besteht darin, den Speicherinhalt ab Adresse 8100h des externen Sios-RAM auszulesen und zu disassemblieren. Dabei wird in einer Tabelle jedem Byte wieder ein sog. mnemoischer Ausdruck zugeordnet. Aus 74h wird wieder MOV A. Mit Hilfe dieser Funktion lassen sich also die RAM-Programme leicht überprüfen.
0256
100 74 55 F5 E8 02 81 04 40
110 22 00 40 00 00 00 00 00
120 9C 00 00 00 00 00 00 90
130 2E 00 00 00 00 00 00 01
140 F0 00 00 00 00 00 00 01
150 4A 00 00 00 00 00 00 40
160 CE 00 00 00 00 00 00 24 |
Der Hex-Dump
Nachdem das Programm übertragen wurde, kann der VBA-Editor geschlossen werden. Auf dem Tabellenblatt "SiosTasm" wird nun durch Betätigung des Buttons "Programmspeicher auslesen" der Speicherinhalt ab Adresse 8100h (8000h+256d) im linken Bereich als Hex-Dump dargestellt. Bei fehlerloser Übertragung sollten die ersten sieben Bytes richtig angezeigt werden. |
Der Disassembler
Auf der rechten Seite des Blattes steht nun das ursprüngliche Programm, mit Mnemonics. Die nachfolgenden Bytes können irgendwelche Werte belegen. Sie wurden ja nicht beschrieben. |
8100 74 55 MOV A,#55
8102 F5 E8 MOV E8,A
8104 02 81 04 LJMP 8104
8107 40 28 JC 28
8109 00 NOP |
|
Programm starten
Mit Betätigung des Buttons "Programm starten" wird das Maschinenprogramm ab Adresse 8100h ausgeführt. Der Akkumulator wird mit der Zahl 85 (55h) geladen, anschließend an die interne RAM-Adresse E8h geschrieben. Dort liegt der Digitalausgang vom Sios. Die Leuchtdioden Zeigen die Binärzahl 01010101=55h=85d.
Der nachfolgende Sprung sorgt dafür, dass das Programm in einer Endlosschleife weiter läuft. |
Programm stoppen
Bei einem "normalen" Entwicklungssystem wäre ein Programmstopp nur durch ein Reset (Aus- und Einschalten) möglich. Hier bietet das Sios entscheidende Vorteile. Wenn man mehrfach Null-Bytes über die serielle Schnittstelle an das Sios sendet, wird das Programm trotz Endlosschleife unterbrochen.
Drückt man z.B. den Button "Programmspeicher auslesen", so reagiert das Sios ganz normal und liefert den Speicherinhalt. Das Programm wurde jedoch angehalten. Das Betriebssystem des Interfaces ist so ausgelegt. Ein Nachteil ist das etwas merkwürdige Adressverhalten. Aber dazu an späterer Stelle mehr. |
|