Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Інструкція LODS




Строкові інструкції для переміщення даних

Рядкові інструкції

ТЕОРІЯ

Рядкові команди МП і8086

ЛАБОРАТОРНА РОБОТА № 4

КОНТРОЛЬНІ ПИТАННЯ

Загальна характеристика арифметичних команд.

Команди складання та віднімання.

Відмінності в роботі команд ADD та ADC, SUB та SBB.

Нарощування та зменшення на 1 (INC та DEC).

Команди ділення та множення (зі знаком та без).

Відмінності при роботі усіх арифметичних команд з 8-бітними, 16-бітним та 32-бітними операндами.

Логічні операції AND, OR, XOR.

Команди SHL, SHR, RAR та їх функціонування.

Команди ROR, ROL, RCR, RCL та їх функціонування.

Різниця між командами SHL, SHR, SAR, SAL та ROR, ROL, RCR, RCL.

Команда JMP та типи переходів

Інструкція CMP та її застосування.

Команди умовного переходу.

Інструкції циклів: LOOP, LOOPNE, LOOPE, JCXZ.

Алгоритм ділення без залишку.

 


 

МЕТА РОБОТИ: Вивчити набір рядкових команд МП і8086.

Тепер ми підійшли до розгляду найбільш потужних та незвичайних інструкцій процесора 8086 – інструкцій для роботи з рядками. Рядкові інструкції відрізняються від інших інструкцій процесора 8086. Вони можуть (у однієї інструкції) звертатися до пам’яті та збільшувати чи зменшувати регістр-показчик. Одна рядкова інструкція може звертатися до пам’яті 130000 разів. Як ясно з їх назви, рядкові інструкції особливо корисні при роботі з текстовими рядками. Їх можна також використовувати при роботі з масивами, буферами даних та будь-якими типами рядків байт чи слів. Рядковими інструкціями слід користуватися, там де тільки це можливо, оскільки вони, як правило, коротші та працюють скоріше, ніж еквівалентна їм комбінація звичайних інструкцій процесора 8086, таких, як MOV, INC та LOOP.

Ми роздивимось дві різні по функціональному призначенню групи рядкових інструкцій: рядкові інструкції для переміщення даних (LODS, STOS та MOVS) та строкові інструкції, які використовуються для пошуку та порівняння даних (SCAS та CMPS).

Строкові інструкції переміщення даних в цілому аналогічні інструкції MOV, але можуть виконувати більше функцій, ніж інструкції MOV та працюють швидше. Ми роздивимось спочатку інструкцію LODS. Зауважимо, що у всіх рядкових інструкціях флаг вказівки напрямку задає напрямок, в якому змінюються регістри-показчики.

Інструкція LODS, яка завантажує файл чи слово з пам’яті у акумулятор (накопичувач), підрозділяється на дві інструкції – LODSB та LODSW. LODSB завантажує байт, який адресується за допомогою пари регістрів DS:SI, у регістр AL та зменшує чи збільшує регістр SI (у залежності від стану флага напрямку). Якщо флаг напрямку встановлений у 0 (встановлений за допомогою інструкції CLD), то регістр SI збільшується, а якщо флаг напрямку дорівнює 1 (встановлений за допомогою інструкції STD), то регістр SI зменшується. І це вірно не тільки для інструкцій LODSB, флаг напрямку керує напрямком, у якому змінюються усі регістри-показники рядкових інструкцій.

Наприклад, у наступному фрагменту програми:

 

cld

mov si,0

lodsb

 

інструкція LODSB завантажує регістр AL змістом байта зі зміщенням 0 у сегменті даних та збільшує значення регістру SI на 1. Це еквівалентно виконанню наступних інструкцій:

 

mov si,0

mov al,[si]

inc si

 

однак інструкція LODSB працює суттєво швидше (та займає на два байта мнеш), ніж інструкції:

 

mov al,[si]

inc si

 

Інструкція LODSW аналогічна інструкції LODSB. Вона зберігає у регістрі AX слово, яке адресується парою регістрів DS:SI, а значення регістра SI зменшується чи збільшується на 2, а не 1. Наприклад, інструкції:

 

std

mov si,0

lodsw

 

завантажують слово зі зміщенням 10 у сегменті даних у регістр RU, а потім значення SI зменшується на 2.




Поделиться с друзьями:


Дата добавления: 2015-04-25; Просмотров: 396; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.