Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;GESCHRIEBEN FÜR DEN FLAT ASSEMBLER (FASM)
- ;Sollte aber mit NASM auch funktionieren
- ;org 100h COM-Programme starten immer bei der Adresse 100h (256), allerdings
- ; ist es in diesem Fall überflüssig
- ;Der Assembler behandelt diese Werte wie "normale" Zahlen (Immediates)
- WIDTH = 50 ;Breite des Rechtecks (Konstante)
- HEIGHT = 10 ;Höhe des Rechtecks (Konstante)
- Start:
- MOV cl, WIDTH ;Ist das gleiche wie: MOV cl, 50
- MOV ch, HEIGHT ;Ist das gleiche wie: MOV ch, 10
- MOV ah, 02h
- MOV bl, cl ;Mit al werden wir cl reinitialisieren
- MOV dl, '+'
- DrawLine: ;Ich gehe von einer Breite > 0 aus
- INT 21h ;Register müssen nicht reinitialisiert werden, da der
- ;Interrupt alle Register speichert.
- DEC cl
- OR cl, 0 ;Ist das gleiche wie: CMP cl, 0
- JNZ DrawLine
- ;Wenn hier sind, wurde die Zeile erfolgreich abgeschlossen
- MOV dl, 10 ;
- INT 21h ;
- MOV dl, 13 ; Zeilenumbruch
- INT 21h ;
- MOV dl, '+' ;
- MOV cl, bl ;Breite wird reinitialisiert
- DEC ch
- OR ch, 0
- JNZ DrawLine ;Wenn wir noch nicht alle Zeilen gezeichnet haben, springen
- ;wir zu DrawLine zurück.
- ;Wenn wir nicht weggesprungen sind, dann sind wir fertig!
- MOV ah, 4Ch
- INT 21h ;Programm beenden ...
Add Comment
Please, Sign In to add comment