Listing (КП - вывод текста на экран), страница 2

2017-12-28СтудИзба

Описание файла

Файл "Listing" внутри архива находится в следующих папках: КП - вывод текста на экран, STSR. Текстовый-файл из архива "КП - вывод текста на экран", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.

Просмотр 2 страницы текстового-файла онлайн

int09h_handler endp

; Конец обработчика прерывания клавиатуры

; переменные, использованные в обработчике

scr_buf db LINES_NUM*CHARS_NUM*2 dup(?)

header db 'Вывод строк', 0

help db 'Введите номер строки (1, 2, или 3)', 0

msg0 db 'Строка не выбрана', 0

msg1 db 'This is a line number one', 0

msg2 db 'This is a line number two', 0

msg3 db 'This is a line number three', 0

msg_xt db 'Чтобы продолжить, нажмите Escape', 0

; Обработчик мультиплексорного прерывания. Программа использует AMIS-сигнатуру

; для совместимости с другими программами

; поддерживает функции AMIS 3.6 00h, 02h, 03h, 04h и 05h

hw_reset2D: retf

int2Dh_handler proc far

jmp short act2Dh_handler ; пропустить ISP

old_int2Dh dd ?

dw 424Bh

db 00h

jmp short hw_reset2D

db 7 dup(0)

act2Dh_handler:

db 80h, 0FCh ; начало команды cmp ah, число

mux_id db ? ; идентификатор программы

je its_us ; если вызывают с чужим AH - это не н

с

jmp dword ptr cs:old_int2Dh ; вызов старого обработчика

its_us: ; вызвали все-таки нас

cmp al, 06h ; функции AMIS выше 06h не поддерживаются

jae int2D_no ;

cbw ; занести в AX номер функции AMIS

mov di, ax

shl di, 1 ; умножить его на 2, т. к. jumptable - т

блица слов

jmp word ptr cs:jumptable[di] ; вызов обработчика

функции

;jumptable : таблица адресов обрабатываемых функций AMIS

jumptable dw offset int2D_00, offset int2d_no

dw offset int2D_02, offset int2d_03

dw offset int2D_04, offset int2d_05

int2D_00: ; функция 00 - запрос сигнатуры AMIS

mov al, 0FFh

mov cx, 0100h

push cs

pop dx

mov di, offset amis_sign ; DX:DI - адрес AMIS сигнатуры

iret

int2D_no: ; функция не поддерживается

mov al, 00h

iret

unload_failed: ; сюда передается управление, если

; векторы прерываний были заняты после нашей прогр

ммы

mov al, 01h

iret

int2D_02: ; функция 02 - выгрузка резидента

push 0

pop ds ; сегментный арес таблицы векторов прерываний

ДОС

mov ax, cs ; наш сегмент кода

; проверим, все ли перехваченные прерывания по прежнему указывают на нас

cmp ax, word ptr ds:[09h*4+2] ; проверка для прерывания

клавиатуры

jne unload_failed

cmp ax, word ptr ds:[2Dh*4+2] ; проверка для

мультиплексорного прерывания

jne unload_failed

; восстановим старые обработчики прерываний

mov ax, 2509h

lds dx, dword ptr cs:old_int09h

int 21h

mov ax, 252Dh

lds dx, dword ptr cs:old_int2Dh

int 21h

push cs

pop ds

mov ah, 09h

mov dx, offset cs:unloaded_ok

int 21h

; выгрузка резидента

mov es,cs:[2Ch]

mov ah,49h

int 21h

push cs

pop es

mov ah,49h

int 21h

iret

unloaded_ok db 'Программа успешно выгружена из памяти', 13, 10, '$'

cant_unl db 'Ошибка: Другая программа перехватила прерывания', 13, 10,

'$'

int2D_03: ; функция AMIS 03 - запрос на активацию программы

cmp byte ptr we_are_active, 0 ; мы и так активны?

je already_popup

call save_scr

push cs

pop ds

call show_scr

mov byte ptr we_are_active, 1 ; активировать программу

already_popup: ; программа уже активна

mov al, 03h

iret

int2D_04:; функция AMIS 04 - получить список перехваченных прерываний

mov dx, cs

mov bx, offset amis_hooklist

iret

int2D_05: ; функция AMIS 05 - получить список "горячих" клавиш

mov al, 0FFh

mov dx, cs

mov bx, offset amis_hotkeys

iret

int2Dh_handler endp

; Конец обработчика мультиплексорного прерывания

; AMIS - сигнатура для резидентных программ

amis_sign db "LORD...." ; имя автора

db "STSR...." ; имя программы

db "Вывод строки по запросу пользователя", 0

; AMIS - список перехваченных прерываний

amis_hooklist db 09h

dw offset int09h_handler

db 2Dh

dw offset int2Dh_handler

; AMIS - список горячих клавиш

amis_hotkeys db 01h ; проверяются после вызова стандартного обработчика

db 1 ; используем одну клавишу

db 16h ; скэн-код клавиши [u]

dw 04h ; вызывается по Ctrl

dw 0 ; запрещенные флаги

db 1 ; клавиша не остается в буфере клави

туры

; резидентная часть завершена

; процедура инициализации резидента

init proc near

jmp short init_entry_pnt ; прыжок на точку входа

exit_with_msg: ; выйти, написав сообщение

call show_msg

ret

already_loaded: ; резидент уже загружен

cmp byte ptr unloading, 1 ; пользователь потребовал выгрузки?

je do_unload ; да, выгрузить

mov dx, offset already_msg ; вывод сообщения о том, что резидент в п

мяти

jmp short exit_with_msg

no_more_mux: ; если свободный идентификатор MUX не найден

mov dx, offset no_more_mux_msg

jmp short exit_with_msg

cant_unload1: ; если нельзя выгрузить программу

mov dx, offset cant_unload1_msg

jmp short exit_with_msg

do_unload: ; выгрузить резидент, в AH - идентификатор программы - 1

inc ah

mov al, 02h ; вызвать функцию AMIS 02 - выгрузка резидента

; mov dx, cs

; mov bx, offset exit_pnt

cli

int 2Dh

sti

mov ax, 4C00h

int 21h

; push cs

; pop ds

; mov dx, offset cant_unload2_msg ; вывести сообщение

; jmp short exit_with_msg

exit_pnt: ; точка выхода

push cs

pop ds

mov dx, offset unloaded_msg

push 0

jmp short exit_with_msg

init_entry_pnt: ; точка входа в програму

cld

; чтение параметров командной строки

call read_cmd

cmp byte ptr cs:[di], '/'

jne not_unload

inc di

cmp byte ptr cs:[di], 'u'

jne check_next

; если программа запущена с ключом "/u", выгрузить

mov byte ptr unloading, 1

jmp not_unload

check_next:

cmp byte ptr cs:[di], '?'

jne not_unload

; программа вызвана с ключом '/?'

mov dx, offset helpmsg

call show_msg

jmp start_scan

not_unload: ; вывести сообщение о правилах использования программы

mov dx, offset usage

call show_msg

start_scan:

mov ah, -1 ; сканируем свободные ID'ы от 0 до FFh

more_mux:

xor al, al ; обнуляем AL - функция AMIS проверки наличия резидента

; вызов функции AMIS 00 - проверка наличия резидента

int 2Dh

cmp al, 00h ; идентификатор свободен?

jne not_free ; нет - сделать прыжок

mov byte ptr mux_id, ah ; да - вписать его в код обработчика

jmp short next_mux

not_free: ; идентификатор занят

mov es, dx

mov si, offset amis_sign

mov cx, 16 ; сравнить первые 16 байт

repe cmpsb

jcxz already_loaded ; если не совпадают -

; перейти к следующему идентификатору

next_mux:

dec ah

jnz more_mux

free_mux_found:

cmp byte ptr unloading, 1 ; нас вызвали для выгрузки?

je cant_unload1 ; выгрузка невозможна

cmp byte ptr mux_id, 0

je jp_nomux ; идентификаторы кончились

jmp next_lab

jp_nomux:

jmp no_more_mux

;

next_lab:

mov ah, 34h

int 21h

dec bx

mov word ptr in_dos_addr, bx

mov word ptr in_dos_addr+2, es

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее