{img1} |
системы резервного копирования |
|
Переключение экранов
с использованием двух буферов
----------------------------------------------------------------
_text SEGMENT WORD PUBLIC 'CODE'
- 4-16 -
ASSUME cs:_text, ds:_text, es:_text
VideoSEG DW 0b000h
DOSBuffer DW 25*80 DUP (0)
TSRBuffer DW 25*80 DUP (720h)
Switct PROC NEAR
cld ; флаг направления <== UP
lea di,DOSBuffer ; di <== смещение буфера
mov ax,cs
mov es,ax ; es:di <== буфер DOS
xor si,si ; si <== смещение видео
mov ds,VideoSEG ; ds:si <== память видео
mov cx,25*80 ; cx <== слова на отображении
rep movsw ; DOSBuffer <== память видео
mov ds,ax
lea si,TSRBuffer ; ds:si <== буфер TSR
mov es,VideoSEG ;
xor di,di ; es:di <== видео память
mov cx,25*80 ; cx <== слова на отображении
rep movsw ; память видео <== буфер TSR
ret
Switch ENDP
----------------------------------------------------------------
.Следующий листинг использует только один буфер. Использова-
ние отдельного буфера замедляет последовательность mov/xchg и
требует для изменения экрана при включенном дисплее приблизитель-
но 45 мс. |
kaspersky |
|
|
Такая производительность вполне приемлема. Заметим, что
выравнивание буфера по границе параграфа обходится в дополнитель-
ную команду add, но это изменение не влияет на производитель-
ность.
Листинг 4-10. |
операционная система windows |
|
{img3} |
система распознавания текста |
|
Переключение экрана
с использованием отдельного буфера
----------------------------------------------------------------
_text SEGMENT WORD PUBLIC 'CODE'
ASSUME cs:_text, ds:_text, es
VideoSEG DW 0b000h
TSRBuffer DW 25*80 DUP (720h)
Switch PROC NEAR
cld ; проверка, что мы подвинулись
lea si,TSRBuffer ; si <== смещение буфера TSR
xor di,di ; di <== смещение видеопамяти
mov bx,2 ; bx <== размер сдвига
mov es,VideoSEG ; ds:si <== видеопамять
mov cx,25*80 ; cx <== слова на экране
_nb mov ax,[si]; ax <== слово из буфера TSR
xchg ax,es:[di] ; видеопамять <== буфер TSR
; ax <== слово из видеопамяти
mov [si],ax; буфер TSR <== видеопамять
аdd si,bx
add di,bx
loop _nd
ret
- 4-17 -
Switch ENDP
----------------------------------------------------------------
Работа в среде DOS
Многие команды Вашего TSR требуют для выполнения взаимо-
действия с DOS. DOS в своей основе является однопользовательской/
/однопрограммной операционной системой.
Хотя Майкрософт добавила некоторое программное обеспечение
для поддержки TSR, многие из них не документированы и трудны для
использования. |
GPS-навигатор |
|