Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   problem opening a file (http://www.go4expert.com/forums/file-t17543/)

johnny_b_30 15May2009 20:11

problem opening a file
I write a program in C but i have not the right to use the standard library. I want to open a file so i use an assembly procedure that i have write, open_file. Here is what i mean:
At C code part:

                        int fp;
                        int open_file(char* filename);
                        fp = open_file(filename);

Assembly part:
 global open_file


        push bp
        mov bp,sp
        push bx
        push dx

        mov ah, 0x3d

        mov al, 0x00        ; read-only

        mov bx, [bp + 4]    ; file_name segment in DS

        mov ds, bx

        mov dx, [bp + 6]    ; file_name offset in DX

        int 0x21                ; open file

        jc open_error    ; if carry is set file could not open
        mov  handler, ax
        pop      dx
        pop        bx
        pop        bp
        ret        4


        mov ah,1
        pop dx
        pop bx
        pop bp

        ret        4

The problem is that when i execute my program, when it comes to the part of opening the file it aborts. What do you think is wrong? Other functions that i wrote in such a way, for example function that prints a string or clear the monitor, works well.

I would appreciate your help. Thanks a lot for your time

SaswatPadhi 15May2009 20:17

Re: problem opening a file
( I had mis-read your post first )
I will look into the ASM code and tell you later.

xpi0t0s 16May2009 14:59

Re: problem opening a file
If you're allowed to use the BIOS then it's fairly easy; just write a program in C that does the same, then step through it at the assembler level using the debugger. That'll show you what the standard library does, then you can use that for inspiration.

johnny_b_30 18May2009 02:49

Re: problem opening a file
when i try to use the debugger(ddd), i cannot debug and it returns me the message "Program exited with code 0176. You can't do that without a process to debug"

johnny_b_30 20May2009 23:24

Re: problem opening a file
ok finally i did that, but when it comes for the function that opens the file, simply refers to it as fopen, so i cannot see what fopen does in assembly language

xpi0t0s 21May2009 01:38

Re: problem opening a file
You need to use a debugger that will work at the assembly level and will allow you to step through individual assembly instructions.

See Section 8.6 of the gdb manual; this seems relevant.

There's also an apparently relevant section in the ddd documentation:


All times are GMT +5.5. The time now is 13:55.