Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 469
от 08.06.2006, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 332, Экспертов: 18
В номере:Вопросов: 2, Ответов: 3


Вопрос № 44984: Здравствуйте эксперты! На основе вируса изложенного в книге Калашникова, решил написать свой, который бы мог перехватывать 10h прерывание и запрещал бы изменять видео страницу. Подскажите где ошибка. Заранее спасибо!...
Вопрос № 45011: Здравствуйте, эксперты Assemblera! У меня проблема с “методом прямого отображения в видеобуфер”. Вот код программы: CSEG segment org 100h _beg: mov ax,0B800h mov es,ax mov di,0 mov ah,31 mov...

Вопрос № 44.984
Здравствуйте эксперты! На основе вируса изложенного в книге Калашникова, решил написать свой, который бы мог перехватывать 10h прерывание и запрещал бы изменять видео страницу. Подскажите где ошибка. Заранее спасибо!

Приложение:

Отправлен: 02.06.2006, 14:38
Вопрос задал: Долгавин Алексей Сергеевич (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Долгавин Алексей Сергеевич!
Int_10 dd ? переставь выше.

вот так
Int_10_proc endp

Int_10 dd ?

Init:

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +78313145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214;88;90;76
----
Ответ отправлен: 02.06.2006, 14:46

Отвечает: Пан Павел Константинович
Здравствуйте, Долгавин Алексей Сергеевич!

Всё дело в Int_10 dd ?, дело в том, что адрес прерывания сохраняется в эту переменную, НО! память выделенная для неё находится НЕ! в резидентной части, в результате команды типа: jmp dword ptr cs:[Int_10], call dword ptr cs:[Int_10] обращаются к памяти в которой на момент обращения может находиться как кооректный адрес прерывания, так и мусор. Следовательно поступаем так:

pop dx
pop ds

iret

Int_10_proc endp

Int_10 dd ? ;Теперь Int_10 dd ? находится в резидентной части.
Init:

или так:

pop dx
pop ds

iret

Int_10 dd ? ;Так более красиво с точки зрения интуитивности.
Int_10_proc endp
Init:

С, Уважением MnEm0n!C.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: Студент)
Ответ отправлен: 03.06.2006, 03:30
Оценка за ответ: 5


Вопрос № 45.011
Здравствуйте, эксперты Assemblera!
У меня проблема с “методом прямого отображения в видеобуфер”.
Вот код программы:

CSEG segment
org 100h

_beg:
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end _beg

(пример из книги Калашникова О.А. (respect!) «Ассемблер? Это просто!»)
.com файл создаётся успешно. Но результатом его выполнения становится пустая строка (а не необходимая рожица). В чём дело?
У меня стоит: Athlon, Windows XP SP2.
Отправлен: 02.06.2006, 18:48
Вопрос задал: STeiv (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Пан Павел Константинович
Здравствуйте, STeiv!

Вот код и Описание:

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;==============================================
;INT 10h - Видео Сервис
;ah = 00h - Установть Видео-режим. Очистить Экран.
;al = 03h - Режим(тип:текст/Формат:80x25/......./Адрес:0b800h )
;==============================================
mov ax,0003h
int 10h
;==============================================
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

ret

CSEG ends
end Begin

С, Уважением MnEm0n!C.


---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: Студент)
Ответ отправлен: 03.06.2006, 01:15


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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное