опубликован 15-05-2001 15:56 MSK
хе :)
я просто не знаю - как теперь программят на 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,'$'
;------------------------------------------
Вот такие пироги :)