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




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

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

    test byte ptr ds:[flags_offset],mask Sf

    jz begin_remove

    call start

    jmp short restore_cursor

begin_remove:

    call remove

restore_cursor:

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

    mov dx,word ptr ds:[cursor_loc-shift]  ; Восстановити

    mov ah,2             ; положення курсору.

    call callvideo

end_prepare:

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

    mov di,int_23h_vect-shift

    call resethandler

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

    mov di,int_24h_vect-shift

    call resethandler

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

    pop ds

    pop bp

    pop si

    pop di

    pop dx

    pop cx

    pop bx

    pop ax

    cli        ; Переключитись на стек прерваної програми.

    mov ss,word ptr cs:[stack_seg-shift]

    mov sp,word ptr cs:[stack_offset-shift]

    ret

prepare endp

stack_offset dw ?

stack_seg dw ?

cursor_loc dw ?

current_video_page db ?

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

; Файл MAIN.ASM

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

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

start proc

    mov bp,sp        ; Зарезервирувати місто

    sub sp,13        ; в пам`яти для змінних.

    mov byte ptr ds:[flag-shift],0    ; Обнулить всі прапорці.

    mov byte ptr ds:[fl2-shift],0

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

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

rd:

    call kurpos       ; Встановити курсор.

    call delay       ; Визвать затримку.

    in al,60h        ; Взяти символ.

    cmp al,14        ; BackSpace ?

    jne nn         ; Якщо ні - далі.

    or byte ptr ds:[flags_offset],mask Pf    ; Іначе дозволити печать,

    mov ah,01h              ; ініціализувати 0 порт,

    mov dx,0

    int 17h

    call unlabel             ; розпечатать

    jmp hi                ; й вийти.

nn:

    cmp al,28        ; ENTER ?

    jne n0         ; Якщо ні - далі.

    call here

n0:

    cmp al,72        ; UP ?

    jne n1         ; Якщо ні - далі.

    cmp byte ptr ds:[yy-shift],0     ; Перевірити позицію курсора.

    jne n00

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

    jmp n00

rd1:

    call keybuf

    jmp rd

n00:

    dec byte ptr ds:[yy-shift]      ; Уменьшить Y на 1.

    call kurpos              ; Встановити курсор.

n1:

    cmp al,80        ; DOWN ?

    jne n2         ; Якщо ні - далі.

    cmp byte ptr ds:[yy-shift],25     ; Перевірити позицію курсору.

    jne n11

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

n11:

    inc byte ptr ds:[yy-shift]      ; Увеличити Y на 1.

    call kurpos              ; Встановити курсор.

n2:

    cmp al,75        ; LEFT ?

    jne n3         ; Якщо ні - далі.

    cmp byte ptr ds:[xx-shift],0     ; Преревірити позицію курсору.

    jne n22

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

    dec byte ptr ds:[yy-shift]

n22:

    dec byte ptr ds:[xx-shift]      ; Уменьшить X на 1.

    call kurpos              ; Встановити курсор.

n3:

    cmp al,77        ; RIGHT ?

    jne n4         ; Якщо ні - далі.

    cmp byte ptr ds:[xx-shift],80     ; Перевірити позицію курсору.

    jne n33

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

    inc byte ptr ds:[yy-shift]

n33:

    inc byte ptr ds:[xx-shift]      ; Увеличить X на 1.

    call kurpos              ; Встановити курсор.

n4:

    cmp al,1        ; ESC ?

    jne rd1         ; Якщо ні - далі.

    cmp byte ptr ds:[fl2-shift],0     ; Інакше восстановити колір

    je hi                 ; й вийти.

    call unlabel

;    Вихід.

hi:

    call keybuf       ; Очистити буфер клавіатури.

    mov sp,bp

    ret           ; Завершитись.

start endp

; Опис змінних:

scrr db ?

xx db ?

yy db ?

x1 db ?

y1 db ?

tx db ?

ty db ?

wx db 2

wy db 2

fl2 db 0

flag db 0

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

; Файл TAKE&PRN.ASM

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

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

keybuf proc

;   Очищає буфер клавіатури.

    push es

    push ax

    sub ax,ax

    mov es,ax

    mov al,es:[41ah]    ; Взяти кінець буферу

    mov es:[41ch],al    ; і записати в початок.

    pop ax

    pop es

    ret

keybuf endp

delay proc

;   Ініціірує затримку.

   push cx

   mov cx,60

l1:

   push cx

   mov cx,20000

l2:

   loop l2

   pop cx

   loop l1

   pop cx

   ret

delay endp

del2 proc

;   Ініціірує затримку.

    push cx

    mov cx,6000

a2:

    loop a2

    pop cx

    ret

del2 endp

here proc

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

    push ax

    cmp byte ptr ds:[flag-shift],0

    je nh

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

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

    jne lab

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

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

    je rr

lab:

    call labela    ; Виділити.

    jmp rr

nh:

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

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

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

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

rr:

    pop ax

    mov byte ptr ds:[flag-shift],1

    ret

here endp

kurpos proc

;  Встановлює курсор.

    push ax

    mov ah,02h

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

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

    mov bh,0

    call callvideo

    pop ax

    ret

kurpos endp

labela proc

; Змінює колір поміченого тексту.

    cmp byte ptr ds:[fl2-shift],0

    je f0

    call unlabel

    call ifswap

    jmp f1

f0:

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

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

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

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

    call ifswap

f1:

    mov byte ptr ds:[fl2-shift],1

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

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

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

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

hh:

    push cx

    push dx

    mov ah,02h   ; Змінити позицію курсору.

    mov dh,byte ptr ds:[ty-shift]

    mov dl,byte ptr ds:[tx-shift]

    mov bh,0

    call callvideo

    mov ah,08h   ; Считати символ/атрибут.

    mov bh,0

    call callvideo

    mov byte ptr ds:[scrr-shift],ah

    mov ah,09h   ; Записати символ з ізмененим атрибутом.

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

    add bl,15

    mov cx,1

    mov bh,0

    call callvideo

    pop dx

    pop cx

    mov dl,byte ptr ds:[tx-shift]

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

    je ok

as:

    inc byte ptr ds:[tx-shift]

    cmp byte ptr ds:[tx-shift],80

    jne hh

    mov byte ptr ds:[tx-shift],0

    inc byte ptr ds:[ty-shift]

    jmp hh

ok:

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

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

    je rro       ; Якщо кінець, то вийти,

    jmp as       ; інакше оброблювати наступний символ.

rro:

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

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

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

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

    ret

labela endp

unlabel proc

; Встановлює колір поміченого тексту.

    push ax

    push dx

    push cx

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

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

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

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

tl:

    mov ah,02h      ; Змінити позицію курсору.

    mov dh,byte ptr ds:[ty-shift]

    mov dl,byte ptr ds:[tx-shift]

    mov bh,0

    call callvideo

    mov ah,08h      ; Считати символ/атрибут.

    mov bh,0

    call callvideo

    mov byte ptr ds:[scrr-shift],ah

    call ToPrn

    mov ah,09h      ; Записати символ з востановленим атрибутом.

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

    sub bl,15

    mov cx,1

    mov bh,0

    call callvideo

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

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

    je don

nt:

    inc byte ptr ds:[tx-shift]

    cmp byte ptr ds:[tx-shift],80

    jne tl

    call PrnEnt

    mov byte ptr ds:[tx-shift],0

    inc byte ptr ds:[ty-shift]

    jmp tl

don:

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

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

    je ex       ; Якщо кінець, то вийти,

    jmp nt       ; інакше оброблювати наступний символ.

ex:

    pop ax

    pop cx

    pop dx

    ret

unlabel endp

ToPrn proc

;  Печатает символ.

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

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

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