hacker
Goto Top

Bildschirmschoner in Assembler schreiben

Bildschirmschoner von C# in Assembler übersetzen

Hallo, Ich habe mal aus Spaß einen Bildschirmschoner in C# geschrieben. Mir gefiel er und ich wollte in auch in der Schule auf den Computer ziehen. Allerdings funktioniert der dort nicht, weil er mindestens .NET-Framework 3.5 benötigt und auf den Schul-PC's haben wir nur 1.0. Auf jeden Fall hab ich zu dem Zeitpunkt Assembler gelernt und dachte mir, es wäre eine schöne Übung, den Bildschirmschoner in Assember aufzusetzten. Allerdings war keines der Programmierbücher, die ich gelesen hab so frei, die WM_PAINT-Nachricht abzufangen oder irgendwie auf andere Weise unter 32-Bit Systemen etwas zu zeichnen. Im Internet findet man auch eher wenig und meistens für andere Zwecke. Da wollte ich mal fragen, ob mir hier jemand helfen kann.

Da ich leider nicht weis, wie man Dateien hier reinstellt wäre es hifreich wenn mir noch Einer posten könnte, wie man das macht, da ich nicht den ganzen Quelltext hier reinschreiben möchte.

Danke schon mal im voraus.
Kommentar vom Moderator Biber am 15.12.2009 um 20:21:43 Uhr
*Thread abonnier*
*Popcorn kaltstell*

Content-ID: 131648

Url: https://administrator.de/forum/bildschirmschoner-in-assembler-schreiben-131648.html

Ausgedruckt am: 22.12.2024 um 19:12 Uhr

lexa-lexa
lexa-lexa 14.12.2009 um 21:15:03 Uhr
Goto Top
Hi,

du weisst aber, was Assembler ist? Dann übersetze als Einstieg einfach den folgenden Mini-Code:

using System;
namespace HalloWelt {
   class Program {
      static void Main() {
         Console.Out.Write("Hallo Welt");  
      }
   }
}
Dann reden wir weiter face-wink
godlie
godlie 15.12.2009 um 07:41:36 Uhr
Goto Top
@lexa
Ich amüsiere mich gerade köstlich face-smile
Hacker
Hacker 15.12.2009 um 18:56:13 Uhr
Goto Top
.MODEL SMALL
.DATA
string db "Hallo Welt$"
.CODE
MOV AX, @Data
MOV DS, AX
MOV DX, OFFSET string
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H

Das berühmte "Hallo Welt!"-Programm. Lernt man in fast jedem Programmierbuch zu erst!!!
lexa-lexa
lexa-lexa 15.12.2009 um 20:01:04 Uhr
Goto Top
Die guten alten DOS IRQs, das waren noch Zeiten. Nunja, so hatte ich die Aufgabe zwar nicht gemeint, aber gut ;)

Ich verlinke dir mal einen Beispielcode für die Verwendung von DirectDraw:
http://www.movsd.com/masm.htm

In "masmflip.zip" werden Nachrichten wie "WM_PAINT" gehandelt. Vielleicht kannst du daraus ableiten, was du suchst.
Hacker
Hacker 16.12.2009 um 13:54:17 Uhr
Goto Top
War schon sehr hilfreich, aber es wirft eine unwichtige Frage auf (Benutzt man nicht ADDR statt OFFSET in 32 Bit Programmen), ist jetzt aber uninteressant.

Ich bin zwar eher schlecht als recht in Englisch, ich kann aber bestimmt schon mal was mit anfangen.
Zuerst bastel ich mal das Grundgerüst des Programmes, dann sehe ich weiter.

Wenn wir gerade dabei sind, wie kann ich sinnvoll ein Array mit 55 Punktstrukturen aufsetzten? Verwalten wäre kein Problem aber meine Idee wäre:

point STRUCT
x dw ?
y dw ?
ENDS
idee STRUCT
point1 <>
point2 <>
...
ENDS

Ich meine, so könnt ihr euch das vorstellen. Zweite Möglichkeit wäre:

idee2 dw (55*2) DUP (?)

Spart zwar Text, und es wird praktisch nie direkt auf ein Element zugegriffen, aber es ist schwierig vorzustellen.

Wie wären eure Ideen (wenn's den eine andere Möglichkeit gibt)?
Hacker
Hacker 19.12.2009 um 08:22:32 Uhr
Goto Top
Vielen Dank für deinen Link, der hat mir genug gezeigt, was ich wissen muss.
Zedeck
Zedeck 23.02.2011 um 11:04:27 Uhr
Goto Top
Wie wärs, wenn du einfach in den Projekteigenschaften das Ziel Framework von 3.5 auf 2.0 stellst? face-wink

lg