- •Затверджено
- •Протокол №6 від 05.11.2013
- •Загальні положення
- •1 Програмування арифметичних дій та обробка одновимірних масивів
- •Мета роботи
- •1.2 Підготовка до роботи
- •1.3 Вказівки до виконання роботи
- •2 Бітові операції та обробка матриць
- •2.1 Мета роботи
- •2.2 Підготовка до роботи
- •2.3 Вказівки до виконання роботи
- •1.5 Самостійна робота
- •1.6 Контрольні запитання і завдання
- •2.4.1 Варіанти завдань до лабораторної роботи «бітові операції»
- •3 Команди обробки рядків. Макрозасоби мови асемблер
- •3.3 Вказівки до виконання роботи
- •3.4 Варіанти завдань до лабораторної роботи
- •Самостійна робота
- •Контрольні запитання і завдання
- •4 Організація міжмодульного інтерфейсу між програмами мовами високого рівня та мовою асемблер
- •4.1 Мета роботи
- •4.2 Підготовка до роботи
- •4.3 Вказівки до виконання роботи
- •4.4 Варіанти завдань до лабораторної роботи
- •4.5 Самостійна робота
- •4.6 Контрольні завдання
- •5.4. Задание на лабораторную работу
- •5.5. Контрольные вопросы и задания
- •6 Средства ввода информации
- •6.1. Цель работы
- •6.2. Указания по подготовке к выполнению лабораторной работы
- •6.3. Обзор темы работы
- •6.4. Задание на лабораторную работу
- •6.5. Контрольные вопросы и задания
- •7. Многооконный интерфейс
- •7.1. Цель работы
- •7.2. Указания по подготовке к выполнению лабораторной работы
- •7.3. Обзор темы работы
- •7.4. Задание на лабораторную работу
- •7.5. Контрольные вопросы и задания
- •Перелік посилань
3 Команди обробки рядків. Макрозасоби мови асемблер
3.1 Мета роботи
Вивчити особливості використання команд обробки рядків (ланцюжкові команди) в програмах на Асемблері.
3.2 Підготовка до роботи
Під час підготовки до роботи треба звернути увагу, що команди обробки рядків дозволяють обробляти блоки пам яті, які складаються з елементів розміром 1, 2 або 4 байти. Команди обробки виконують операції пересилки, порівняння, сканування, завантаження, зберігання, завантаження з порту та пересилка в порт. Треба мати на увазі: при роботі вважається, що рядок-джерело знаходиться у сегменті даних(DS) і адресується через SI, а рядок-приймач знаходиться у додатковому сегменті(ES) і адресується за допомогою регістра DI. Для виконання групи дій застосовуються префікси повторювання Rep, Repe, Repne, Repz, Repnz, для яких кількість повторювань задається в CX.
3.3 Вказівки до виконання роботи
Порядок виконання роботи відповідає підрозділу 1.3.
Приклад 1. Написати програму, яка читає з клавіатури 3 рядки.Знаходить в першому рядку другий та змінює другий на третій. Результат записуємо в четвертий рядок.
.model small
extrn crlf:near,msg:near
.stack 100h
.data
ss1 db 80
ls1 db ?
s1 db 80 dup(' ')
ss2 db 10
ls2 db ?
s2 db 10 dup(' ')
ss3 db 10
ls3 db ?
s3 db 10 dup(' ')
s4 db 80 dup(' '),'$'
com db 'Result > ',13,10,'$'
.code
beg:
mov ax, @data
mov ds,ax
mov es,ax
lea dx,ss1
call input
call crlf
lea dx,ss2
call input
call crlf
lea dx,ss3
call input
call crlf
cld
lea dx,s4
lea si,s1
lea di,s1
mov al,s2
xor ch,ch
mov cl,ls1
a1:
call pos
cmp bx,0
je a2
push bx cx
mov di,dx
mov cx,bx
sub cx,si
dec cx
rep movsb
push si
mov cl,ls3
lea si,s3
rep movsb
pop si
mov cl,ls2
add si,cx
inc si
mov dx,di
pop cx bx
mov di,bx
mov bl,ls2
add di,bx
sub cx,bx
inc cx
jmp a1
a2:
mov di,dx
lea bx,s1
add bl,ls1
sub bx,si
mov cx,bx
cmp cx,0
jle a4
rep movsb
a4:
lea dx, com
call msg
lea dx, s4
call msg
mov ah,4ch
int 21h
input proc
push ax
mov ah,0Ah
int 21h
pop ax
input endp
pos proc
push dx di si
mov bx,0
repne scasb
jne @a1
mov bx,di
lea si ,s2
inc si
push cx
mov cl,ls2
dec cx
repe cmpsb
je @a11
mov bx,0
@a11: pop cx
@a1:
pop si di dx
ret
pos endp
end beg
3.4 Варіанти завдань до лабораторної роботи
1. У рядку S підрахувати кількість слів та видалити усі символи ‘*’.
2. Скільки разів зустрічається задане слово у реченні?
3. Скопіювати рядок А до рядка В , видаляючи пропуски та коми.
4. Скопіювати рядок С до рядка V , вставляючи після кожної крапки два пропуски.
5. Вставити у реченні нове слово після першого слова.
6. Переписати рядок у зворотному порядку, добавляючи після кожного слова додатково один пропуск.
7. Вивести текст по N символів у рядку, вставляючи кому після кожної пари символів.
8. Замінити у тексті слово “привіт” словом “салют” та видалити усі цифри.
9. Задано рядок символів. Цифри переписати в один рядок. літери - в інший.
10. Підрахувати у реченні кількість слів, що починаються та закінчуються однією й тією ж літерою.
11. Видалити зі слів тексту закінчення 'ть'.
12. У реченні підрахувати кількість букв 'а' та 'с' до першої коми.
ІЗ. Задано рядок символів. Викреслити усі сімволи латинського алфавіту.
14. Задано рядок символів. Видалити цифри, змінити крапки на коми та підрахувати їх кількість.
15. Вивести на термінал цифри та їх номери у рядку символів*
16. Задано два рядки. Перевірити, чи знаходиться у першому рядку другий та вказати, починаючи з якого символу.
17. Задано масив символів, який містить літери кирилиці та латинські. Переписати інформацію у два масиви.
18. Задано рядок довільної довжини. Сформувати дві символьні константи, довжина яких дорівнює половині довжини цього рядка. Перша - символи з парними номерами, друга - з непарними.
19. Задано два рядки. Визначити рядок, що має найбільшу кількість літер української та російської мов.
20. Задано рядок, який описує арифметичний вираз над двома числами. Підрахувати результат операції.
21. Переписати рядок символів до іншого рядка, вибираючи тільки голосні звуки. Підрахувати їх кількість.
22. У рядку символів, що описує арифметичний вираз, перевірити правильність використання дужок.
23. Задано ім’я масиву та його розмір. Написати рядок символів, який реалізує оператор мови паскаль, що описує масив типу real.
24. У рядку підрахувати кількість приголосних букв, цифр та буквосполучень "ку" (окремо).
25. Задано рядок символів. Сформувати два слова, які містять перші та останні літери слів.
