Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.254.122] |
|
Сообщ.
#1
,
|
|
|
Как правильно написать TSR-программу?
Желательно привести пример. |
Сообщ.
#2
,
|
|
|
под DOS ?
|
Сообщ.
#3
,
|
|
|
Нет, по Windows:)
|
Сообщ.
#4
,
|
|
|
хе
я просто не знаю - как теперь программят на ASMе, но под ДОСом я делал прогу, которая в Нортоне Коммандере постоянно в верхнем левом углу светила моё имя )) Работает она от таймера 1С, потому как по 8-му прерываню помоему некорректно вешать резидентные проги. вот она: ; ; ; jmp install int1c label byte ;точка входа INT 1CH push es ;сохpаняем pегистpы, котоpые будут изменены push di ; ---//--- push ax ; ---//--- mov ax,0b800h ;указываем на экpанную область памяти mov es,ax ; ---//--- mov ax,0e8ch ;будет напечатана буква М желтым цветом sub di,di ;смещение pавно 0 stosw ; AX --> ES:[DI] mov al,088h ; И stosw mov al,092h ; Т stosw mov al,09fh ; Я stosw pop ax ;восстанавливаем измененные pегистpы pop di ; ---//--- pop es ; ---//--- db 0eah ;пеpвый байт инстpукции JMP FAR old1c label dword ;метка двойного слова old1co dw 0 ;смещение old1cs dw 0 ;сегмент пpогpаммы BIOS INT 1CH install: mov ax,0351ch ;читаем адpес INT 1C int 21h ; ---//--- mov cs:old1co,bx ;сохpаняем адpес для дальнейшего использования mov cs:old1cs,es ; ---//--- mov ax,cs ;подготавливаем сегменты mov ds,ax ; ---//--- cli ;запpет пpеpываний lea dx,int1c ;адpес пpогpаммы mov ax,0251ch ;функция установки вектоpа int 21h ;устанавливаем вектоp sti ;pазpешение пpеpываний lea dx,h001 ;указываем на сообщение mov ah,09h ;функция вывода стpоки int 21h ;выводим сообщение lea dx,install ;оставляем обpаботчик пpеpывания pезедентным int 27h h001 db 'Пpогpамма M.COM осталась в памяти pезедентно',0ah,0dh,'$' ;------------------------------------------ Вот такие пироги |
Сообщ.
#5
,
|
|
|
Хотелось бы более объёмный пример..
|
Сообщ.
#6
,
|
|
|
хе
тоесть объяснять - чем тебе ентот пример не понравился, ты не собираешься ? ну вот просто дайте ему другую игрушку и всё тут ! )) |
Сообщ.
#7
,
|
|
|
Ghost: а в яндексе "TSR" набрать не пробовал ...
|
Сообщ.
#8
,
|
|
|
p>как по 8-му прерываню помоему некорректно вешать резидентные проги.
Это почему же? 1С вызывается из тогоже 08. Просто надо быть поакуратнеё, особенно если юзаешь контроллер прерываний. А так, по 08 мне лично больше нравится... Надёжнее. |
Сообщ.
#9
,
|
|
|
оно конечно может и надёжнее, НО!
я ведь привёл исходник маленькой проги, а если на восьмое прерывание повесить что-нить по серьёзнее ? этак ведь и часики могут начать отставать просто я имел ввиду, что если есть в системе аналог аппаратного прерывания, то лучше всё-таки его использовать, чтобы железо не тормозить. |
Сообщ.
#10
,
|
|
|
Хош в Винде? Пжлста! Проинсталь себе TASM и найди там экземпл (wap32 или что-то подобное, не помню точно). Ремируешь ф-цию вывода окна (ShowWindow) и всё! Прога запускается и висит себе тихонько в Task Meneger-е. Чего проще?
|
Сообщ.
#11
,
|
|
|
Народ а исходники Win95.Cih слабо глянуть, он же настоящий резидент под мастдай
|
Сообщ.
#12
,
|
|
|
Насчёт винчиха это ты загнул! Резидент... Он скорее драйвер, чем нормальный резидент. ProtectMode сплошной.
|