Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841

Сделать программу резидентной

11.04.2013, 11:23. Показов 805. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Кто может помочь в програмкой? В общем не пойму что нужно прописать вместо точек в коде:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
dosseg
.model small
.stack 1000h
.data
;Определения
alt_q equ 1000h
      org 100h
myproc proc 
      jmp init
;Поля данных для резидентной секции программы
        old_09h dd 0
        mesr db '<Alt>/Q - vektor vosstanovlen!!!',lf,cr
        mesrlen equ $-mesr
        boarders: db 0,0,179,180,191,192,193,194,195,196,197,217,218
;Резидентная секция программы
new_09h: cli
         pushf 
         call CS:old_09h
         push AX
         push BX
         push CX
         push DX
         push 0S
         push ES
         mov AX,CS
         mov DS,AX
         mov AX,40h 
         mov ES,AX
;Начнём обработку символа, скопировав его из кольцевого буфера ввода в АХ, но не изменяя его при этом из буфера
         mov BX,ES:1Ah
         mov AX,ES:[BX]
         cmp AX,alt_q
         jb altq
         cmp AH,2
         jb home
         cmp AH,12
         ja home
;Скен-код в заданных пределах. Но нажата ли клавиша <Caps Lock>?
         test byte ptr ES:17h,40h
         jz home
;Режим <Caps Lock> включён и нажата клавиша <1/!>....<-/_>
         push BX
         lea BX,boarders
         xchg AH,AL
         xlat 
         pop BX
         mov byte ptr ES:[BX],AL
;Вернёмся в первоначальную программу
home:    pop ES
         pop DS
         pop DX
         pop CX
         pop BX
         pop AX
         sti
         iret
altq:
;Завершаем работу обработчика. Выведем диагностическое 
;сообщение и восстановим вектор 09h
         mov AX,DS
         mov ES,AX
         mov AH,13h
         mov AL,1
         mov BX,0020h
         mov CX,mesrlen
         mov DH,16
         mov DL,22
         mov BP,offset mesr
         int 10h
;Восстановим вектор "вручную", чтобы не обращаться 
;к функциям DOS
         mov AX,0
         mov ES,AX
         mov AX,word ptr old_09h
         mov word ptr ES:24h,AX
         mov AX,word ptr old_09h+2
         mov word ptr ES:26h,AX
         jmp home
endres equ $-myproc
;Секция инийиализации
init:    mov AH,35h
         mov AL,09h
         int 21h
         mov word ptr old_09h,BX
         mov word ptr old_09h+2,ES
         mov AH,25h
         mov AL,09h
         mov DX,offset new_09h
         int 21h
;Выведем сообщение mes o загрузке обработчика
         Begin:
         mov ah,9
         mov dx,offset mes
         int 21h
         int 20h
         end Begin 
;Оставим программу резидентной в памяти
...
; Поля данных
mes      db 27,'[34;46m'
         db 'Obrabotchik 3agru}|{en & ostavlen rezidentnim'
         db 27,'[0m',cr,lf
         meslen equ $-mes
         myproc endp
Почитал на форумах темы про резидентные программы, но особо не стало понятно. Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2013, 11:23
Ответы с готовыми решениями:

Сделать приведенную программу резидентной (FASM)
Всем доброго времени суток! Нужно сделать программу резидентной. Помогите кто чем сможет. use16 ; генерация 16-битного кода org 100h ;...

Как сделать программу резидентной
Есть работающий код программы. Выводит сообщение на экран. Но необходимо во первых: чтобы после вывода сообщения программа восстанавливала...

Не могу сделать программу резидентной :(
Здравствуйте. Мучаюсь уже 2 дня... Никак не могу сделать программу резидентной. Мне нужно осуществить перехват int09h, которое анализирует...

2
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
11.04.2013, 17:12
А книги почитать не пробовал ? Обучно их авторы стараются изложить вопрос максимально понятно.

Рудаков П.И. Финогенов К.Г. Программирование на языке ассемблера IBM PC. Статья 47.
или что-нибудь вроде того
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
11.04.2013, 18:05  [ТС]
Ethereal, из его книги примеры и доделываю. Вот там я всю эту тему и прочёл и нифига не понятно..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2013, 18:05
Помогаю со студенческими работами здесь

Исходник резидентной проги
Подскажите, пожалуйста, где найти рабочий пример резидента. Гугль бестолковый. Мыло ничего не нашло.

Реализация резидентной программы...
Задача проста - на нажатие клавишы генерируется звуковой сигнал, но программа должна быть резидентной. Со вторым пунктом возникла одна...

Фрагмент резидентной программы
Здравствуйте, не могли бы вы помочь с заданием? Нужно написать фрагмент резидентной программы на языке Ассемблер MASM 86, сохраняющий в...

запуск резидентной программы
Не могу запустить резидентную программу. Исходник рабочий,озвучка нажатий клавишь, скомпилировал, создал exe файл, запустил с командной...

Выгрузка резидентной программы
помогите написать выгрузку программы(код представлен), обычные часы.. надо сделать чтоб или от клавиши или от повторного запуска файла она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru