Читать курсовая по информатике, вычислительной технике, телекоммуникациям: "Програма Txtprintcom - резидентна програма для швидкого і зручного друкування виборчого тексту" Страница 10

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Загрузити сміщення

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_tabledb '============================'

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 **********************


Интересная статья: Быстрое написание курсовой работы