| LC-80 als Taschenrechner |
|
|
Letztmalig dran rumgefummelt: 03.02.16 19:21:31 |
Anmerkungen zur Steuerung: Register A, BC sowie HL muss vor dem Aufruf der Subroutine SOUND gerettet werden
Pseudocode zum Programm:
1.) erste Zahl eingeben
2.) zweite Zahl eingeben
4.) Ergebnis bereitstellen und anzeigen
| Zeile | Marke | Block | Adresse | Hex-Code | Assembler-Code | Kommentar |
| 0001 | ORG 2000H | ;Adresse Programmbeginn | ||||
| 0002 | INIT | 2000H | DD 21 98 21 | LD IX,2198H | ;Text holen | |
| 0003 | 2002H | 0E 88 | LD C,88H | ;Anzahl der Textzeichen | ||
| 0004 | :M2 | 2006H | 06 30 | LD B,30 | ;Zeitkonstante für Anzeigezeit laden | |
| 0005 | :M1 | 2008H | C5 | PUSH BC | ;Registerpaar BC retten | |
| 0006 | 2009H | DD E5 | PUSH IX | ;Register IX retten | ||
| 0007 | 200BH | CD 83 04 | CALL DAK2 | ;Text anzeigen | ||
| 0008 | 200EH | DD E1 | POP IX | ;Register IX wieder herstellen | ||
| 0009 | 2010H | C1 | POP BC | ;Registerpaar BC wieder herstellen | ||
| 0010 | 2011H | 10 F5 | DJNZ 2008H | ;Anzeigeroutine B-mal wiederholen | ||
| 0011 | 2013H | DD 2B | DEC IX | ;Text weiterrücken | ||
| 0012 | 2015H | 0D | DEC C | ;Zeichenanzahl kürzen | ||
| 0013 | 2016H | C2 06 20 | JPNZ 2006H | ;wenn nicht Null, dann 2006H | ||
| 0014 | :M9 | 2019H | CD EA 04 | CALL MONMUS | ;Anfangsmusik einspielen | |
| 0015 | 201CH | 16 02 | LD D,02H | ;Schleifenanzahl | ||
| 0016 | :M6 | 201EH | DD 21 88 20 | LD IX,2088H | ;"1 . Zahl" | |
| 0017 | 2022H | CD 5A 04 | CALL DAK1 | ;Anzeige des Bildwiederholspeichers (erste Zahl) | ||
| 0018 | 2025H | 06 04 | LD B,04H | ;vier mal wird im Bedarfsfall geschoben | ||
| 0019 | :M3 | 2027H | CB 27 | SLA A | ;Zehnerstelle organisieren | |
| 0020 | 2029H | 10 FC | DJNZ 2027H | ;vier mal wird im Bedarfsfall geschoben | ||
| 0021 | 202BH | 4F | LD C,A | ;Teilergebnis retten | ||
| 0022 | 202CH | DD 21 8E 20 | LD IX,208EH | ;"2. Zahl" | ||
| 0023 | 2030H | CD 5A 04 | CALL DAK1 | ;Anzeige des Bildwiederholspeichers | ||
| 0024 | 2033H | 81 | ADD C | ;erste Zahl entstanden | ||
| 0025 | 2034H | F5 | PUSH AF | ;Registerpaar AF retten | ||
| 0026 | 2035H | C5 | PUSH BC | ;Registerpaar BC retten | ||
| 0027 | 2036H | DD E5 | PUSH IX | ;Register IX retten | ||
| 0028 | 2038H | CD 75 20 | CALL ZAHLANZ | ;Aufruf Unterprogramm auf 2075H | ||
| 0029 | 203BH | DD E1 | POP IX | ;Register IX wieder herstellen | ||
| 0030 | 203CH | C1 | POP BC | ;Registerpaar BC wieder herstellen | ||
| 0031 | 203EH | F1 | POP AF | ;Registerpaar AF wieder herstellen | ||
| 0032 | 203FH | 15 | DEC D | ;Schleife kürzen | ||
| 0033 | 2040H | CA 4B 20 | JPZ 204BH | ;Sprung, wenn bereits 2 Zahlen eingegeben sind | ||
| 0034 | 2043H | 32 A2 20 | LD (20A2H),A | ;Ergebnis auf RAM schreiben | ||
| 0035 | 2046H | 97 | SUB A | ;schnellste Methode, REGISTER A 00H zu setzen | ||
| 0036 | 2047H | C3 1E 20 | JP 201EH | ;Sprung zum Anfang | ||
| 0037 | 204AH | 76 | HALT | ;Fehlerkontrolle - darf nicht erreicht werden ;-) | ||
| 0038 | :M5 | 204BH | ED 43 96 20 | LD (2096H),BC | ||
| 0039 | 204FH | 2A A2 20 | LD HL,(20A2H) | ;erste Zahl holen | ||
| 0040 | 2052H | 85 | ADD L | ;addieren | ||
| 0041 | 2053H | 27 | DAA | ;dezimale Korrektur des Akkumulators | ||
| 0042 | 2054H | DC 6C 20 | CAC 206CH | ;bei Übertrag - UP aufrufen | ||
| 0043 | 2057H | 21 95 20 | LD HL, 2195H | ;ADR. für Code | ||
| 0044 | 205AH | CD D9 04 | CALL TWOSEG | ;Inhalt von A in Sieben-Segmentcode umwandeln | ||
| 0045 | 205DH | DD 21 95 20 | LD IX,2095H | ;Text holen | ||
| 0046 | 2061H | 06 FF | LD B, FFH | ;Zeitregister | ||
| 0047 | :M8 | 2063H | CD 83 04 | CALL DAK2 | ;Anzeigen und Tastatur abfragen | |
| 0048 | 2066H | 10 FB | DJNZ 2163H | ;Sprung & Anzeigezeitzeit kürzen | ||
| 0049 | 2068H | C3 19 20 | JMP 2019H | ;Sprung zum Anfang | ||
| 0050 | 206BH | 76 | HALT | ;Fehlerkontrolle - darf wieder nicht erreicht werden ;-) | ||
| 0051 | :M7 | 206CH | 11 21 E6 | LD DE,E621H | ;bei Übertrag 1xx schreiben | |
| 0052 | 206FH | ED 53 97 20 | LD (2097H),DE | ;BWS schaffen | ||
| 0053 | 2073H | C9 | RET | ;Rückkehr aus Unterprogramm (Anfang 206CH) | ||
| 0054 | 2074H | 76 | HALT | ;Fehlerkontrolle - darf ebenfalls nicht erreicht werden ;-) | ||
| 0055 | :M4 | 2075H | 06 A0 | LD B,A0 | ;Anzeigezeit | |
| 0056 | 2077H | 21 9C 20 | LD HL,209CH | ;Ziffern holen | ||
| 0057 | 207AH | CD D9 04 | CALL TWOSEG | Inhalt von A in Sieben-Segmentcode umwandeln | ||
| 0058 | 207DH | DD 21 9C 20 | LD IX, 209CH | ;Text holen | ||
| 0059 | :M11 | 2081H | CD 83 14 | CALL DAK2 | ;Anzeigen und Tastatur abfragen | |
| 0060 | 2084H | 10 FB | DJNZ 2081H | ;Sprung und Zeit kürzen | ||
| 0061 | 2086H | C9 | RET | ;Rückkehr aus Unterprogramm (Anfang 2075H) | ||
| 0062 | 2087H | 76 | HALT | ;Fehlerkontrolle - darf ebenfalls nicht erreicht werden ;-) | ||
| 0063 | CONTENTS | TABLE: | ;Table of Contents | |||
| 0064 | 2088H | C2 | DEFB C2H | ;Anzeige "L" auf Digit 4 | ||
| 0065 | 2089H | 6B | DEFB 6BH | ;Anzeige "H" auf Digit 3 | ||
| 0066 | 208AH | 6F | DEFB 6FH | ;Anzeige "A" auf Digit 2 | ||
| 0067 | 208BH | 8C | DEFB 8CH | ;Anzeige "Z" auf Digit 1 | ||
| 0068 | 208CH | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0069 | 208DH | 31 | DEFB 31H | ;Anzeige "2." auf Digit 1 | ||
| 0070 | 208EH | C2 | DEFB C2H | ;Anzeige "L" auf Digit 1 | ||
| 0071 | 208FH | 6B | DEFB 6BH | ;Anzeige "H" auf Digit 1 | ||
| 0072 | 2090H | 6F | DEFB 6FH | ;Anzeige "A" auf Digit 1 | ||
| 0073 | 2091H | 8C | DEFB 8CH | ;Anzeige "Z" auf Digit 1 | ||
| 0074 | 2092H | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0075 | 2093H | DD | DEFB DDH | ;Anzeige "1." auf Digit 1 | ||
| 0076 | 2094H | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0077 | 2095H | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0078 | 2096H | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0079 | 2097H | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0080 | 2098H | E6 | DEFB E6H | ;Anzeige "G" auf Digit 1 | ||
| 0081 | 2099H | 48 | DEFB 48H | ;Anzeige "R" auf Digit 1 | ||
| 0082 | 209AH | CE | DEFB CEH | ;Anzeige "F" auf Digit 1 | ||
| 0083 | 209BH | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0084 | 209CH | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0085 | 209DH | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0086 | 209EH | 00 | DEFB 00H | ;Anzeige " " auf Digit 1 | ||
| 0087 | 209FH | 4F | DEFB 4FH | ;Anzeige "P" auf Digit 1 | ||
| 0088 | 20A0H | 68 | DEFB 68H | ;Anzeige "N" auf Digit 1 | ||
| 0089 | 2092H | 20 | DEFB 20H | ;Anzeige "I" auf Digit 1 |
Additionsprogramm mit Anzeige
Projekt als A-Side Assembler Datei (Achtung - das Projekt ist am 9.2.2016 noch nicht vorhanden)
|
zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost am 10. Februar 2016 um 19.21 Uhr |
|
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |