listowanie plików asembler 8086

0

jak zrobić listowanie plików w asemblerze 8086? coś w rodzaju "dir"

1

Najpierw trzeba mieć system plików. 8086 takich rzeczy nie zna (w sumie żaden procesor chyba nie zna), OS jest potrzebny. To jaki? A jak nie masz to pewnie trzeba by wiedzieć jaki dysk, jaka płyta główna, itp.

0
elwis napisał(a):

Najpierw trzeba mieć system plików. 8086 takich rzeczy nie zna (w sumie żaden procesor chyba nie zna), OS jest potrzebny. To jaki?

Jak mamy OS to nie potrzeba znać systemu plików. OS jest tu warstwą abstrakcji i system plików nie ma tu znaczenia¹.

Mowa o 8086 więc system możemy domyślnie założyć że DOS. Teoretycznie może być też Windows 3.x lub starszy, albo jakaś egzotyka, ale kto dziś jeszcze to pamięta..

No więc pod DOSem mamy odpowiednie funkcje przerwania int 21h.

FIND FIRST MATCHING FILE
FIND NEXT MATCHING FILE

Funkcje te zwrócą ci nazwy w formacie 8.3, czyli bez długich nazw plików. Długie nazwy są dostępne pod Windows 9x, 32-bitowych wersjach Windows 2000 i nowszych (z Windows 10 włącznie²) oraz pod DOSem jeżeli zainstalowany jest odpowiedni sterownik (DOSLFN). Wtedy mamy do dyspozycji takie wywołania:

LONG FILENAME - FIND FIRST MATCHING FILE
LONG FILENAME - FIND NEXT MATCHING FILE
LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH

To tyle jeśli chodzi o pobranie z poziomu asemblera listy plików. Jak to wykorzystać to już zostawiamy pytającemu…

¹) trochę ma, bo na partycjach exFAT trzeba używać API obsługującego długie nazwy plików. Inaczej się kaszani.
²) mowa o 32-bitowej wersji, bo na 64-bitowej programu DOSowego nie odpalimy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1