Guest User

Untitled

a guest
May 29th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;----------------------------------------
  2. ;Bearbeiter:
  3. ;----------------------------------------
  4. .MODEL TINY
  5. .CODE
  6. IDEAL
  7. ORG 100H
  8.  
  9. PROGRAM:
  10. ;----------------------------------------
  11. line       equ 01000000B; Bitfolge fuer die Ausgabe eines Striches
  12. startpoint equ 0C000H   ; Startpunkt der Suche im Speicher...
  13. endpoint   equ 0CFFFH   ; ...und dessen Endpunkt
  14.  
  15. ;;; Initialisierung ;;;
  16. begin:  MOV AH,0    ; Loeschen des...
  17.     INT 6       ; ...Displays
  18.  
  19. init:   MOV BL,0    ; Ausgabe von 00...
  20.     CALL ausgab1    ; ...auf die beiden linken Displaystellen
  21.    
  22. lines:  MOV AL,line ; Uebergabe der Bitfolge nach AL fuer den OUT-Command
  23.     OUT 90H,AL  ; Ausgabe eines -...
  24.     OUT 92H,AL  ; ...auf die vier rechten...
  25.     OUT 94H,AL  ; ...Stellen des...
  26.     OUT 96H,AL  ; ...Displays
  27.    
  28.             ; ANMERKUNG ;
  29.             ; lines ist auch als UP denkbar, wuerde den Code...
  30.             ; ...in dieser Form aber effektiv verlaengern
  31.  
  32. ;;; EINGABEROUTINE ;;;
  33.    
  34. eingabe:MOV AH,1    ; Vorbereitung und...
  35.     INT 5       ; ...Ausfuehrung des Wartens auf Eingabe
  36.    
  37. eingab2:CMP AL,11H  ; Eingegebenes Zeichen ist GO, ...
  38.     JZ search1  ; ...also (Neu-)Beginn der Suche
  39.    
  40.     CMP AL,10H  ; Eingegebenes Zeichen ist ENTER, ...
  41.     JZ search1  ; ...ebenfalls (Neu-)Beginn der Suche
  42.    
  43.     JG eingabe  ; Eingegebenes Zeichen nicht ENTER oder GO, ...
  44.             ; ...aber auch kein HEX-Zeichen, also...
  45.             ; ...weiteres Warten auf Eingabe
  46.            
  47.            
  48.     MOV CL,4    ; Trifft das alles nicht zu, wurde ein 0-F-Zeichen...
  49.     SHL BL,CL   ; ...eingegeben, der Eingabewert wird in das...
  50.     ADD BL,AL   ; ...Register fuer den Eingabewert geschrieben...
  51.             ; (vorherige Verschiebung um 4 Bits, also 1 HEX-Zahl)
  52.    
  53.     CALL ausgab1    ; Der veraenderte Wert wird ausgegeben und es wird...
  54.     JMP eingabe ; ...auf weitere Eingaben gewartet
  55.    
  56. ;;; SUCHROUTINE ;;;
  57.  
  58. search1:MOV SI,startpoint-1 ; Beginn/Initialisierung der Suche an BFFFH...
  59.  
  60. search: INC SI          ; ...da hier vor Pruefung inkrementiert wird
  61.  
  62.     CMP [SI],BL     ; Vergleich des Wertes am aktuellen...
  63.                 ; ...Suchpunkt mit dem zu suchenden Wert
  64.     JNZ nothere     ; Keine Uebereinstimmung, also Weitersuchen
  65.    
  66.     CALL ausgab2        ; Sonst Uebereinstimmung, also...
  67.                 ; ...Ausgabe des aktuellen Suchpunktes 
  68.                
  69. eingabs:MOV AH,1        ; Nach einen Fund wird auf...
  70.     INT 5           ; ...Eingabe gewartet
  71.    
  72.     CMP AL,16H  ; Eingegebenes Zeichen ist +, ...
  73.     JZ nothere  ; ...die Suche wird fortgesetzt
  74.    
  75.     CMP AL,12H  ; Eingegebenes Zeichen ist ENTER, GO, oder 0-F...
  76.     JL eingab2  ; ...die aktuelle Suche wird abgebrochen, ...
  77.             ; ...und die Eingaberoutine verarbeitet das Zeichen
  78.  
  79.     JMP eingabs ; Eingegebenes Zeichen ist ein anderes, es ...
  80.             ; ...geschieht nichts, es wird weiter Eingabe verlangt
  81.                
  82. nothere:CMP SI,endpoint ; Ist man am Ende des zu durchsuchenden Bereichs...
  83.     JZ lines    ; ...wird der Nichtfund mit Strichen angezeigt
  84.             ; (und man gelangt von dort direkt zur Eingaberoutine)
  85.    
  86.     JMP search  ; Ist man noch nicht am Ende, sucht man weiter
  87.    
  88.    
  89. ;;; Unterprogramme ;;;
  90.  
  91. ; Ausgabe links - Suchwert
  92. ausgab1:MOV AH,4    ; Ausgabe des Wertes in BL als 8-Bit-HEX...
  93.     MOV DL,7    ; ...auf die beiden...
  94.     INT 6       ; ...Displaystellen ganz links
  95.             ; (BL ist 0 bei Init und der Suchwert sonst)
  96.     RET
  97.  
  98. ; Ausgabe rechts - Fundort
  99. ausgab2:MOV AH,3    ; Ausgabe des Wertes in BX als 16-Bit-HEX...
  100.     MOV DL,3    ; ...auf die 4 rechten Displaystellen
  101.    
  102.     MOV CL,BL   ; BL muss zuerst gesichert werden, weil es...
  103.     MOV BX,SI   ; ...den Suchwert enthaelt, dann wird BX...
  104.             ; ...mit dem Fundort beschrieben   
  105.  
  106.     INT 6       ; (und natuerlich ausgegeben)
  107.    
  108.     MOV BL,CL   ; Nach Ausgabe wird BL (Suchwert) wiederhergestellt
  109.  
  110.     RET
  111.    
  112. ;----------------------------------------
  113. END PROGRAM
Add Comment
Please, Sign In to add comment