Autor Thema: Windows und Datei suchen  (Gelesen 6994 mal)

bscreator

  • Gast
Gespeichert
« am: 26. April 2011, 14:28 »
Hallo,

ich bin grad ein bisl in der Windows - SW - Entwicklung mit Assembler.
Zum Einstag wollt ich mir mal alle Dateinamen im aktuellen Verzeichnis ausgeben lassen.
Dazu hab ich den Interrupt 4Eh des INT 21h (Search for first match) ausprobiert.
Laut Interrupt sollte die Ausgabe in den Bytes 30-42 zu finden sein.

Nach Ausführen des Interrupts ist allerdings kein Dateiname in den Bytes zu finden.

Wie kann man unter Windows mit Assembler eigentlich sonst alle Dateinamen im aktuellen Verzeichnis ausgeben lassen?

PS : Der Interrupt 4Eh des INT 21h befindet sich nicht in RALF BROWNS Interrupt List

Vielen Dank,
Matthias

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. April 2011, 17:18 »
Hallo,

hast du den Fehlercode ausgewertet?

Wie kann man unter Windows mit Assembler eigentlich sonst alle Dateinamen im aktuellen Verzeichnis ausgeben lassen?

Unter Windows (in fett, damit du es nicht übersiehst ;)), mit den API-Funktionen FindFirstFile und FindNextFile. Google findet zu dem Stichwort sogar für Assembler jede Menge.

Zitat
PS : Der Interrupt 4Eh des INT 21h befindet sich nicht in RALF BROWNS Interrupt List
In meiner schon. -> http://www.ctyme.com/intr/rb-2977.htm (Ist übrigens ein DOS-Interrupt)
« Letzte Änderung: 26. April 2011, 17:20 von PorkChicken »
Dieser Text wird unter jedem Beitrag angezeigt.

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #2 am: 26. April 2011, 21:17 »
Ich spiel' mal Onkel Tante Google:

http://www.codingcrew.de/programmierung/win32hlp.php - Win-API als .hlp-Datei
http://www.acm.uiuc.edu/sigwin/old/workshops/winasmtut.pdf - Ganz ordentliches Tutorial
http://win32assembly.online.fr/tutorials.html - Eine fast ultimative Seite zum Thema Windows-Assembler (habe ich damals, als ich noch Interesse daran hatte, exzessiv genutzt).

Int21 ist übrigens, wie PorkChiken schon sagte, DOS und nicht Windows - vergiss' den Int21 ganz schnell wieder (außer du programmierst noch unter Win9x oder purem DOS).

$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

 

Einloggen