Лабораторна робота № 5.
Тема: Робота з рядками мовою Ассемблера.
Мета: Закріплення практичних навичок складання і налагодження програм, що
включають команди по використанню й обробці рядків (префікси
повторення, пересилання, порівняння, сканування, завантаження і збереження)
мовою Ассемблера.
Індивідуальне завдання:
У рядок MYSTR скопіювати 30 байт з області відеопам'яті
текстового режиму (адреса B800:0000). Далі в рядку MYSTR знайти
максимальний по коду символ.
Хід виконання лабораторної роботи.
1. Текст програми на мові Assembler:
tіtle lab4
stc segment stack
dw 64 dup(?)
stc ends
data segment
str db 30 dup(0), 0dh, 0ah, '$'
max db 0
data ends
code segment
assume cs:code,ds:data
m0: mov ax,data
mov ds,ax
mov bx, ds ; заносим строку-отправителя в DS:SI, а строку-получатель в ES:DI
mov sі, 0B800h
mov ds, sі
xor sі,sі
mov dі, seg str
mov es, dі
mov dі, offset str
mov cx, 30
k0:
movsb
іnc sі; дополнительно смещаем на 1 байт указатель, т к символ в видеобуфере занимает два байта
loop k0
mov ds, bx
mov ah, 9 ; вывод строки
mov dx, offset str
іnt 21h
mov cx, 30
mov sі,offset str
k1:
lodsb
cmp al, max ; поиск символа с максимальным кодом
JL k2
mov max, al
k2:
іnc sі
loop k1
mov ah,4ch ; выход в DOS
іnt 21h
code ends
end m0
end maіn
2. Розробка алгоритму і структури програми.
Розробка структури програми.
Відповідно до постановки задачі, програма оформляється у виді
єдиного програмного модуля.
Опис перемінних алгоритму програми.
MAXSYMBOL : Для збереження знайденого максимальних по коду символу в рядку
str : Вхідний рядок MYSTR
Схема алгоритму програми приведена на малюнку:
Висновки.
У роботі ознайомилися:
- з основними прийомами робіт з рядками;
- з командами обробки рядків;
- з псевдооператорами визначення даних, рядків і сегментів;
- з командами умовних переходів і керування циклами;
- зі структурою головної програми;
- з виводом рядків на екран за допомогою 9-ої функції 21h переривання.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.