WMmail.ru - сервис почтовых рассылок

четверг, 27 мая 2010 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

Если выпуск не отображается корректно, то вы можете прочесть его на сайте

Когда ты выйдешь замуж? Кто твой будущий муж? Проблемы в личной жизни?
 
Реклама Отказаться от рекламы
 
Subscribe.Ru

RFpro.ru: Ассемблер? Это просто! Учимся программировать

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 2375
• повысить рейтинг »
_Ayl_
Статус: Профессионал
Рейтинг: 1849
• повысить рейтинг »
vladisslav
Статус: 6-й класс
Рейтинг: 1227
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Assembler (Ассемблер)

Номер выпуска:1345
Дата выхода:27.05.2010, 22:30
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:263 / 63
Вопросов / ответов:1 / 1
IRC-канал по теме:#assembler

Вопрос № 178568: Уважаемые эксперты! Требуется написать программу(с комментариями) Разработать резидентную программу для ОС MSDOS.Программа может быть выполнена в виде exe или com файла. При попытке отформатировать диск программа выдает сообщение о невозможности тако...



Вопрос № 178568:

Уважаемые эксперты! Требуется написать программу(с комментариями) Разработать резидентную программу для ОС MSDOS.Программа может быть выполнена в виде exe или com файла. При попытке отформатировать диск программа выдает сообщение о невозможности такой операции и всегда возвращает вызвавшей программе код ошибки.
Ассемблер TASM.

Отправлен: 22.05.2010, 18:22
Вопрос задал: Филимонов Алексей Викторович, 1-й класс
Всего ответов: 1
Страница вопроса »


Отвечает Лысков Игорь Витальевич, Модератор :
Здравствуйте, Филимонов Алексей Викторович.
Примерная программа ниже. Программа перехватывает выполнение функции 5 (форматирование) и в случае попытки форматировать взводит флаг C и возвращает код ошибки "защиты записи".
К сожалению, проверить не могу, флоппи нет в принципе, а на жестком не хочется пробывать...
Код:

.model tiny
.code
.startup
jmp init ;на инициализацию
New13h: ;новый вектор 13h
cmp ax, 1234h ;проверка на повторную инсталяцию
jne CmpFormat
mov ax, 4321h ;программа уже инсталирована
iret
CmpFormat:
cmp ah, 05h ;формат?
jne ToOld13h ;нет - на старый вектор
;просто stc ничего не даст,
; после iret флаг потеряется!
push bp ;Но, флаг FC мы можем в звести в стеке!
mov bp, sp ;будем адресовать с помощью bp
or byte ptr [bp+6], 1 ;в стеке: [bp] = старый bp
; [bp+2] = IP
; [bp+4] = CS
; [bp+6] = FLAGS
;0001h - маска флага C
pop bp ;восстановим bp
mov ah, 3 ;код ошибки "Защита записи"
iret ;выход из прерывания,
; по выходу взведется флаг FC

ToOld13h:
jmp cs:dword ptr old13h ;все остальное на отработку
; по старому вектору

old13h dw ?, ? ;адрес старого вектора 13h

init: ;инициализация
mov ax, 1234h ;проверим на повторную загрузку
int 13h
cmp ax, 4321h
je finish ;просто завершаемся
push bx es
mov ax, 3513h ;узнаем адрес старого вектора
int 21h ; в es:bx
mov old13h, bx ;сохраняем
mov old13h+2, es
pop es bx

lea dx, New13h ;устанавливаем новый вектор 13h
mov ax, 2513h
int 21h

lea dx, loaded ;сообщение
mov ah, 9
int 21h

lea dx, init ;оставляем в памяти резидентом
int 27h ; до адреса init

finish:
lea dx, already ;сообщение
mov ah, 9
int 21h
mov ax, 4c00h ;обычный выход при повторной загрузке
int 21h

.data
loaded db 'Program loaded$'
already db 'Program already loaded$'

end

-----
Удачи!

Ответ отправил: Лысков Игорь Витальевич, Модератор
Ответ отправлен: 23.05.2010, 22:20
Номер ответа: 261597
Украина, Кировоград
Тел.: +380957525051
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru
Абонент Skype: igorlyskov

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261597 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.16 от 26.05.2010
    Обсудить выпуск
     
     Как вам этот выпуск ?  Дайте свой отзыв  или  Оцените   5    4    3    2    1,   можно письмом:  5    4    3    2    1
     
    Реклама Отказаться от рекламы
    Скачай журнал "Сам" Скачай журнал "Сам"
    Птичьи дворцы. Гараж с удобствами. Такие разные ширмы.

      Здоровая пища: миф или реальность? Здоровая пища: миф или реальность?
    Аэрогриль Flavorwave Turbo Oven - новое слово в кухонном досуге!

      Все дело в размере! Все дело в размере!
    Easy Curves - первый тренажер для женской груди!

     
     
    Реклама Отказаться от рекламы
    Гипермаркет по безопасности
    Подбери любую продукцию по безопасности по лучшей цене в России!<>shop.sec.ru

    Ведущий портал по безопасности
    Все, что Вы хотите знать о рынке безопасности, есть на Sec.ru.<>www.sec.ru

    Супермаркет ПО Softkey.ru
    Огромный выбор лицензионного софта. Моментальная оплата!<>www.softkey.ru

     
      Рассылки
    Продвижение сайта. Профессиональные советы экспертов
    Привлечение посетителей и покупателей из поисковых систем. Методики поисковой оптимизации и контекстной рекламы. Аудит сайтов и ответы экспертов на вопросы подписчиков. Материалы конференций и обучающих семинаров. Новости.

    Подписаться:   на сайте    по почте

     
      Группы
    «Фриланс»
    Вы привыкли работать, сидя в любимом кресле? Вам нравится самому быть себе начальником? А может быть, вы только собираетесь вступить в стройные ряды фрилансеров? В любом случае, эта группа для вас!
    «Бодибилдинг, Пауэрлифтинг! Группа посвящена полной информации по правильной и быстрой накачке мышц!»
    Группа посвящена полной информации по правильной и быстрой накачке мышц!!Упражнения для мышц написаны на простом человеческом языке без лишней информаци...
    «Интернет для начинающих пользователей»
    Группа начинающих пользователей Интернета. Советы, статьи, инструкции новичкам. Если вы недавно подключились к Интернету и у вас на счет него есть куча ...
     
    Подписан адрес: admin10383.deep@blogger.com
    Код этой рассылки: comp.prog.assembler
    Архив рассылки
    Отписаться:  На сайте  Почтой
    Поддержка подписчиков
    Убрать рекламу
    Другие рассылки этой тематики
    Другие рассылки этого автора
    Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

    Комментариев нет:

    Отправить комментарий