Grundprinzipien der Windows- Programmierung



  • Hallo!
    Vor einigen Wochen hatte ich mich dazu entschlossen Assembler zu lernen. Ich lernte Assembler durch mehrere deutschsprachige Tutorials und nach meinem Selbststudium habe ich nun die Grundkonzepte der folgenden Gebiete gelernt:

    - Allgemeine Assembler Programmierung mit TASM und debug
    - Grundlagen MS Dos

    Meine Interesse an Assembler ist größer geworden. Trotz der unstrukturierten Programmierung, hat es mich fasziniert. Aus diesem Grund soll mein Selbststudium an dieser Stelle nicht beendet sein. Ich bin auf der Suche nach einem deutschsprachigen Assembler- Tutorial, dass die Grundprinzipien der Windows- Programmierung durchnimmt.
    Ich hoffe hier meldet sich vielleicht jemand, der ein solches Tutorial kennt, denn allgemein gibt es selbst zu Grundlagen von Assembler wenig deutschsprachige Tutorials.
    Danke schon im vorraus!



  • hmm "Grundprinzipien der Windows Programmierung" und dann ASM ?
    ist eher ein Widerspruch an sich 🙂 der Vorteil an ASM ist ja gerade das Betriebssystem-unabhängige.
    Natürlich ist es möglich, ist aber so ähnlich wie wenn du am Auge operiert werden musst, und der Doc macht den Eingriff über den ***** 😃

    Ich kenn nur eine portugiesische Library, die Win sinnvoll unterstützt, namens Nagoa. Link dich mal ein: http://visual-assembler.pt.vu/



  • Original erstellt von Warewolf:
    **hmm "Grundprinzipien der Windows Programmierung" und dann ASM ?
    ist eher ein Widerspruch an sich 🙂 der Vorteil an ASM ist ja gerade das Betriebssystem-unabhängige.
    **

    Ähhh....ASM ist nur OS-unabhängig, wenn du ein eigenes OS schreibst 🙂 Ansonsten hängst du mit ASM noch viel mehr am OS als mit jeder anderen High-Level-Language. Denn auch Assembler-Programme dürfen nur über die vorhandene API zugreifen. EIn Pascal-Programm kann dabei z.B.noch WriteLn(); benutzen, egal welches OS drunter läuft, das regeln die Bibliotheken, aber ein Assembler-Programm wird je nach OS, den int 21 rufen (DOS), eine WinAPI (Windows) oder int 80 (Linux). Es sei denn man kapselt sich alles in eigene Bibliotheken 🙂



  • da hast du natürlich Recht. Ich meinte allerdings wirkliche Hardcore-Programmierung. Beispielsweise auslesen von Messdaten aus einer gesteckten Karte und dergleichen. Wenn man dann noch Text und Grafikausgabe über die BIOS Routinen inplementiert, sollte man relativ BS unabhängig sein.



  • Original erstellt von Warewolf:
    **da hast du natürlich Recht. Ich meinte allerdings wirkliche Hardcore-Programmierung. Beispielsweise auslesen von Messdaten aus einer gesteckten Karte und dergleichen.
    **

    Solange du das auf einem Windows/Linux-Rechner laufen lassen willst, musst du einen Treiber schreiben und de rist wieder OS-abhängig 🙂

    Wenn man dann noch Text und Grafikausgabe über die BIOS Routinen inplementiert, sollte man relativ BS unabhängig sein.

    In dem Moment läuft das Programm unter keinem (heute modernen) OS mehr und ist damit sien eigenes Mini-OS 🙂 Und in gewissem Maßen nutzt man immernoch das Pseude-OS "BIOS" 🙂



  • Vielleicht hilft dir das hier weiter: [url]http://www.deinmeister.de/wasmtut.htm [/url]



  • Mist - deinmeister wollte ich auch grad empfehlen 😃 - bist mir wohl zuvor gekommen



  • Ich hab sonst mal Iczelion's Tutorial übersetzt (oder jedenfalls versucht 😉 Zu finden unter www.joachimrohde.de
    Vielleicht hilft's dir ja...



  • Ein wenig englischer Text meinerseits (ist aber nicht sonderlich gut und nur eine wirklich grobe Einführung): http://coderz.net/malfunction/articles/win32asm.txt



  • Das von deinmeister.de ist irgendwie nicht sehr "professionell", weil er manchmal selbst nicht weiß, was manche Anweisungen bedeuten, aus diesem Grund finde ich es einfach nicht empfehlenswert.
    Das von Joachim Rohde (oder wie uach immer :D) scheint ziemlich gut. Leider bin ich mit TASM vertraut und möchte auch dabei bleiben. Vielleicht könnt ihr mir ja die Unterschiede erklären, oder wie ich ein MASM- Programm gut in TASM "konventieren" kann ...



  • Es ist zwar möglich mit TASM Win32Asm Programme zu schreiben, aber meiner Meinung nach nicht sehr empfehlenswert.
    Dazu folgende Gründe:
    - MASM stellt eine Direktive zur Verfügung (INVOKE), die die Parameter überprüft. Dadurch ist gewährleistet, dass du einer Funktion immer die richtige Anzahl an Parameter übergibst. In TASM werden einfach CALLs benutzt und die Parameter entweder auf dem Stack abgelegt oder mit Kommata getrennt, hinter die Funktion übergeben und es findet KEINE Parameterüberprüfung statt.
    Ich habe vorher auch nur mit TASM programmiert und wollte den auch beibehalten, aber die Anzahl der Fehler, die sich durch die INVOKE-Direktive reduzieren ist enorm.

    - TASM hat nur zwei Include-Dateien (ich glaub es waren nur 2), in denen Konstanten, etc. definiert sind. Und das sind bei weitem nicht alle. Bei MASM hingegen, gibt es unzählige Include-Dateien, die immer noch erweitert und gepflegt werden.

    - Da Windowsprogrammierung mit Assembler nicht allzu verbreitet ist, gibt es nicht allzu viele Ressourcen (im Gegensatz zu C, Delphi, etc.). Die meisten dieser Quellen benutzen allerdings MASM.

    Ich würde dir also empfehlen, sich das MASM32-Package zu besorgen (gibt es legal und kostenlos im Netz) und für die Windows-Programmierung MASM zu verwenden. Die Unterschiede zwischen MASM und TASM sind bei der DOS-Programmierung minimal und zu vernachlässigen.
    Ich für meinen Teil benutze TASM immer noch, wenn ich irgendwas unter DOS mache und MASM, wenn es ein Windows-Programm werden soll.

    Ich hoffe, damit konnte ich weiterhelfen (ansonsten noch mal fragen).

    Kleiner Tipp am Rande noch: http://board.win32asmcommunity.net/ <- sehr gutes (englisches) Board nur für Win32Asm.


Anmelden zum Antworten