Главная » Все файлы » Просмотр файлов из архивов » Документы » Лекция по разработке TST (курсовая работа)

Лекция по разработке TST (курсовая работа), страница 3

2018-01-09СтудИзба

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

Документ из архива "Лекция по разработке TST (курсовая работа)", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "системное программирование" в общих файлах.

Онлайн просмотр документа "Лекция по разработке TST (курсовая работа)"

Текст 3 страницы из документа "Лекция по разработке TST (курсовая работа)"

jmp end_09h

key_6:

mov tone, 659 ;частота ноты ля

call dinamik

jmp end_09h

key_7:

mov tone, 587 ;частота ноты си

call dinamik

jmp end_09h

key_8:

mov tone, 523 ;частота ноты до 2 октавы

call dinamik

jmp end_09h

end_09h:

mov ah,00h ;функция удаления симвла из буфера, что бы

int 16h ;не выволить его на экран

end_9h: pop es

pop si

pop di

pop ax

iret

new_09h endp

melodia proc near ; написанная мелодия

mov ax,dlit

push ax

mov dlit,15000

mov tone, 1046

call dinamik

mov dlit,5000

mov tone, 988

call dinamik

mov dlit,10000

mov tone, 880

call dinamik

mov tone,1046

call dinamik

mov dlit,5000

mov tone, 880

call dinamik

call delay ;чтобы не залиговывать 2 ноты

mov tone, 880

call dinamik

mov tone, 988

call dinamik

mov tone, 1046

call dinamik

mov dlit,10000

mov tone, 988

call dinamik

mov tone, 1176

call dinamik

pop ax

mov dlit,ax

ret

melodia endp

vkl proc near

mov al, 0b6h ;порт 43- регистр упавления.С его помощью выбираем канал

;задаем режим работы и передачи значения в канал таймера

out 43h, al

in al, 61h ;инициализируем динамик

or al, 3

out 61h,al

ret

vkl endp

nota proc near ;звучание ноты на определенной частоте и определенной ;длительности

mov cx, dlit

musicup:

mov ax, tone

out 42h, al ;порт 42-регистр ввода-вывода.С его помощью

;опред нужную высоту тона

xchg al,ah

out 42h, al

call delay

loop musicup

ret

nota endp

nosound proc near ;выключение динамика

in al, 61h

and al, 0fch

out 61h, al

ret

nosound endp

dinamik proc near ;процедура звучания ноты(включение ;динамика,звук,выключение)

call vkl

call nota

call nosound

ret

dinamik endp

delay proc near ;процедура задержки звучания ноты или пауза

push cx

mov cx, 2

ext:

push cx

mov cx, 5000

iter:

loop iter

pop cx

loop ext

pop cx

ret

delay endp

new_2Fh proc ;новый обработчик прерывания 2fh (мультиплексное прерывание)

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

;мы его используем для идентификации нашей программы, те для

;защиты от повторной загрузки и для выгрузки программы

cmp ah,0C2h ; C2h - идентификатор программы

;c2h-одна из свободных функций этого прерывания, которую

;мы заняли

;00h-подфункция, использующаяся для проверки наличия

;резидентной программы в памяти

jne otherprogram

cmp al,00h ; check if installed subfunction

je isinstalled

cmp al,01h

je uninstall

otherprogram:

jmp cs:old_2Fh

isinstalled:

mov al,0FFh ; вернуть в al 0FFh - уже загружена

iret

uninstall:

push ds

push es

push dx

mov ax,2509h ; восстанавливаем старый обработчик 09h

lds dx,cs:old_09h

int 21h

mov ax,252Fh ; восстанавливаем старый обработчик 2Fh

lds dx,cs:old_2Fh

int 21h

mov es,cs:[2Ch] ; читаем адрес сегмета окружения из PSP

mov ah,49h ; освобождение памяти занимаемой сегментом

int 21h

push cs

pop es ; cs -> es

mov ah,49h ; освобождение памяти занимаемой сегментом

int 21h

pop dx

pop es

pop ds

iret

new_2Fh endp

;_________________________________________________________;

; КОНЕЦ РЕЗИДЕНТНОЙ ЧАСТИ ;

; НАЧАЛО СЕКЦИИ ИНИЦИАЛИЗАЦИИ ;

;_________________________________________________________;

init proc

mov cl, es:80h

xor ch, ch

cmp cx,0 ;если командная строка пуста

je install

mov si, 82h ;адрес начла параметров КС

mov bl, es:[si] ;проверяем, задан ли параметр помощи

cmp bl, '/'

jne install

mov bl, es:[si+1]

cmp bl,'?'

jne install

mov ah, 09h ;вывод справки

mov dx, offset help

int 21h

exit: mov ax,4C00h ;выход из программы

int 21h ; Exit to DOS

install: mov ax,0C200h ; проверка повторной загрузки резидента (00h)

int 2Fh

cmp al,0FFh ; резидент установлен (ДА-НЕТ)

jne load

mov cl, es:80h

xor ch, ch

cmp cx,0

je N

mov ah, 09h ;сообщение о том,для выгрузки надо запустить

;программу без параметров

mov dx, offset zagruzka

int 21h

jmp exit

N: mov ax,0C201h ; выгрузка (01h)

int 2Fh

mov dx,offset msg_unload

mov ax,0900h ; вывод строки

int 21h

jmp exit

load:

mov ax,3509h ; сохранение старого обработчика 09h

int 21h

mov word ptr cs:old_09h, bx

mov word ptr cs:old_09h+2,es

mov ax,352Fh ; сохранение старого обработчика 2Fh

int 21h

mov word ptr cs:old_2Fh, bx

mov word ptr cs:old_2Fh+2,es

mov ax,2509h ; установка нового обработчика 09h

mov dx,offset new_09h

int 21h

mov ax,252Fh ; установка нового обработчика 2Fh

mov dx,offset new_2Fh

int 21h

mov ax,0900h ; вывод строки

mov dx,offset msg_load

int 21h

mov dx,(init-main+10Fh)/16 ; размер резидентной части в параграфах

mov ax,3100h ; Функция DOS : Terminate and State Resident

int 21h

init endp

; данные инициализирующей части

msg_load db 'Программа tsr.com загружена в память$' ;;загружена

msg_unload db 'Программа tsr.com успешно выгружена из памяти$'

;программа выгружена из памяти

help db 'Программа tsr.com написана ст. ИУ5-52 Ефремовой Ю.Н.',0dh, 0ah,'Загрузка резидента- запуск tsr.com',0dh,0ah, 'Выгрузка резидента- повторный запуск tsr.com без параметров',0dh,0ah,0dh,0ah,'Для прослушивания мелодии необходимо нажать F1',0dh,0ah,'Музыкальные ноты клавиши:',0dh,0ah,'1-до',0dh,0ah,'2-ре',0dh,0ah,'3-ми',0dh,0ah,'4-фа',0dh,0ah,'5-соль',0dh,0ah,'6-ля',0dh,0ah,'7-си',0dh,0ah,'8-до 2ой октавы',0dh,0ah,'$';справка по работе с программой

zagruzka db 'Программа tsr.com уже находится в памяти$';Программа уже находится в памяти

code ends

end main

***********************************************

Работа с экраном:

text segment 'code'

assume CS:text,DS:text

org 100h

begin:

jmp Install

; ---------- РЕЗИДЕНТ --------------

alt_1 equ 52h

ctrl equ 04h

ctrl_u equ 16h

;----------------------------

; Здеся данные для резидента

;----------------------------

oldhandler2d dd 0

oldhandler09 dd 0

codepage db 0

Unloadmes db 'Capture is unloaded'

filename db 'display.scr',0

filehandler dw 0 ; дескриптор

fbuffer db 2050 DUP (?) ; буфер для образа экрана

;---------------------------------------

; Cоответтвенно конец данных для онного

;--------------------------------------

;-----------------------------------------

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

;новый -----------------------------

my2dhandler proc

cmp AH,0Ch

jne system

cmp AL,00h

jne system

mov AL,0ffh

system:

pushf

call CS:Oldhandler2d

iret

my2dhandler endp

;-----------------------------------------

;-----------------------------------------

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

;новый -----------------------------

newkeybhandler proc

in AL,60h

cmp AL,alt_1

jne ifctrlu

mov codepage,0

call savescreen

jmp X3

ifctrlu:cmp AL,ctrl_u

jne X3

push es

push 0

pop es

test byte ptr es:[417h],ctrl ;логическое И над операндами

jz X2 ;ctrl не был нажат

call printunload

in AL,61h

or Al,80h

out 61h,AL

and Al,07Fh

out 61h,AL

mov AL,20h

out 20h,AL

pop es

mov ax,2509H

lds dx,cs:oldhandler09

int 21H

mov ax,252dH

lds dx,cs:oldhandler2d

int 21H

mov es,cs:[2cH] ; освобождение сегмента

mov ah,49H ; окружения

int 21H

push cs ; настройка ES на DS

pop es

mov ah,49H ; освобождение памяти от сегмента комманд

int 21H

iret

X2: pop es

X3:

pushf

call CS:Oldhandler09

in AL,61h

or Al,80h

out 61h,AL

and Al,07Fh

out 61h,AL

mov AL,20h

out 20h,AL

iret

newkeybhandler endp

;-------------------------------------------------------------

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

;-------------Процедура сохранения экрана

;----------в фаел display.scr

savescreen proc

push ax

push bx

push cx

push dx

push si

push di

push ds

push es

mov ax,0b800H ; Определяем кодовую страницу

mov dx,0

mov dl,Codepage

mul dx

add ax,0b800H

mov ds,ax

xor si,si ; настройка DS:SI на видеопамять

push cs

pop es ; настройка ES:DI на буфер

mov di,offset fbuffer

cld

;-----------Читаем ЭКРАН *-------------

mov cx,25 ; цикл по строкам

outer: push cx

mov cx,80

inner: lodsb ; чтение в al символа из видеопамяти

inc si ; пропуск байта атрибута

stosb ; сохранение символа в буфере

loop inner ; конец цикла по столбцам

mov al,0dh

stosb

mov al,0ah

stosb

pop cx

loop outer ; конец цикла по строкам

mov ah,51H ; получение PSP текущей программы в BX

int 21H

push bx

mov ah,50H ; установка PSP нашей программы

mov bx,cs

int 21H

;--------Открываем файл файл -------

push cs

pop ds

mov ah,3ch

mov dx,offset cs:filename

xor cx,cx ; атрибут файла

int 21h

mov filehandler,ax

;--------Записываем в файл из буфера -------

mov ah,40h

mov bx,filehandler

mov dx,offset cs:fbuffer ; смещение буфера

mov cx,2050 ; число байт

int 21h

;--------Закрываем файл -------

mov ah,3eh

mov bx,filehandler

int 21h

pop bx

mov ah,50H ; установка PSP текущей программы

int 21H

pop es

pop ds

pop di

pop si

pop dx

pop cx

pop bx

pop ax

ret

savescreen endp

;-------------------------------------------------

printunload proc

mov AX,0b800h

mov ES,AX

mov AH,1Eh

xor si,si

mov AL,'-'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'U'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'n'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'l'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'o'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'a'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'d'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'e'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'d'

mov byte ptr ES:0000[si],AL

inc si

inc si

mov AL,'-'

mov byte ptr ES:0000[si],AL

inc si

inc si

ret

printunload endp

;-----------------------------------------

ressize=$-begin

; ---------- INSTALLiation --------------

Install:

mov BL,ES:[80h] ; Длинна строки параметров ; Looking

cmp bl,0 ; for

je NoParam ; Command

mov BL,ES:[82h] ; line's

cmp BL,'/' ; key

jne NotRkey ; If '/?'

mov BL,ES:[83h] ;

cmp BL,'?' ; then help, else

jne NotRkey ; message about

; key's.

;

mov ah,09h ;

lea dx,help ;

int 21h ;

jmp noInst ;

;

NotRkey: ;

mov ah,09h ;

lea dx,Unknownkey ;

int 21h ;

jmp noInst ;

NoParam:

mov AX,0C00h

int 2dh

cmp AL,0ffh

je reinsttry

mov AX,352Dh

int 21h

mov word ptr oldhandler2d,BX

mov word ptr oldhandler2d+2,ES

mov AX,252Dh

mov DX,offset my2dhandler

int 21h

mov AX,3509h

int 21h

mov word ptr oldhandler09,BX

mov word ptr oldhandler09+2,ES

mov AX,2509h

mov DX,offset newkeybhandler

int 21h

mov AH,09h

lea DX,Installed

int 21h

mov AX,3100h

mov DX,(ressize+10FH)/16

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