Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;----------------------------------------
- ;Bearbeiter:
- ;----------------------------------------
- .MODEL TINY
- .CODE
- IDEAL
- ORG 100H
- PROGRAM:
- ;----------------------------------------
- line equ 01000000B; Bitfolge fuer die Ausgabe eines Striches
- startpoint equ 0C000H ; Startpunkt der Suche im Speicher...
- endpoint equ 0CFFFH ; ...und dessen Endpunkt
- ;;; Initialisierung ;;;
- begin: MOV AH,0 ; Loeschen des...
- INT 6 ; ...Displays
- init: MOV BL,0 ; Ausgabe von 00...
- CALL ausgab1 ; ...auf die beiden linken Displaystellen
- lines: MOV AL,line ; Uebergabe der Bitfolge nach AL fuer den OUT-Command
- OUT 90H,AL ; Ausgabe eines -...
- OUT 92H,AL ; ...auf die vier rechten...
- OUT 94H,AL ; ...Stellen des...
- OUT 96H,AL ; ...Displays
- ; ANMERKUNG ;
- ; lines ist auch als UP denkbar, wuerde den Code...
- ; ...in dieser Form aber effektiv verlaengern
- ;;; EINGABEROUTINE ;;;
- eingabe:MOV AH,1 ; Vorbereitung und...
- INT 5 ; ...Ausfuehrung des Wartens auf Eingabe
- eingab2:CMP AL,11H ; Eingegebenes Zeichen ist GO, ...
- JZ search1 ; ...also (Neu-)Beginn der Suche
- CMP AL,10H ; Eingegebenes Zeichen ist ENTER, ...
- JZ search1 ; ...ebenfalls (Neu-)Beginn der Suche
- JG eingabe ; Eingegebenes Zeichen nicht ENTER oder GO, ...
- ; ...aber auch kein HEX-Zeichen, also...
- ; ...weiteres Warten auf Eingabe
- MOV CL,4 ; Trifft das alles nicht zu, wurde ein 0-F-Zeichen...
- SHL BL,CL ; ...eingegeben, der Eingabewert wird in das...
- ADD BL,AL ; ...Register fuer den Eingabewert geschrieben...
- ; (vorherige Verschiebung um 4 Bits, also 1 HEX-Zahl)
- CALL ausgab1 ; Der veraenderte Wert wird ausgegeben und es wird...
- JMP eingabe ; ...auf weitere Eingaben gewartet
- ;;; SUCHROUTINE ;;;
- search1:MOV SI,startpoint-1 ; Beginn/Initialisierung der Suche an BFFFH...
- search: INC SI ; ...da hier vor Pruefung inkrementiert wird
- CMP [SI],BL ; Vergleich des Wertes am aktuellen...
- ; ...Suchpunkt mit dem zu suchenden Wert
- JNZ nothere ; Keine Uebereinstimmung, also Weitersuchen
- CALL ausgab2 ; Sonst Uebereinstimmung, also...
- ; ...Ausgabe des aktuellen Suchpunktes
- eingabs:MOV AH,1 ; Nach einen Fund wird auf...
- INT 5 ; ...Eingabe gewartet
- CMP AL,16H ; Eingegebenes Zeichen ist +, ...
- JZ nothere ; ...die Suche wird fortgesetzt
- CMP AL,12H ; Eingegebenes Zeichen ist ENTER, GO, oder 0-F...
- JL eingab2 ; ...die aktuelle Suche wird abgebrochen, ...
- ; ...und die Eingaberoutine verarbeitet das Zeichen
- JMP eingabs ; Eingegebenes Zeichen ist ein anderes, es ...
- ; ...geschieht nichts, es wird weiter Eingabe verlangt
- nothere:CMP SI,endpoint ; Ist man am Ende des zu durchsuchenden Bereichs...
- JZ lines ; ...wird der Nichtfund mit Strichen angezeigt
- ; (und man gelangt von dort direkt zur Eingaberoutine)
- JMP search ; Ist man noch nicht am Ende, sucht man weiter
- ;;; Unterprogramme ;;;
- ; Ausgabe links - Suchwert
- ausgab1:MOV AH,4 ; Ausgabe des Wertes in BL als 8-Bit-HEX...
- MOV DL,7 ; ...auf die beiden...
- INT 6 ; ...Displaystellen ganz links
- ; (BL ist 0 bei Init und der Suchwert sonst)
- RET
- ; Ausgabe rechts - Fundort
- ausgab2:MOV AH,3 ; Ausgabe des Wertes in BX als 16-Bit-HEX...
- MOV DL,3 ; ...auf die 4 rechten Displaystellen
- MOV CL,BL ; BL muss zuerst gesichert werden, weil es...
- MOV BX,SI ; ...den Suchwert enthaelt, dann wird BX...
- ; ...mit dem Fundort beschrieben
- INT 6 ; (und natuerlich ausgegeben)
- MOV BL,CL ; Nach Ausgabe wird BL (Suchwert) wiederhergestellt
- RET
- ;----------------------------------------
- END PROGRAM
Add Comment
Please, Sign In to add comment