Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике | Номер выпуска: | 1488 | | Дата выхода: | 14.11.2011, 20:30 | | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | | Подписчиков / экспертов: | 189 / 61 | | Вопросов / ответов: | 1 / 1 | Консультация # 184413: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Задание: Создать файл на съемном диске, открыть его для чтения и попытаться записать строку символов. Обработать ошибку при помощи INT24h и вывести на экран сообщение "Файл доступен для чтения". Надеюсь на вашу помощь... Консультация # 184413: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Задание: Создать файл на съемном диске, открыть его для чтения и попытаться записать строку символов. Обработать ошибку при помощи INT24h и вывести на экран сообщение "Файл доступен для чтения". Надеюсь на вашу помощь Дата отправки: 09.11.2011, 19:56 Вопрос задал: Ermak (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Ermak! Вот такая получилась программа. Используется анализ ошибки. Прерывание 24h для данной задачи неприменимо. Я добавил еще кое-что: 1) проверяем, есть ли нужный файл и с каким атрибутом 2) проверяем, какая ошибка Не забудьте задать имя диска своей флешки в пути файла... Смотрите, если что не так или непонятно, милости просим в мини-форум
Код : code segment 'code' ;начало сегмента кода assume cs:code,ds:data,ss:stk main proc mov ax, data ;адрес сегмента данных mov ds, ax ;в ds mov es, ax ;в es lea dx, sName ;имя файла mov ax, 4300h ;прочитаем его атрибут int 21h jc AttrErr ;есть ошибка, смотрим какая test cl, 1 ;файл есть, смотрим атрибут Read-Only jnz OpenReadOnlyFile;установлен? идем на открытие на запись mov cx, 1 ;нет атрибута Read-Only, установим! mov ax, 4301h int 21h jnc OpenReadOnlyFile;установился? идем на открытие на запись AttrErr: ;ошибка! cmp ax, 2 ;ошибка "файл не найден"? jne CreateError ;если нет, то на вывод сообщения, что файл создать невозможно! CreateReadOnlyFile: ;файл, всего лишь, не найден lea dx, sName ;создаем новый mov cx, 1 ; с атрибутом Read-Only mov ah, 3ch int 21h jnc CreateOk ;создался? закрываем и заново открываем на запись CreateError: ;файл создать невозможно lea dx, sCrErr ;(например, не вставлена флешка!) mov ah, 9 int 21h jmp PrintAny CreateOk: ;файл создался mov bx, ax mov ah, 3eh ;закрываем int 21h OpenReadOnlyFile: ;открываем на запись lea dx, sName mov ax, 3d01h int 21h mov bx, ax ;описатель файла jnc WriteToFile ;а "вдруг" не будет ошибки? lea dx, sOpErr ;мы обязательно попадем на ошибку ax=5 ("Нет доступа") jmp PrintMessage ;выводим сообщение, что запись невозможна WriteToFile: ;запись в файл lea dx, sString ;сюда мы никогда не попадем! mov cx, lString mov ah, 40h int 21h jc WriteError ;с проверкой на ошибку lea dx, sWrOk jmp CloseFile WriteError: lea dx, sWrErr CloseFile: ;закрывам файл mov ah, 3eh int 21h PrintMessage: ;вывод сообщения из ds:[dx] mov ah, 9 int 21h PrintAny: lea dx, sAny ;press any key mov ah, 9 int 21h mov ah, 0 int 16h ;ждем any key mov ax, 4c00h int 21h ;выход в ДОС main endp code ends data segment ;имя файла, поставить имя диска флешки !!!!!!!!!!!! sName db "f:\test.txt",0 ;невозможно создать файл, например, путь не найден (флешка не вставлена) sCrErr db "It's impossible to create a file",0dh,0ah,"$" ;невозможно записать в файл (что хотели, то и получили) sOpErr db "It's impossible to write a file",0dh,0ah,"$" ;сообщения при записи (для полноты) sWrErr db "Record error",0dh,0ah,"$" sWrOk db "Record is ok",0dh,0ah,"$" ;чтобы окно сразу не закрывалось sAny db "Press any key$" ;строка, которую будем писать в файл sString db "String" ;длина строки lString equ $-sString data ends stk segment stack dw 100h dup (?) stk ends end main  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 11.11.2011, 16:24 5 Спасибо за помощь! ----- Дата оценки: 13.11.2011, 22:24 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий