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

Команди обробки рядків даних

Ці команди використовують регістри SI та DI, в яких попередньо мають бути записані адреси операндів джерела та приймальника відповідно (згідно замовчень). Якщо прапорець DF встановлений в 1, то регістри SI та DI зменшуються (автодекремент), інакше збільшуються (автоінкремент) на 1 в разі обробки байт або на 2 (4) при обробці слів.

M OVS пересилка

LODS завантаження REP

STOS запис

CMPS порівняння REPE/REPZ,

SCAS сканування REPNE/REPNZ

Команди однобайтні, мають два варіанти синтаксису. У першому варіанті в кінці мнемоніки ставиться літера B або W в залежності від того, що обробляється – байти чи слова. Наприклад, команда MOVSW виконує пересилку слів, а команда LODSB – завантаження байтів. У другому варіанті використовуються фіктивні операнди. Наприклад, команда CMPS ES:BYTE PTR [SI], [DI] використовується для порівняння рядків даних та вказує на відміну замовчення щодо сегментного регістру даних. Команди обробки рядків даних використовуються головним чином з командою-префіксом повтору для їх циклічного виконання. Кількість повторів має бути попередньо підготовлена в регістрі СХ. При кожному повторі цих команд з префіксом регістр СХ зменшується на 1. Перші три команді з наведеного списку не змінюють ознак результату і використовують команду-префікс REP. Останні дві команди змінюють ознаки результату і використовують команди-префікси з рівнозначними мнемоніками REPE/REPZ або REPNE/REPNZ.

len equ 10

atab dw tab

aetab dw etab

tab db ‘Іванов ’,10

db ‘Смірнов ’,11

tab1 db ‘Сідоров ’,12

db ‘Петренко ’,13

db ‘Середенко’,15

etab equ $

elem db ‘Міроненко’,20

Вилучення елементу з таблиці

CLD

MOV DI, OFFSET TAB1

LEA SI, LEN [DI]

MOV CX, ETAB – TAB1 - len

REP MOVSB

SUB AETAB, LEN

Вставка елемента у таблицю

STD

MOV CX, ETAB – TAB1

MOV SI, AETAB

DEC SI

LEA DI, LEN [SI]

REP MOVSB ; РОЗСУНЕННЯ

CLD

MOV DI, OFFSET TAB1

MOV SI, OFFSET ELEM

MOV CX, LEN

REP MOVSB ; ВСТАВКА

Для перших трьох мнемонік може використовуватись команда-префікс повтору REP для двох останніх REPNE / REPNZ

Пропуск пробілів:

BUF DBQWERTY

EBUF EQU $

BUF_LEN EQU EBUF - BUF

.

.

MOV CХ, BUF_LEN

MOV DI, OFFSET BUF

MOV AL, ‘

REPE SCASB

Лінійний пошук

len equ 16

tab db ‘Іванов ’,’41-95-66’

db ‘Петров ’,’13-55-64’

db ‘Сідоров ’,’83-61-32’

db ‘Петренко ’,’37-21-42’

etab equ $

LKEY equ 8

elem db ‘Сідоров ’

; лінійний пошук

MOV AX, DS

MOV ES, AX

MOV SI, OFFSET TAB

MOV CX, 4

CLD

CYCL: PUSH SI

PUSH CX

MOV DI, OFFSET ELEM

MOV CX, LKEY

REPE CMPSB

POP CX

POP SI

JE LYES

ADD SI, LEN

LOOP CYCL

; ЕЛЕМЕНТ ВІДСУТНІЙ

LYES:

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