File operations in Linux

K

kid joe

Hello all:

I'm writing a small assembly program that will open a file, process
it, then close it again. I'm trying to build a simple "framework" for it
at the moment. I've got the open, close, and exit system calls in place,
but I think there's something wrong.

My code is below. It seems to work OK, it just runs silently as given
below. But if I try it with a non-existent file (e.g. change /dev/zero to
/dev/zer) then no error message is produced.

Thanks for any advice!


section .text

path db "/dev/zero",0x00

global _start
_start:
mov eax,5 ; open
mov ebx,path
xor ecx,ecx ; O_RDONLY
mov edx,0x100 ; S_IRUSR
int 0x80

xchg eax,ebx ; put fd into ebx
mov eax,6 ; close
int 0x80

mov eax,1 ; exit
int 0x80
 
A

Antoninus Twink

My code is below. It seems to work OK, it just runs silently as given
below. But if I try it with a non-existent file (e.g. change /dev/zero
to /dev/zer) then no error message is produced.

That's hardly surprising - you didn't tell it to produce an error
message! If you use a non-existent file, then the open() system call
*will* thoughtfully inform your program that there was a problem, by
returning a negative nunber in eax. You just choose to ignore this...

A couple of other things: as you're not creating a file, the mode
argument to open() is ignored, so there's no point putting anything
special in edx beforehand. There's no need for the xchg instruction when
you immediately clobber eax anyway. And you don't return a sensible exit
status to the shell at the end.

Here's your code with these things fixed up:


section .data

path db "/dev/zero",0x00
errmsg db "Error opening file!",0x0A
errlen equ $-errmsg

section .text

global _start
_start:
mov eax,5 ; open
mov ebx,path
xor ecx,ecx ; O_RDONLY
int 0x80

or eax,eax
jns cont

; error opening file...
mov eax,4 ; write
mov ebx,2 ; stderr
mov ecx,errmsg
mov edx,errlen
int 0x80
mov ebx,1 ; return failure status
jmp finish

cont:
mov ebx,eax ; put fd into ebx
mov eax,6 ; close
int 0x80
xor ebx,ebx ; return success status

finish:
mov eax,1 ; exit
int 0x80
 
K

kid joe

This is indisputably off-topic. Please protect the newsgroup by not replying
here.

Thanks a lot to AT for the advice.

Sorry it's a bit off-topic. I thought about posting to comp.lang.asm.x86
but that's a moderated newsgroup so it would take possibly days to get an
answer by the time your message is approved then any replies are approved.
This group seemed close enough and I've got my question answered so thanks.
 
J

Joachim Schmitz

kid said:
Thanks a lot to AT for the advice.

Sorry it's a bit off-topic.
That the understatemenmt of the month, in not of the decade...
I thought about posting to
comp.lang.asm.x86 but that's a moderated newsgroup so it would take
possibly days to get an answer by the time your message is approved
then any replies are approved. This group seemed close enough and
This group seemed close enough
This goup is by no means close enough, here we don't discuss either
assembler, open or Linux, there are other newsgroups dedicated to that
(comp.lang.asm.x86, comp.unix.programmer and comp.os.linux.* respectively).

Bye, Jojo
 
K

Kenny McCormack

This is indisputably off-topic. Please protect the newsgroup by not replying
here.

The newsgroup must be awfully fragile if this post is capable of harming
it.
 
S

santosh

kid said:
Thanks a lot to AT for the advice.

Sorry it's a bit off-topic. I thought about posting to
comp.lang.asm.x86 but that's a moderated newsgroup so it would take
possibly days to get an answer by the time your message is approved
then any replies are approved. This group seemed close enough and I've
got my question answered so thanks.

The experts in alt.lang.asm are just itching for challenging posts from
newbies. And it's unmoderated. Next time try there.
 
D

Default User

kid joe wrote:

Thanks a lot to AT for the advice.

Twink is a troll, who has used you as a pawn in his on-going attempt to
disrupt the newsgroup. As such, it's not doing you very much good.
Should you in the future have a legitimate question for the group,
you'll be less likely to get advice from the very knowledgable people
here.




Brian
 
E

Eligiusz Narutowicz

Default User said:
kid joe wrote:



Twink is a troll, who has used you as a pawn in his on-going attempt to
disrupt the newsgroup. As such, it's not doing you very much good.
Should you in the future have a legitimate question for the group,
you'll be less likely to get advice from the very knowledgable people
here.

Why is this? This is a help group and if he asks a legit questions I am
sure someone will help him quickly.
 
J

Jens Thoms Toerring

Why is this? This is a help group and if he asks a legit questions I am
sure someone will help him quickly.

Are you really that dense? This is no all-kind-of-questions-
that-may-come-to-mind help group, this is a group about the
programming language C in case you didn't notice yet. Or do
you want next to answer questions where to buy shoes? Every-
one here is also some kind of "expert" on buying shoes since
probably all here bought some pairs, but that doesn't make it
topical HERE. If you want a group where all and every question
gets aneswered then go through the process of creating it and
good luck. I guess we can then send all the people with off-
topic questions there.
 
R

Richard

Are you really that dense? This is no all-kind-of-questions-
that-may-come-to-mind help group, this is a group about the
programming language C in case you didn't notice yet. Or do
you want next to answer questions where to buy shoes? Every-
one here is also some kind of "expert" on buying shoes since
probably all here bought some pairs, but that doesn't make it
topical HERE. If you want a group where all and every question
gets aneswered then go through the process of creating it and
good luck. I guess we can then send all the people with off-
topic questions there.

Erm, he said "legit questions". Default Jobsworth was saying people
would not help him with on topic, legitimate questions. I think you owe
the poster an apology.

Its good to pop back and see the usual arrogant, preening wannabes
strutting around and being as rude and obnoxious as possible. What a
hoot.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,185
Members
46,736
Latest member
AdolphBig6

Latest Threads

Top