floppy + pointer -> Problem
-
Hi, also vorweg das Thema gehört mal wieder nicht ganz in diese Rubrik, aber auch nicht in ne andere. Hab nämlich ein C und Assembler Problem...
Also ich wollte, die Verzeichnistabelle von einer FAT12 Floppy auslesen.
Hab dazu die normale Int 13 Routine benutzt. Das Auslesen sollte klappen, jedoch finde ich die Daten im Speicher nicht, soll heißen nach meinem "Verständnis" sollten sie ausgegeben werden, jedoch kommen immer wieder dieselben Zeichenketten, die nicht in der Verzeichnisstruktur stehen...
Der Asm-Teil:.reset: mov ah, 0x00 mov dl, 0 int 13h jc .reset .read: mov ah, 0x02 mov al, 1 mov ch, 0 mov cl, 2 mov dh, 1 mov bx,0x1000 mov es,bx mov bx,0x200 mov dl, 0 int 13h jc .read .addr: mov al, 16 mov bx, 0x1000 mul bx mov bx, 0x200 add ax, bx .exit: mov sp, bp pop bp
So wie ich das dachte, wird ein 512 byte großes Segment geladen und an der STelle 1000:300 (adressiert über es:bx) abgelegt. Da die Assemblerfunktion nen Pointer an eine C Funktion zurückgeben soll, dachte ich, ich müsste die physikalische Adresse berechnen lasse und das ganze dann in Ax zurückgeben lassen. Mit der Adresse sollte dann die C Funktion über ein Zeiger auf Char den Buffer zur weiteren Verwendung bearbeiten können.
... int i = 0; char* pBuffer; pBuffer = (char *) dir(); dir(); while(i <= 100) { printf(*pBuffer); *pBuffer++; i++; } ...
Hmm sieht irgendwer nen Fehler, an dem das liegen könnte? Oder ist der Ansatz mit dem Pointer so nicht möglich? Ahso, falls das noch von Wichtigkeit sein sollte, ich verwende NASM und tcc