Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Реализация алгоритмов работы со строками



1. ЗАДАНИЕ НА СРС.

Разработать процедуру текстового редактора, обеспечивающую при нажатии функциональной клавиши F2 центрирование строки в выведенном на экран тексте. Редактируемой строкой считать ту, в которой размещен курсор. Вывод на экран текста в формате 5 строк на 20 столбцов, установку курсора в произвольную позицию выведенного текста, ожидание нажатия заданной функциональной клавиши и обращение к процедуре редактирования строки выполнить в технологической части программы, имитирующей внешнюю среду для разрабатываемой процедуры. Позицию курсора в странице номер 0 экрана передать в процедуру через регистр DX (DH - строка курсора, DL - столбец курсора).

2. КРАТКОЕ ОПИСАНИЕ АЛГОРИТМА.

- текст для редактирования вводится с клавиатуры (а не

определяется заранее);

- вывод происходит не на видеостраницу с номером 0,а в свободную

видеостраницу;

- при нажатии данной клавиши производится центровка строки т.е.

подсчитывается количество пробелов которое необходимо для этого

добавить к строке слева исправна

3. ТЕКСТ ПРОГРАММЫ.

.8086

.MODEL TINY

CODE SEGMENT

ASSUME CS: CODE, DS: CODE,ES:CODE

ORG 100H

BEGIN:

JMP START

color equ 0fh

Mode db?

L_Page db?

X db 0

Y db 0

Start:

mov ah,0fh

int 10h

mov Mode,al

mov L_Page,bh

;Сохраняем экран

cld

mov cx,2000

mov ax,0b800h

mov ds,ax

mov dx,cs

mov es,dx

sub si,si

mov di,offset Screen

rep movsw

mov ds,dx

mov ax,83h

int 10h

;Устанавливаем 0 страницу

mov ax,0500h

int 10h

Main:

sub ah,ah

int 16h

or al,al

jz ex_key

cmp ah,1ch

je is_enter

cmp ah,01

jne goto_xy

jmp restore

goto_xy:

push ax

mov dx,word ptr x

sub bh,bh

mov ah,2

int 10h

out_char:

pop ax

mov ah,9

mov cx,1

mov bx,color

int 10h

Control_xy:

mov dx,word ptr x

inc dl

cmp dl,80

jne Skip1

sub dl,dl

l1: inc dh

cmp dh,25

jne Skip1

sub dh,dh

Skip1:

mov word ptr x,dx

sub bh,bh

mov ah,2

int 10h

jmp Main

is_enter:

mov dx,word ptr x

sub dl,dl

jmp l1

ex_key:

cmp ah,3ch

jne l2

mov dx,word ptr X

call Center

mov dx,word ptr X

jmp Skip1

l2:

cmp ah,48h

je is_up

cmp ah,50h

je is_down

cmp ah,4bh

je is_left

cmp ah,4dh

je control_xy

cmp ah,44h

je restore

jmp main

is_up:

mov dx,word ptr x

l4: dec dh

cmp dh,0ffh

jne l3

mov dh,24

l3: jmp Skip1

is_down:

mov dx,word ptr x

jmp l1

is_left:

mov dx,word ptr x

dec dl

cmp dl,0ffh

jne l3

mov dl,79

jmp l4

Restore:

sub ah,ah

mov al,Mode

int 10h

cld

mov cx,2000

mov ax,0b800h

mov es,ax

mov dx,cs

mov ds,dx

sub di,di

mov si,offset Screen

rep movsw

mov ah, 5h

mov al,L_page

int 10h

ret

Text1 db 80 dup(' ')

TEXT db 80 dup(?)

Center proc

mov ax,160

mul dh

mov dx,0b800h

mov bx,cs

mov ds,dx

mov es,bx

mov si,ax

mov di,offset text1

mov cx,80

cld

push cx

mov al,' '

rep stosb

pop cx

loop2:

lodsw

stosb

loop loop2

std

dec di

mov cx,80

mov dx,cx

mov ds,bx

mov al,' '

repe scasb

or cx,cx

jnz l10

l11: ret

l10: cld

inc cx

mov di,offset text

repe scasb

inc cx

sub dx,cx

or dx,dx

jz l11

mov si,di

dec si

mov di,offset text1

sar dx,1

add di,dx

rep movsb

;Выводим полученную строку

mov ax,1300h

mov bp,offset text1

mov cx,80

mov dh,byte ptr y

sub dl,dl

mov bx,color

int 10h

ret

Center endp

screen db?

CODE ENDS

END BEGIN

4. ХАРАКТЕРИСТИКИ ПРОГРАММЫ И ПОЛНОТЫ ЕЕ

ТЕСТИРОВАНИЯ.

Программа была протестирована для всех возможных вариантов

размещения строки на экране. Для всех вариантов были получены

правильные результаты. В целом, эффективность программы можно

оценить как максимальная.





Дата публикования: 2015-10-09; Прочитано: 312 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...