Mitenkähän assemblyllä (dos) luetaan tiedostosta merkkejä?
Tai ennemminkin mikä olisi paras ja ehkä helpoin tapa tallentaa tietoa ohjelman käytettäväksi. Esim. pelin kenttä.
Eihän noita ulkoa muista.. HelpPC rientää apuun jälleen kerran.
INT 21,3D - Open File Using Handle AH = 3D AL = open access mode 00 read only 01 write only 02 read/write DS:DX = pointer to an ASCIIZ file name INT 21,3F - Read From File or Device Using Handle AH = 3F BX = file handle CX = number of bytes to read DS:DX = pointer to read buffer INT 21,3E - Close File Using Handle AH = 3E BX = file handle to close
Eli:
.data fName db "foo.bar", 0 mBuf db 50 dup(0) .code start: mov ax, @data mov ds, ax mov dx, offset fName xor ax, ax mov ah, 3dh int 21h ; open the file jc bailOut mov bx, ax mov cx, 50 mov dx, offset mBuf mov ah, 3fh int 21h ; read 50 bytes from file jc bailOut int 21h ; close file bailOut: int 20h end start
TJSP, ehkäpä tuo jopa toimii.. :-) Kirjoittaminen on yhtä helppoa: http://members.tripod.com/~oldboard/assembly/
EDIT: urh, bugi, ja toinen.
Joo. Kokeilin ja jouduin itse lisäämään
mBuf db 50 dup(0)
jälkeen vielä: joo db "$", ettei tulisi kaikkea roskaa
muistista.
Juu, jos tulostella DOS-funktiolla 9h haluat niin stringin terminaattorina toimii '$'.
Aihe on jo aika vanha, joten et voi enää vastata siihen.