sys_open will nicht so recht

16/09/2012 - 00:00 von Jens Kallup | Report spam
Hallo,

warum bekomme ich immer die Fehlermeldung ausgespuckt?
Stimmt da am Code was nicht?
will erreichen, dass ein driver file geöffnet wird und bei Fehler, eine msg ausgebem wird.
Es Danke für hilfen
der Jens

; nasm -f bin
BITS 32
org 0x08048000

ehdr: ; Elf32_Ehdr
db 0x7F, "ELF", 1, 1, 1, 0 ; e_ident
times 8 db 0
dw 2 ; e_type
dw 3 ; e_machine
dd 1 ; e_version
dd _start ; e_entry
dd phdr - $$ ; e_phoff
dd 0 ; e_shoff
dd 0 ; e_flags
dw ehdrsize ; e_ehsize
dw phdrsize ; e_phentsize
dw 1 ; e_phnum
dw 0 ; e_shentsize
dw 0 ; e_shnum
dw 0 ; e_shstrndx

ehdrsize equ $ - ehdr

phdr: ; Elf32_Phdr
dd 1 ; p_type
dd 0 ; p_offset
dd $$ ; p_vaddr
dd $$ ; p_paddr
dd filesize ; p_filesz
dd filesize ; p_memsz
dd 5 ; p_flags
dd 0x1000 ; p_align

phdrsize equ $ - phdr

LINUX_SYSCALL equ 0x80
ST_SIZE_RESERVE equ 8
ST_FD_IN equ 0
ST_ARGC equ 8
ST_ARGC_0 equ 12
ST_ARGV_1 equ 16

_start:



open_file:
mov eax, 5
mov ebx, driver_file_name
mov ecx, ecx
mov edx, edx
int LINUX_SYSCALL

store_fd_in:
cmp eax, 0
jl no_driver_loaded
mov [driver_file_desc], eax

close_fd_in:
mov eax, 6
mov ebx, driver_file_desc
int LINUX_SYSCALL
jmp no_error

no_driver_loaded:
mov eax, 4
mov ebx, 1
mov ecx, err_driver_load
mov edx, err_driver_size
int LINUX_SYSCALL

no_error:
mov eax, 1
mov ebx, 42
int LINUX_SYSCALL
ret

segment .data
driver_file_name: db "./driver/dBaseHelper",10, 0
err_driver_load : db "kann Treiber nicht laden!",10,0
err_driver_size equ $ - err_driver_load
driver_file_desc: dd 0
 

Lesen sie die antworten

#1 Herbert Kleebauer
16/09/2012 - 10:22 | Warnen spam
On 16.09.2012 00:00, Jens Kallup wrote:> Hallo,

warum bekomme ich immer die Fehlermeldung ausgespuckt?
Stimmt da am Code was nicht?
will erreichen, dass ein driver file geöffnet wird und bei Fehler, eine msg ausgebem wird.
Es Danke für hilfen
der Jens

open_file:
mov eax, 5
mov ebx, driver_file_name

mov ecx, ecx
mov edx, edx



Sollen hier wirklich zwei NOPs stehen?

int LINUX_SYSCALL

store_fd_in:
cmp eax, 0
jl no_driver_loaded



Fehler nur im Bereich -1 .. -4095
kleiner -4095 ist kein Fehler.

Ähnliche fragen