Guest User

MS-DOS Rechteck

a guest
Jul 23rd, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;GESCHRIEBEN FÜR DEN FLAT ASSEMBLER (FASM)
  2. ;Sollte aber mit NASM auch funktionieren
  3.  
  4. ;org 100h    COM-Programme starten immer bei der Adresse 100h (256), allerdings
  5. ;           ist es in diesem Fall überflüssig
  6.  
  7. ;Der Assembler behandelt diese Werte wie "normale" Zahlen (Immediates)
  8. WIDTH = 50  ;Breite des Rechtecks (Konstante)
  9. HEIGHT = 10 ;Höhe des Rechtecks (Konstante)
  10.  
  11. Start:
  12.     MOV     cl, WIDTH   ;Ist das gleiche wie: MOV cl, 50
  13.     MOV     ch, HEIGHT  ;Ist das gleiche wie: MOV ch, 10
  14.     MOV     ah, 02h
  15.     MOV     bl, cl      ;Mit al werden wir cl reinitialisieren
  16.     MOV     dl, '+'
  17. DrawLine:               ;Ich gehe von einer Breite > 0 aus
  18.     INT     21h         ;Register müssen nicht reinitialisiert werden, da der
  19.                         ;Interrupt alle Register speichert.
  20.     DEC     cl
  21.     OR      cl, 0       ;Ist das gleiche wie: CMP cl, 0
  22.     JNZ     DrawLine
  23.    
  24.     ;Wenn hier sind, wurde die Zeile erfolgreich abgeschlossen
  25.    
  26.     MOV     dl, 10  ;
  27.     INT     21h     ;
  28.     MOV     dl, 13  ; Zeilenumbruch
  29.     INT     21h     ;
  30.     MOV     dl, '+' ;
  31.    
  32.     MOV     cl, bl      ;Breite wird reinitialisiert
  33.     DEC     ch 
  34.     OR      ch, 0
  35.     JNZ     DrawLine    ;Wenn wir noch nicht alle Zeilen gezeichnet haben, springen
  36.                         ;wir zu DrawLine zurück.
  37.                        
  38.     ;Wenn wir nicht weggesprungen sind, dann sind wir fertig!
  39.     MOV     ah, 4Ch
  40.     INT     21h         ;Programm beenden ...
Add Comment
Please, Sign In to add comment