Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: tiedoston lukeminen

KemXy [10.02.2003 14:59:12]

#

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ä.

thefox [10.02.2003 15:17:48]

#

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/int_21.html

EDIT: urh, bugi, ja toinen.

KemXy [10.02.2003 16:06:41]

#

Joo. Kokeilin ja jouduin itse lisäämään

mBuf db 50 dup(0)

jälkeen vielä: joo db "$", ettei tulisi kaikkea roskaa
muistista.

thefox [11.02.2003 10:19:48]

#

Juu, jos tulostella DOS-funktiolla 9h haluat niin stringin terminaattorina toimii '$'.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta