Zurück   3DCenter Forum > Software-Hilfe Foren > Programmierung
Registrieren Hilfe Community Kalender Heutige Beiträge Suchen Uns unterstützen

Antwort
 
Themen-Optionen Ansicht
Alt 2007-04-16, 18:48:29   #1 (im Thread / einzeln)
hadez16
Admiral Member
 
Benutzerbild von hadez16
 
Registriert: 2003-03-31
Beiträge: 2.920
Linie zeichnen mit Assembler

Hallo,

unser Lehrer in der Schule meinte heute, wer es selbsständig hinnkriegt in Assembler eine Linie auf den Bildschirm zu zeichnen, kriegt ne mündliche 1 eingetragen.

Da ich eigentlich sehr ambitioniert der programmierung gegenüberstehe, möchte ich das probieren.

Ich kenne mich nur mit höheren Programmiersprachen wie C++ etwas aus, über die Architektur von PCs bzw. dem groben Funktionsschema von Assembler-Sprache bin ich leicht informiert und denke dass ich das schnell lernen kann.

Kann mir jemand sagen, ohne extra ein Buch zu kaufen, wo ich am besten Informationen herbekomme um Grafiken in Assembler zu basteln? Habe mich schon ein wenig informiert über Grafikmodus etc. aber so eine Art Leitfaden fehlt mir noch.

Benutzen würde ich dann den NASM-Compiler.

1 Woche habe ich Zeit

Grüße
hadez16 ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-16, 19:08:48   #2 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Linie zeichnen mit Assembler

nur eine linie ... ohne bewegung?


das wird als DOS_Programm ein 3 Zeiler mit

....
....
"int 21h"

wenn mich nicht alles täuscht.

Wenn er nichts gg C++ mit inline Assembler hat, kannst du auch sowas wie hier probiern.

Code:
int main(void)
{
char bla;
    _asm
    {
        mov hx, [bla]
        ...
    }

return 0;
} //würde unter VC05 compelliern
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-16, 19:09:49   #3 (im Thread / einzeln)
Trap
Avantgarde Member
 
Registriert: 2003-10-26
Beiträge: 6.880
Re: Linie zeichnen mit Assembler

Das geht mit oder ohne Betriebssystem. Weißt du was gemeint ist?

DOS wäre noch eine dritte Kategorie

Geändert von Trap (2007-04-16 um 19:11:13 Uhr)
Trap ist gerade online   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-16, 19:24:44   #4 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Linie zeichnen mit Assembler

Zitat von Trap Beitrag anzeigen
Das geht mit oder ohne Betriebssystem. Weißt du was gemeint ist?

DOS wäre noch eine dritte Kategorie
Naja ohne Betriebssystem kann man das keinem antun. Erstmal schoen selber nen CGA-Treiber bäh! Das ist in C++ schon hässlich! Vorallem da man ja niks zum Debuggen hat. Alle Ausgaben sind doch tot ohne die richtigen Treiber.


OnT: DOS ist sicherlich der simpleste Weg ne linie zu zeichnen. Für Schönheit gibs eh keine Zusatzpunkte.
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-16, 19:51:43   #5 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Linie zeichnen mit Assembler

Also ich hab jetzt nochmal nachgeschaut, das ist orginal nen 3 Zeiler, ich habs noch als Konsolenausgabe und als CGA Ausgabe (etwas komplexer).
Wenn du fertig bist, können wir ja mal vergleichen.
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-16, 22:57:23   #6 (im Thread / einzeln)
Neomi
Admiral Member
 
Benutzerbild von Neomi
 
Registriert: 2005-03-19
Beiträge: 2.003
Re: Linie zeichnen mit Assembler

Wenn es um das "zeichnen" der Linie in Assembler geht, dann würde ich als Lehrer das "zeichnen lassen" per simplem Aufruf aus Assembler heraus schon als Fudelei betrachten. Also lieber per Hand, eine Woche ist auch dafür mehr als großzügig angelegt und lernen willst du ja auch was dabei.

Als Grafikmodus ist Mode 13h geeignet, da sehr simpel. Hier ist eine kurze Anleitung zur Initialisierung:
http://burks.brighton.ac.uk/burks/la...sm8.htm#mode13

Um die Linie zu zeichnen, ist der gute alte Bresenham anzuraten. Hier eine Anleitung dazu:
http://en.wikipedia.org/wiki/Bresenh...line_algorithm

Die einzelnen Pixel lassen sich dann immer noch bequem per BIOS-Funktion zeichnen. Wie das geht, ist auch hinter dem ersten Link beschrieben.
Neomi ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 00:29:00   #7 (im Thread / einzeln)
micki
Admiral Member
 
Registriert: 2002-08-14
Beiträge: 2.744
Re: Linie zeichnen mit Assembler

ich wuerde an deiner stelle einfach den inlineassembler vom z.b. devstudio benutzen, dann ne linie in nen buffer zeichnen und mit ogl/d3d auf den screen blitten.

micki ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 00:32:51   #8 (im Thread / einzeln)
Coda
3DCenter
 
Benutzerbild von Coda
 
Registriert: 2003-12-23
Ort: Frankfurt Main
Beiträge: 32.566
Re: Linie zeichnen mit Assembler

Sollte er mal genauer spezifizieren. Um direkt auf den Bildschirm zu zeichnen brauchst unter Windows eigentlich DirectDraw.

Ansonsten bleibt nur DOS übrig eigentlich.

Coda ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 07:34:49   #9 (im Thread / einzeln)
hadez16
Admiral Member
Threadstarter
 
Benutzerbild von hadez16
 
Registriert: 2003-03-31
Beiträge: 2.920
Re: Linie zeichnen mit Assembler

Zitat von Neomi Beitrag anzeigen
Wenn es um das "zeichnen" der Linie in Assembler geht, dann würde ich als Lehrer das "zeichnen lassen" per simplem Aufruf aus Assembler heraus schon als Fudelei betrachten. Also lieber per Hand, eine Woche ist auch dafür mehr als großzügig angelegt und lernen willst du ja auch was dabei.

Als Grafikmodus ist Mode 13h geeignet, da sehr simpel. Hier ist eine kurze Anleitung zur Initialisierung:
http://burks.brighton.ac.uk/burks/la...sm8.htm#mode13

Um die Linie zu zeichnen, ist der gute alte Bresenham anzuraten. Hier eine Anleitung dazu:
http://en.wikipedia.org/wiki/Bresenh...line_algorithm

Die einzelnen Pixel lassen sich dann immer noch bequem per BIOS-Funktion zeichnen. Wie das geht, ist auch hinter dem ersten Link beschrieben.
ja so ist das schon eher gemeint...ich werd mich versuchen einzulesen dort, danke schonmal

noch jemand links zu solchen dokumentationen?

@ oben

wie sollen die 3 Zeilen denn aussehen?
hadez16 ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 09:28:17   #10 (im Thread / einzeln)
KhanRKerensky
Silver Member
 
Registriert: 2005-06-17
Beiträge: 384
Re: Linie zeichnen mit Assembler

mov ax, 092dh
int 10h

Das ist zudem auch ein BIOS Interrupt. Da brauchts dann noch nicht mal DOS. Ein Kreis ist auch nicht viel schwerer. SCNR
KhanRKerensky ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 12:24:37   #11 (im Thread / einzeln)
Arokh
Gesperrt
 
Registriert: 2006-08-23
Beiträge: 734
Re: Linie zeichnen mit Assembler

Zitat von KhanRKerensky Beitrag anzeigen
mov ax, 092dh
int 10h
müßte da nicht an irgendeiner Stelle stehen, zwischen welchen Pixeln die Linie verlaufen soll?
Arokh ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 14:42:51   #12 (im Thread / einzeln)
Thomas(:
Silver Member
 
Benutzerbild von Thomas(:
 
Registriert: 2006-11-17
Beiträge: 282
Re: Linie zeichnen mit Assembler

Zitat von hadez16 Beitrag anzeigen
unser Lehrer in der Schule meinte heute, wer es selbsständig hinnkriegt in Assembler eine Linie auf den Bildschirm zu zeichnen, kriegt ne mündliche 1 eingetragen.
Schon verloren.

###
Thomas(: ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 15:00:46   #13 (im Thread / einzeln)
hadez16
Admiral Member
Threadstarter
 
Benutzerbild von hadez16
 
Registriert: 2003-03-31
Beiträge: 2.920
Re: Linie zeichnen mit Assembler

ich habs jetzt mit einzelnen Pixeln gemacht, das muss dem Lehrer reichen

hab gleich den Namen unsrer Klasse genommen...

Code:
mov ax,13 
int 10h 	

mov ah,0Ch 	
mov al,7 
mov cx,50    
mov dx,100    
int 10h



mov ebx,40

Schleife:
	dec dx
	int 10h
	dec ebx
cmp ebx,0
jne Schleife

mov cx,90
mov dx,100

mov ebx,40

Schleife2:
        dec dx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife2


mov cx,103
mov dx,60

mov ebx,26

Schleife3:
        dec cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife3


mov cx,150
mov dx,100
mov ebx,40

Schleife4:
        dec dx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife4

mov cx,150
mov dx,60
mov ebx,30

Schleife5:
        inc cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife5

mov cx,180
mov dx,60
mov ebx,40

Schleife6:
        inc dx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife6


mov cx,180
mov dx,100
mov ebx,30

Schleife7:
        dec cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife7

mov cx,200
mov dx,60
mov ebx,25

Schleife8:
        inc cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife8

mov cx,201
mov dx,60
mov ebx,40

Schleife9:
        inc dx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife9

mov cx,201
mov dx,100
mov ebx,25

Schleife10:
        inc cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife10

mov cx,226
mov dx,100
mov ebx,20

Schleife11:
        dec dx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife11

mov cx,226
mov dx,80
mov ebx,25

Schleife12:
        dec cx
        int 10h
        dec ebx
cmp ebx,0
jne Schleife12

mov cx,250
mov dx,100
mov bl,13

Schleife13:        
        dec dx
        inc cx
        int 10h
        dec dx
        int 10h
        dec dx
        int 10h
        dec ebx
cmp bl,0
jne Schleife13


mov cx,275
mov dx,100
mov bl,13

Schleife14:
          dec dx
          dec cx
          int 10h
          dec dx
          int 10h
          dec dx
          int 10h
          dec ebx
cmp bl,0
jne Schleife14

mov cx,270
mov dx,85
mov bl,14

Schleife15:
        dec cx
        int 10h
	dec ebx
cmp bl,0
jne Schleife15


mov ah,0 	
int 16h 

mov ax,3 
int 10h 	

mov ax,4C00h
int 21h
kompiliert mit NASM

Geändert von hadez16 (2007-04-17 um 15:02:05 Uhr)
hadez16 ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 15:32:00   #14 (im Thread / einzeln)
TheGamer
Admiral Member
 
Registriert: 2002-12-28
Beiträge: 3.926
Re: Linie zeichnen mit Assembler

Zitat von hadez16 Beitrag anzeigen
ich habs jetzt mit einzelnen Pixeln gemacht, das muss dem Lehrer reichen

hab gleich den Namen unsrer Klasse genommen...
Wundersame Klassennamen

IT 06A

Geändert von TheGamer (2007-04-17 um 15:34:53 Uhr)
TheGamer ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 15:38:35   #15 (im Thread / einzeln)
hadez16
Admiral Member
Threadstarter
 
Benutzerbild von hadez16
 
Registriert: 2003-03-31
Beiträge: 2.920
Re: Linie zeichnen mit Assembler

ich habe noch meine Probleme den Bresenham-Algorithmus in Assembler zu realisieren
hadez16 ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 15:48:37   #16 (im Thread / einzeln)
TheGamer
Admiral Member
 
Registriert: 2002-12-28
Beiträge: 3.926
Re: Linie zeichnen mit Assembler

Zitat von Thomas(: Beitrag anzeigen
Schon verloren.
Hat er ja gemacht.

Lern du mal finnisch aber bitte selbstständig.

Ohne irgendeine Hilfe wirst du da scheitern. Meinst du Leute die Englischbücher lesen, lassen sich die Sprache beibringe oder bringen es sich selbst bei.

Geändert von TheGamer (2007-04-17 um 21:00:34 Uhr)
TheGamer ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-17, 17:48:58   #17 (im Thread / einzeln)
hadez16
Admiral Member
Threadstarter
 
Benutzerbild von hadez16
 
Registriert: 2003-03-31
Beiträge: 2.920
Re: Linie zeichnen mit Assembler

Zitat von TheGamer Beitrag anzeigen
Wundersame Klassennamen

IT 06A
IT = IT/EDV/Fachinformatik

06 = "Einschulungsjahr"

A = Klassenteil.....aufgeteilt in A und B

hadez16 ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-18, 20:41:10   #18 (im Thread / einzeln)
KhanRKerensky
Silver Member
 
Registriert: 2005-06-17
Beiträge: 384
Re: Linie zeichnen mit Assembler

Zitat von Arokh Beitrag anzeigen
müßte da nicht an irgendeiner Stelle stehen, zwischen welchen Pixeln die Linie verlaufen soll?
Es erscheint ein "-" an der aktuellen (schätz ich zumindest) Cursorposition. Die Linie ist gezeichnet und damit die Aufgabe erfüllt. Bei einer so ungenauen Aufgabenstellung...
KhanRKerensky ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-19, 16:42:11   #19 (im Thread / einzeln)
Arokh
Gesperrt
 
Registriert: 2006-08-23
Beiträge: 734
Re: Linie zeichnen mit Assembler

Zitat von KhanRKerensky Beitrag anzeigen
Es erscheint ein "-" an der aktuellen (schätz ich zumindest) Cursorposition. Die Linie ist gezeichnet und damit die Aufgabe erfüllt.
LOOOOOOOOOOOOOOOL
Erinnert mich an einen Anekdote von Charles Petzold aus seinem Win32-Handbuch, wie er im Jahr 1985 in einem Wettbewerb den 2. Platz (nach Bill Gates) erreicht hat, indem er die Aufgabe, kleine und große Kreise zu malen, mit kleinen und großen o's realisiert hat.

Als TheGamer's hadez16's Lehrer würde ich so eine Lösung nicht akzeptieren, mit der Begründung, daß nach dem heutigen Stand der Computergrafik - im Jahr 1985 mag das noch anders gewesen sein - die Aufgabenstellung, eine Linie auf dem Bildschirm zu zeichnen, eindeutig genug als Forderung nach einer grafischen, pixelorientierten Lösung zu verstehen ist.

BTW: wo in TheGamer'c hadez16's Code steht denn IT 06A?

Geändert von Arokh (2007-04-20 um 17:21:13 Uhr) Grund: TE's Namen korrigiert
Arokh ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2007-04-20, 13:22:42   #20 (im Thread / einzeln)
TheGamer
Admiral Member
 
Registriert: 2002-12-28
Beiträge: 3.926
Re: Linie zeichnen mit Assembler

Zitat von Arokh Beitrag anzeigen
LOOOOOOOOOOOOOOOL
Erinnert mich an einen Anekdote von Charles Petzold aus seinem Win32-Handbuch, wie er im Jahr 1985 in einem Wettbewerb den 2. Platz (nach Bill Gates) erreicht hat, indem er die Aufgabe, kleine und große Kreise zu malen, mit kleinen und großen o's realisiert hat.

Als TheGamer's Lehrer würde ich so eine Lösung nicht akzeptieren, mit der Begründung, daß nach dem heutigen Stand der Computergrafik - im Jahr 1985 mag das noch anders gewesen sein - die Aufgabenstellung, eine Linie auf dem Bildschirm zu zeichnen, eindeutig genug als Forderung nach einer grafischen, pixelorientierten Lösung zu verstehen ist.

BTW: wo in TheGamer'c Code steht denn IT 06A?
Ich hab doch gar kein Code

Das ist der andere User, nicht ich. Mir sagt schon lange kein Lehrer was ich zu tun habe und was nicht

EDIT: Hab den Code lediglich kompiliert um mir anzuschauen was es ausspuckt. Hadez16 hat die Aufgabe von seinem Lehrer bekommen nicht ich. Ich würde die LÖsung auch nicht akzeptieren.

Geändert von TheGamer (2007-04-20 um 13:29:53 Uhr)
TheGamer ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Antwort

Lesezeichen
  • Dieses Thema bei Twitter speichern
  • Dieses Thema bei Facebook speichern


Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12:18 Uhr.


Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.