Здравствуйте, в ассемблере NASM на Ubuntu при открытии файла в отладчике у регистра RAX выходит ошибка ENOENT, но если я использую вывод информации из этого текстового файла, то все работает. т.е. ошибка непонятная для меня, получается этот файл он видит. Вопрос: функция lseek, т.е. № 19 выводит всегла '0', независимо от кол-ва символов в файле. Помогите пожалуйста как сделать, чтобы функция подсчета заработала и вывела кол-во символов в файле. Спасибо.
Вот мой код на NASM:
SECTION .data ;для инициализированных данных
filetoopen: db 'forsearch.txt',0 ;ввод адреса
lfiletoopen equ $-filetoopen
SECTION .bss ;для НЕинициализированных данных
input: resb 100
linput equ $-input
input1: resb 100
linput1 equ $-input1
SECTION .text
GLOBAL _start
_start:
;- открыть файл, прочитать его в буфер и найти в содержимом подстроку, используя строковые инструкции;-
mov eax,5 ;open
mov ebx,filetoopen ;имя/адрес файла
mov ecx,0 ;0-read, 1-write, 2-read and write
int 80h
mov ebx,eax ;filedes
mov eax,19 ;системный номер функции
mov ecx,0 ;offset
mov edx,2 ;whence
int 80h
add ah,'0'
mov byte[input],ah
;вывод результата
mov ecx,input ;ввод полученного количества символов
mov edx,eax ;ввод количества символов
mov eax,4
mov ebx,1
int 80h
;закрыть файл
mov eax,6
mov ebx,0 ;дескриптор
int 0x80
;возвращаемое значение — 0; значение -1 возвращается в случае ошибки.
;- завершить программу.+
mov eax, 1 ;содержимое помещается в регистр в EAX помещается 1 - номер системного вызова "exit"
mov ebx, 0 ;содержимое помещается в регистр в EBX помещается 0 - параметр вызова "exit" означает код с которым завершится выполнение программы
int 0x80 ;системный вызов. После системного вызова "exit" выполнение программы завершается