Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 07:09   #1
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию Не работает программа NASM

Здравствуйте!
Помогите, пожалуйста, найти ошибку в коде (NASM под Linux):

Код:
    SECTION .data
	inp db "./inputt.txt", 0
        outp db "./outputt.txt", 0

    SECTION .bss
        buffer resb 100
        buf_len equ $ - buffer

    SECTION .text
    global _start

        _start:
		mov eax, 5        ;открываем файл inp
		mov ebx, inp
		mov ecx, 0
		mov edx, 0700
		int 80H

		mov eax, 3        ;читаем из файла inp в buffer
		mov ebx, inp
		mov ecx, buffer
		mov edx, buf_len
		int 80H

		mov eax, 6        ;закрываем файл inp
		mov ebx, inp
		int 80H

		mov eax, 8          ;создаем файл outp
		mov ebx, outp      
		mov ecx, 0777
		int 80H

		mov ebx, eax        ;выводим buffer в файл outp
		mov eax, 4
		mov ecx, buffer
		mov edx, buf_len
		int 80H

		mov eax, 6           ;закрываем файл outp
		int 80H

		mov eax, 1            ;exit
		int 80H

Насколько я понимаю, не работает именно чтение из файла inp. Т.к. если читаю из консоли и вывожу в outp - все работает. Подскажите, пожалуйста, в чем здесь может быть проблема?
sunny_alice вне форума Ответить с цитированием
Старый 26.12.2012, 12:19   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ты при чтении передаешь в ebx вместо хендла файла его имя. Потому и не работает.
Son Of Pain вне форума Ответить с цитированием
Старый 29.12.2012, 12:13   #3
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию

Son Of Pain, вроде бы вот изменила, но все равно не работает...

Код:
SECTION .data
	inp db "./inputt.txt", 0
        outp db "./outputt.txt", 0

    SECTION .bss
        buffer resb 100
        buf_len equ $ - buffer

    SECTION .text
    global _start

        _start:
		mov eax, 5
		mov ebx, inp
		mov ecx, 0
		mov edx, 0700
		int 80H

		mov ebx, eax
		mov eax, 3
		mov ecx, buffer
		mov edx, buf_len
		int 80H

		mov eax, 6
		mov ebx, inp
		int 80H

		mov eax, 8
		mov ebx, outp
		mov ecx, 0777
		int 80H

		mov ebx, eax
		mov eax, 4
		mov ecx, buffer
		mov edx, buf_len
		int 80H

		mov eax, 6
		int 80H
		mov eax, 1
		int 80H
sunny_alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работает в WinXP и не работает в Win7 blblbl-org Общие вопросы Delphi 4 23.04.2012 19:50
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Ассемблер(NASM). Как оформить цикл "while" в NASM-е? Зелёный Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 10.06.2011 16:04
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56