Reading bytes from file?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
St8ic

Reading bytes from file?

Post by St8ic »

I found some code to open a file and store the contents in offset 1000h:200h, but I don't know where to find the locations of each individule letter (byte) in that file. Here's the code:

_fopen: push bp       ; open a file
mov bp,sp
sub sp,0x40
mov bx,[bp+4]
mov si,fname
mov si, bx
mov [cs:lfv_dseg], es
mov [cs:lfv_dofs], di
mov ax, cs
mov es, ax
mov di, lfv_fname
mov cx, 11
repe movsb
.reset: mov ah, 0
mov dl, 0
int 13h
jc .reset
mov ax, [cs:lfv_dseg]
mov es, ax
mov bx, [cs:lfv_dofs]
mov di, bx
.read: mov ah, 2
mov al, 6
mov ch, 0
mov cl, 2
mov dh, 1
mov dl, 0
int 13h
jc.read
.next: add di, 32
push di
mov si, lfv_fname
mov cx, 11
repe cmpsb
pop di
jnz .next
add di, 26
mov ax, [ES:DI]
add ax, 31
mov bl, 36
div bl
mov ch, al
shr ax, 8
mov bl, 18
div bl
mov dh, al
inc ah
mov cl, ah
mov ah, 2
mov al, 1
mov bx,0x1000
mov es,bx
mov bx,0x200
mov dl, 0
int 13h
.exit: retn

lfv_fname db ' '
Anton

RE:Reading bytes from file?

Post by Anton »

>store the contents in offset 1000h:200h, but I don't know where to find the
>locations of each individule letter
Aren't they located at 1000h:200h?
St8ic

RE:Reading bytes from file?

Post by St8ic »

How could I put the contents of 1000h:200h into a string?
carbonBased

RE:Reading bytes from file?

Post by carbonBased »

I'm assuming you mean in C, as assembly has no notion of a string... you'd merely use segment and offset pairs to reference 1000h:200h

I'm also assuming this data is 0 delimited, and you're using TC++

char *myString = MK_FP(0x1000, 0x200);

should do the trick.  I haven't used TC++ is a _long_ time, so don't quote me on it, but that'll atleast give you an idea :)

Cheers,
Jeff
St8ic

RE:Reading bytes from file?

Post by St8ic »

I'm using TCC, and it gives a syntax error for that code. How could I adapt it to work on TCC?
carbonBased

RE:Reading bytes from file?

Post by carbonBased »

TC++ and TCC are the same thing.  What is the actual error you have?  Try this:

far char *string = MK_FP(segment, offset);

Again, been a while... I'm not quite sure where the 'far' qualifier is supposed to be... TC is picky about it.  I'm pretty sure it goes before the datatype, though.

Cheers,
Jeff
Post Reply