Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET_CP_2014.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
421 Кб
Скачать
☆

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. Задано рядок символів. Сформувати два слова, які містять перші та останні літери слів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]