На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> TSR
    Как правильно написать TSR-программу?
    Желательно привести пример.
      под DOS ?
        Нет, по Windows:)
          хе :)
          я просто не знаю - как теперь программят на 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,'$'
          ;------------------------------------------
          Вот такие пироги :)
            Хотелось бы более объёмный пример..
              хе :)
              тоесть объяснять - чем тебе ентот пример не понравился, ты не собираешься ? :)
              ну вот просто дайте ему другую игрушку и всё тут ! :)))
                Ghost: а в яндексе "TSR" набрать не пробовал ...
                  p>как по 8-му прерываню помоему некорректно вешать резидентные проги.
                  Это почему же? 1С вызывается из тогоже 08. Просто надо быть поакуратнеё, особенно если юзаешь контроллер прерываний. А так, по 08 мне лично больше нравится... Надёжнее.
                    оно конечно может и надёжнее, НО!
                    я ведь привёл исходник маленькой проги, а если на восьмое прерывание повесить что-нить по серьёзнее ?
                    этак ведь и часики могут начать отставать :)
                    просто я имел ввиду, что если есть в системе аналог аппаратного прерывания, то лучше всё-таки его использовать, чтобы железо не тормозить.
                      Хош в Винде? Пжлста! Проинсталь себе TASM и найди там экземпл (wap32 или что-то подобное, не помню точно). Ремируешь ф-цию вывода окна (ShowWindow) и всё! Прога запускается и висит себе тихонько в Task Meneger-е. Чего проще?
                        Народ а исходники Win95.Cih слабо глянуть, он же настоящий резидент под мастдай :)
                          Насчёт винчиха это ты загнул! Резидент... Он скорее драйвер, чем нормальный резидент. ProtectMode сплошной.
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0285 ]   [ 15 queries used ]   [ Generated: 19.04.24, 11:41 GMT ]