рефераты рефераты
Главная страница > Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану  
Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану

    jz outp             ; Якщо не дозволено - вийти.

    mov ah,00h

    mov dx,0

    int 17h             ; Печатать.

    call del2

outp:

    ret

ToPrn endp

PrnEnt proc

; Печатает ENTER

    test byte ptr ds:[flags_offset],mask Pf  ; Перевірити прапорець печаті.

    jz notp             ; Якщо не дозволено - вийти.

    mov ah,0

    mov dx,0

    mov al,0ah            ; Печатати CR.

    int 17h

    mov ah,0

    mov dx,0

    mov al,0dh            ; Печатать LF.

    int 17h

notp:

    ret

PrnEnt endp

ifswap proc

    push ax

    mov al,byte ptr ds:[y1-shift]  ; Порівняти координати Y1 и YY

    cmp al,byte ptr ds:[yy-shift]

    jg zq

    jl qw

    mov al,byte ptr ds:[x1-shift]  ; Порівняти координати X1 и XX

    cmp al,byte ptr ds:[xx-shift]

    jng qw

zq:                    ; Якщо треба змінити,

    mov al,byte ptr ds:[yy-shift]   ; змінюєм.

    mov byte ptr ds:[y1-shift],al

    mov al,byte ptr ds:[xx-shift]

    mov byte ptr ds:[x1-shift],al

    mov al,byte ptr ds:[wx-shift]

    mov byte ptr ds:[xx-shift],al

    mov al,byte ptr ds:[wy-shift]

    mov byte ptr ds:[yy-shift],al

qw:

    pop ax

    ret       ; Выход

ifswap endp

;******************* Кінець файлу TAKE&PRN.ASM ***********************

; Файл REMOVE.ASM

; Модуль основної програми

;*************************************************************

test_vector proc

;   Перевірити вектор преривання.

    mov ah,35h

    int 21h

    cmp bx,dx

    jne exit

    mov dx,es

    cmp cx,dx

exit:

    ret

test_vector endp

remove proc

    mov cx,cs

    mov di,test_vector-shift

    mov al,09h       ; Перевірити вектор преривання Int09h.

    mov dx,int_09h-shift

    call di

    jne not_remove

    mov al,2fh       ; Перевірити вектор преривання Int2fh.

    mov dx,int_2fh-shift

    call di

    jne not_remove

    mov al,28h       ; Перевірити вектор преривання Int28h.

    mov dx,int_28h-shift

    call di

    jne not_remove

    mov al,08h       ; Перевірити вектор преривання Int08h.

    mov dx,int_08h-shift

    call di

    je uninstall

not_remove:

    mov ax,notremove_mess-shift

    push ax

    push ax

    call mess

    ret

uninstall:

    mov ax,remove_mess-shift

    push ax

    xor ax,ax

    push ax

    call mess

    mov cx,resethandler-shift

    mov al,09h        ; Восстановити вектор преривання Int09h.

    mov di,int_09h_vect-shift

    call cx

    mov al,2fh        ; Восстановити вектор преривання Int2fh.

    mov di,int_2fh_vect-shift

    call cx

    mov al,28h        ; Восстановити вектор преривання Int28h.

    mov di,int_28h_vect-shift

    call cx

    mov al,08h        ; Восстановити вектор преривання Int08h.

    mov di,int_08h_vect-shift

    call cx

    cli

    push cs

    pop es

    mov ah,49h        ; Освободити займаєму пам`ять.

    int 21h

    ret

remove_mess   db ' has been',0,'REMOVED form memory.   ',0

notremove_mess db ' UNABLE to',0,'remove. Not on the top. ',0

remove endp

;********************* Кінець файлу REMOVE.ASM ***********************

; Файл MESSAGE.ASM

; Модуль основної програми.

;*************************************************************

xchgmess proc

    mov di,code_table-shift     ; Загрузити сміщення

    mov si,attribute_table-shift  ; таблиць кодів і

;                     атрибутів вікна повідомлення.

    mov cx,6

    mov dh,10

loop_1:      ; Цикл по строках.

    push cx

    mov cx,30

    mov dl,25

loop_2:      ; Цикл по стовбцях.

    push cx

    mov ah,2

    call callvideo

    mov ah,8

    call callvideo

    cmp dh,15

    jb lab_1

    cmp dl,27

    jb exch_noth

    jmp short exch_attr

lab_1:

    cmp dh,11

    jb lab_2

    cmp dl,52

    ja exch_attr

    jmp short exch_code

lab_2:

    cmp dl,52

    ja exch_noth

exch_code:

    xchg al,byte ptr [di]    ; Заменити код символа.

    inc di

exch_attr:

    xchg ah,byte ptr [si]    ; Заменити атрибут.

    inc si

exch_noth:

    mov bl,ah          ; Вивести символ.

    mov cx,1

    mov ah,9

    call callvideo

    inc dx

    pop cx

    loop loop_2

    inc dh

    pop cx

    loop loop_1

    mov dx,1900h         ; Убрати курсор.

    mov ah,02h

    call callvideo

    ret             ; Вийти з процедури.

xchgmess endp

mess proc

    push bp

    mov bp,sp

    push bx

    mov bh,byte ptr ds:[current_video_page-shift]

    mov bl,byte ptr ds:[attribute_table-shift]

    push bx           ; Вивести вікно повідомлення.

    call xchgmess

    pop bx

    mov dx,0b29h         ; Вивести текст повідомлення.

    mov si,word ptr [bp+6]

    call typestr

    mov dx,0c1bh

    call typestr

    push bx           ; Подати звуковий сигнал.

    mov cx,2

mess_loop:

    mov di,550

    mov bx,30

    call beep

    mov di,1100

    call beep

    loop mess_loop

    pop bx

wait_mess:

    mov ah,0           ; Ждати натиснення клавиши.

    int 16h

    call xchgmess        ; Восстановити екран.

    pop bx

    pop bp

    ret 4            ; Вийти з процедури.

mess endp

;         Таблиця атрибутів вікна повідомлення.

attribute_table db 29 dup(4eh),14 dup (206),13 dup (4eh)

        db 07h,07h

        db 28 dup (4eh)

        db 07h,07h

        db 4eh,26 dup (206),4eh

        db 07h,07h

        db 28 dup (4eh)

        db 30 dup (07h)

;         Образ атрибутів вікна повідомлення.

code_table   db '============================'

            db '!Screen Printer:      !'

            db '!             !'

            db '!     press any key... !'

            db '============================'

;****************** Кінець файлу MESSAGE.ASM *************************

; Файл TYPESTR.ASM

; Модуль основної програми.

;*************************************************************

typestr proc

typestr_loop:

    mov ah,2        ; Встановити курсор в нужну позицию.

    call callvideo

    lodsb

    or al,al        ; Якщо зустрився кінець строки,

    jz end_typestr     ; то вихід.

    mov cx,1

    mov ah,9

    call callvideo

    inc dx         ; Определити позицію для вивода

    jmp short typestr_loop ; следуючого символу.

end_typestr:

    push dx         ; Убрати курсор.

    mov dx,1900h

    mov ah,2

    call callvideo

    pop dx

    ret           ; Вийти з процедури.

typestr endp

;******************** Кінець файлу TYPESTR.ASM ************************

; Файл BEEP.ASM

; Модуль основної програми.

;*************************************************************

beep proc

;  Подає звуковой сигнал заданої частоти і тривання.

    push bx      ; Сохранити регістри.

    push cx

    push di

    mov di,1000

    mov al,0b6h    ; Записати у регістр режим таймеру.

    out 43h,al

    mov dx,14h     ; Делитель часу равен

    mov ax,4f38h    ; 1331000/частота.

    div di

    out 42h,al     ; Записати молодший байт лічильника таймера 2.

    mov al,ah

    out 42h,al     ; Записати молодший байт лічильника таймера 2.

    in al,61h     ; Считати поточну установку порта В

    push ax      ; й сохранити її.

    or al,3

    out 61h,al     ; Включити динамик.

wait_beep:

    mov cx,01fffh

speaker_on:

    loop speaker_on

    dec bx       ; Лічильник тривалісті ісчерпан ?

    jnz wait_beep   ; Ні. Продовжити звучання.

    pop ax       ; Да. Восстановити похідну установку

    out 61h,al     ; Порта В.

    pop di       ; Восстановити всі регистри.

    pop cx

    pop bx

    ret        ; Вийти з процедури.

beep endp

;********************* Кінець файлу BEEP.ASM *************************

; Файл TELETYPE.ASM

; Модуль основної програми.

;*************************************************************

teletype proc

    mov bh,0    ; Обрати нулеву відеосторінку.

    cld

type_next_char:

    lodsb      ; Загрузити наступний символ в AL.

    mov ah,0eh

    cmp al,0    ; Якщо кінець строки, то вихід.

    je end_teletype

    call callvideo ; Вивести символ.

    jmp short type_next_char

end_teletype:

    ret

teletype endp

;******************** Кінець файлу TELETYPE.ASM **********************


Страницы: 1, 2, 3, 4, 5

рефераты
Новости