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 Dec 15, 2009 um 19:21:43 Uhr
*Thread abonnier*
*Popcorn kaltstell*

Content-Key: 131648

Url: https://administrator.de/contentid/131648

Printed on: April 20, 2024 at 04:04 o'clock

Member: lexa-lexa
lexa-lexa Dec 14, 2009 at 20:15:03 (UTC)
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
Member: godlie
godlie Dec 15, 2009 at 06:41:36 (UTC)
Goto Top
@lexa
Ich amüsiere mich gerade köstlich face-smile
Member: Hacker
Hacker Dec 15, 2009 at 17:56:13 (UTC)
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!!!
Member: lexa-lexa
lexa-lexa Dec 15, 2009 at 19:01:04 (UTC)
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.
Member: Hacker
Hacker Dec 16, 2009 at 12:54:17 (UTC)
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)?
Member: Hacker
Hacker Dec 19, 2009 at 07:22:32 (UTC)
Goto Top
Vielen Dank für deinen Link, der hat mir genug gezeigt, was ich wissen muss.
Member: Zedeck
Zedeck Feb 23, 2011 at 10:04:27 (UTC)
Goto Top
Wie wärs, wenn du einfach in den Projekteigenschaften das Ziel Framework von 3.5 auf 2.0 stellst? face-wink

lg