Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асм.docx
Скачиваний:
16
Добавлен:
27.10.2018
Размер:
644.06 Кб
Скачать
  1. Команда scas.

Загальний вигляд команди scas dst; (acc) – (dst), модифікуються прапорці, змінюється значення регістра di/edi. Операнди не змінюються. Команда забезпечує віднімання елемента ланцюжка (b, w, d) від вмісту акумулятора (al/ax/eax).

З префіксом repe/repz команду можна використати для пошуку елемента ланцюжка зі значенням, відмінним від значення в акумуляторі. Префікс repne/repnz дозволяє знайти в ланцюжку елемент, який збігається зі значенням в акумуляторі.

Явні мнемоніки: scasb, scasw, scasd.

  1. Команда lods.

Загальний вигляд команди lods src; acc=(src), змінюється значення регістра si/esi. Елемент ланцюжка src (b, w, d) завантажується в акумулятор (al/ax/eax) і si/esi просувається на наступний елемент. Стани прапорців не змінюються. Як правило, команда з префіксом повторення не використовується, але її зручно використовувати в програмних циклах замість двох команд:

mov acc,src; inc si/esi (або dec si/esi)

Явні мнемоніки: lodsb, lodsw, lodsd.

  1. Команда stos.

Загальний вигляд команди stos dst; dst=(acc), змінюється значення регістра di/edi. Вміст акумулятора (al/ax/eax) запам’ятовується в елемент ланцюжка dst (b, w, d) і di/edi просувається на наступний елемент. Стани прапорців не змінюються. Зручно використовувати з префіксом повторення для ініціювання елементів ланцюжка сталим значенням, наприклад, для очищення текстового екрану в дисплейний буфер потрібно помістити код пробілу.

Явні мнемоніки: stosb, stows, stosd.

  1. Команди введення/виведення ланцюжків.

Появилися в мікропроцесорі 80286. Ці команди привілейовані. Команда ins має загальний вигляд ins dst,dx. Приймач dst визначається вмістом двох регістрів es і di/edi, значення яких потрібно визначити до виконання ланцюжкової команди введення. Роль джерела в даній команді виконує порт, номер (адреса) якого повинна знаходитися в регістрі dx. Команда вводить елемент з порта в елемент ланцюжка, змінює значення регістра-індекса di/edi в залежності від значення прапорця df, інкрементуючи або декрементуючи значення в регістрі di/edi на величину, яка визначається довжиною елемента ланцюжка (1 або 2 або 4). Природно, що прапорець df потрібно ініціювати.

Команду можна використовувати з префіксом повторення rep, лічильник в cx/ecx. Можна використовувати явні мнемоніки: insb, insw, insd.

Команда out має наступний загальний вигляд: out dx,src. Номер порта потрібно заздалегідь записати в регістр dx. Адреса ланцюжка, з якого відбуватиметься виведення в порт, визначається вмістом регістрів ds і si/esi. Команда виводить значення з елемента ланцюжка в порт, адреса якого в регістрі dx, змінює значення регістра-індекса si/esi в залежності від значення прапорця df, інкрементуючи або декрементуючи значення в регістрі si/esi на величину, яка визначається довжиною елемента ланцюжка (1 або 2 або 4). Природно, що прапорець df потрібно ініціювати.

Команду можна використовувати з префіксом повторення rep, лічильник в cx/ecx. Можна використовувати явні мнемоніки: outb, outw, outd.

Якщо швидкодії пристрою, пов’язаного з вхідним або вихідним портом, недостатньо для синхронної роботи з процесором, то швидкість даних можна зменшити за допомогою програмної затримки (циклу з певної кількості команд nop).

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