Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

asm - Was passiert im Hintergrund (WinAPI und DOS-Interrupts

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 18.06.2006, 08:09    Titel: asm - Was passiert im Hintergrund (WinAPI und DOS-Interrupts Antworten mit Zitat

Wie bringt DOS mit dem int 21h beispielsweise etwas auf den Bildschirm? Und WinAPI das Selbe, beispielsweise ein Text in einem Fenster (und das Fenster selbst); was wären das für asm-Codes? Passiert bei DOS und WIndows da etwas ähnliches?

Das Thema über Programm ohne Betriebssystem hat mich inspiriert; wenn man diese Routinen schreibt anstatt vom Betriebssysem aufruft könnte man ja ein Programm erstellen welches ohne Betriebssystem lauft...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.06.2006, 10:49    Titel: Antworten mit Zitat

Microsoft kocht auch nur mit Wasser. Windows setzt die Pixel ebenso nach Koordinaten auf den Bildschirm. Der Unterschied zwischen selber machen und Windows ist, dass Windows die Grafikkarten alle persönlich kennt (~"hat einen Treiber für sie") und kann sie somit gezielt ansprechen kann, was besser ist, als auf VESA Funktionen zurückgreifen zu müssen, was der Normalprogrammierer machen will, wenn er ohne Win programmieren will.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 18.06.2006, 12:50    Titel: Antworten mit Zitat

Habe ich noch gedacht; werden die Pixel in den Speicher geschrieben und an die Grafikkarte übertragen wie in einem asm-Beispiel. Ist das bei DOS-Interrupts auch so, wenn Text ausgegeben werden soll?
Ich habe ein Windows-Programm schon disassembliert, verständlich ist es danach kaum mehr ausser ich finde eine selbst geschriebene asm-Routine wieder. Ist dort das Übertragen der Pixel usw. ersichtlich; mit den stosd usw-Befehlen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.06.2006, 12:54    Titel: Antworten mit Zitat

Öhm, wie Microsoft das alles genau macht, kann ich dir nicht sagen, Windows ist kein Open Source Programm... grinsen

Windowsprogramme setzen aber nicht die Pixel usw. selbst oder sprechen die GraKa an, sie rufen die Windowseigenen Funktionen für alles mögliche auf. In einer notepad.exe o.ä. wirst du keine Assemblercodes zum Ansprechen der Grafikkarte oder der Festplatten etc. finden. In den Anwendungen sind Referenzen auf die fertigen Funktionen dazu eingebaut.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 18.06.2006, 21:17    Titel: Antworten mit Zitat

Klar, wie wenn man in FB oder asm WinAPI benützt. Mich interessiert eben was diese dann tun, auf Assemblerebene...
Der Disassembler/Debugger zeigt meines WIssens alles an, auch die externen Funktionen als asm nur allzuviel kann ich da nicht erkennen; es werden dauernd Speicheradressen berechnet und Dinge ge"pusht" und gepopt (wie auch FreeBasic wenn man die asm-Codes anschaut).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 19.06.2006, 18:14    Titel: Antworten mit Zitat

c.m.obrecht hat Folgendes geschrieben:
Der Disassembler/Debugger zeigt meines WIssens alles an, auch die externen Funktionen als asm nur allzuviel kann ich da nicht erkennen;

Das stimmt nicht.
Die WinAPI wird (in der Regel) erst bei Laufzeit eingebunden. Das heisst, du findest die WinAPI Funktionen nicht in deiner Exe Datei sondern bloss den Zugriff.
Zum Vorstellen:
Wenn ein Programm auf Windows 95 geschrieben wurde, erscheint die Titelleiste bei XP trotzdem Quitsch Bunt und umgekehrt (auf XP geschrieben aber auf Win 95 laufen) Maus Grau.

Ich halte es für eine Schlechte Idee, die WinAPI in Asembler anzusprechen, das ding fliegt (zu mindest mir) auch in Freebasic oft genug um die Ohren.

c.m.obrecht hat Folgendes geschrieben:
Das Thema über Programm ohne Betriebssystem hat mich inspiriert; wenn man diese Routinen schreibt anstatt vom Betriebssysem aufruft könnte man ja ein Programm erstellen welches ohne Betriebssystem lauft...

Das kann schnell nach hinten los gehen, wenn man Windows Systematisch umgeht, blockiert Windows das Programm weil es ein Sicherheitsrisiko ist.
Aus dem "es läuft auch ohne Betriebssystem" wird dann schnell "es läuft nur ohne Betriebssystem"
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 19.06.2006, 18:19    Titel: Antworten mit Zitat

Ah ja, sicher? Ich meinte die DLLs usw. waren angegeben; sprünge dazu und dann der Code der dort vorhanden ist.

Natürlich, ist auch mehr ein Versuch... auch wenn es nur ohne Betriebssystem läuft.
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 19.06.2006, 18:39    Titel: Antworten mit Zitat

Wenn die DLL in der jeweiligen Exen wären brauchte man die DLL's nicht.

Der Deasembler ist ein selten dämliches Programm (so jetzt ist es gesagt zwinkern), es analysiert den Code einfach Byte für Byte und sieht nach/berechnet welche Byte zusammen gehören und welchen ASM Befehl sie meinen oder manchmal auch meinen könnten.
Ich bezweifle, das der Deasembler auch noch alle zugehörigen DLL's deasambleriert (aufwendig und auch oft Verboten (z.B. bei Windows, weil Urheberrecht bei Microsoft)).

Zitat:
und Dinge ge"pusht" und gepopt (wie auch FreeBasic wenn man die asm-Codes anschaut).

Das ewige Pushen und Poppen finde ich genial, wenn du es dir genauer anschaust, wird die vielleicht auf fallen, das es sich oft um die Parameter von Funktionen und Subroutinen handelt.

Zitat:
es werden dauernd Speicheradressen berechnet

Ja, Pointer halt, wird ja auch schon für das einfachste Array gebraucht.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 20.06.2006, 10:18    Titel: Antworten mit Zitat

Klar sind sie nicht in der EXE-Datei.
Ich muss vielleicht bemerken; es handelt sich m einen Disassembler/Debugger (w32dasm oder so), der zeigt eine Liste mit DLLs und Sprünge dazu wo weiterer Code folgt, während der Laufzeit (logischerwise wenn man das Programm im Debuger startet).
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 20.06.2006, 17:38    Titel: Antworten mit Zitat

Dann kann es sein, dann haben wir aneinander vorbei geredet.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 20.06.2006, 19:37    Titel: Antworten mit Zitat

Ah OK; demfall schon. Habe auch nicht daran gedacht dass w32dasm mehr kann als ein reiner DIsassembler lächeln

So sind also alle Vorgänge sichtbar; auch welche die man nicht selber programmiert? Wer das was man dort sieht nachvolziehen kann muss ja gut sein... zwinkern
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz