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 |