- •Запитання на тести «Архітектура еом»
- •Дайте означення плата,
- •Дайте означення чіп,
- •Дайте означення контролер,
- •Дайте означення порт,
- •Дайте означення шина
- •Дайте означення материнські плати
- •Дайте означення Процесора
- •Дайте означення Відеоадаптера
- •Дайте означення контролерів (див 3 )
- •Дайте означення функції контролерів
- •Дайте означення bios.
- •Дайте означення жорсткого диску
- •Дайте означення Носія інформації
- •Для чого застосовують Мову програмування Асемблер
- •Перевага Асемблера
- •Недоліки Асемблера
- •Дайте означення даних в асемблері
- •Командa mov в мові Асемблер
- •Командa mvi в мові Асемблер
- •Наприклад :
- •Команди множення в мові Асемблер та використання прапорців для цієї команди
- •Команди ділення в мові Асемблер та використання прапорців для цієї команди
- •Синтаксис
- •Алгоритм
- •Состояние флагов после выполнения команды
- •Описание
- •Примеры
- •Проблеми переповнення та методи боротьби з ними в мові Асемблер(зошит)
- •Команди переходів в мові Асемблер
- •Побудова циклів в мові Асемблер
- •Команди зсувів в мові Асемблер
- •Циклічні зсуви в мові Асемблер
Командa mov в мові Асемблер
MOV операція пересилання. MOV<куди>,<звідки>
Приклад MOV ВХ,AL(вмістиме регістра AL записується в ВХ)
Командa mvi в мові Асемблер
Безпосереднє пересилання даних у регістр.
MVI R, D8; (R)<-(байт2); D8 - константа, довжина якої 1 байт; R - A,B,C,D,E,H,L. Вміст другого байта команди пересилається в РЗП R. Наприклад:
MVI A,25H; (А)<-(25Н).
Безпосереднє пересилання даних у пам'ять.
MVI M, D8 ; ((H)(L)<-(байт2).
Вміст другого байта пам'яті пересилається у комірку пам'яті, адреса
якої міститься в парі регістрів H i L.
Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L - 3ЕН.
MVI M, 40H ; ((083ЕН))<-(40Н).
Командa EXCHG в мові Асемблер
Перестановка даних ( команда xchg)
Команда xchg -міняє місцями значення двох регістрів або значення регістра з байтом або словом , яке зберігається в пам’ яті .
Командa PUSH в мові Асемблер
Занесення в стек вмісту регістра PUSH RP
Командa POP в мові Асемблер(зошит)
Командa LDA в мові Асемблер
Пряме завантаження акумулятора.
LDA ADDR; (А)<-((байтЗ)(байт2)); ADDR - 16-бітна адреса. Вміст комірки пам'яті, адреса якої вказана в другому і третьому байтах команди, пересилається в акумулятор.
Наприклад:
LDA 0543Н ; (А)<-((0543H)).
Командa LXI в мові Асемблер
Безпосереднє завантаження пари регістрів
LXI RP, D16; (rh)<-(байт3); (rl)<-(байт2)
RP: B - BC, D - DE, H - HL. SP : D16 - константа, довжина якої 2 байти. Третій байт команди пересилається в с тарший регістр пари регістрів RP (rh), другий - в молодший регістр (rl).
Наприклад :
LXI B,FFEDH ; (C)<-(FFH); (B)<-(EDH)
LXI SP.BCDH ; (SP)<-(0BCDH).
Командa ADD в мові Асемблер(зошит)
Командa ADD в мові Асемблер(44)
Команди додавання та віднімання в в мові Асемблер. Робота за прапорцями.
КОМАНДИ ДОДАВАННЯ.
Є 5 команд додавання
add i adc сумують два байта або слова .
inc (інкремент) - команда швидкого додавання 1 до регістра або значення в пам'яті.
aaa i daa виконують корекцію значень представлених
в двійковому -10 форматі
1) Щоб додати 8- бітове значення в ah з 8-бітового значення в ah можна записати:
add ah, bh ; ah ah+bh
Команда сумує два значення і записує результат в
задане місце, замінюючи початкове значення.
2) Команда adc працює акалогічно, але додає до результату прапор переносу cf:
adc ah, bh ; ah ah+bh+cf
Якщо cf=1 то результат одержуємо такий же, як при додаванні 1 до суми ah i bh. Прапор cf встановлюється в 1, якщо в попередньому додаванні виникло переповнення . Тому adc частіше виконується після add, яке додає багатобайтові значення, повідомляючи про переноси , які виникають при додаванні окремих байтів.
3) Для сумування в регістрі ах окремих байтів 16-бітового значення записуємо по адресу sum, можна використовувати слідуючі команди які подвоюють слово sum:
Пам'ятаєм, що в слові байти зберігаються в зворотньому порядку 1.к. загружає значення слова в ах;
2.к.задає один з другим молодші значущі байти, записуючи в al, і вип.переп. виснаження переносу встановлює cf в1; 3.к. додає цей можливий перенос до суми старших знач.байтів.4.к.записує кінцевий результат назад в пам'ять
Оскільки 8086 може безпосередьо працювати з словами ,то ці ж дії можна виконати двома командами:
В цих випадках оператори byte i word інформують асемблер про тип даних, які адресує[sum]. В деяких
випадках їх можна не використовувати, проте вони не зашкодять.
4) add i adc можуть додавати до регістра і значення в пам'яті безпосередні (літеральні) значення:
add bx,5 ;bx bx+5
5) Щоб швидше додати 1 до деякого значення замість add використаємо inc, яка вимагає лише одного операнда.
Ці команди збільшують на 1 значення 4-х регістрів загального призначення (16-бітові)
Можна на 1 збльшити 8-бітовий регістр:
inc dh ; dh dh+1
КОМАНДИ ВІДНІМАННЯ
По своїй формі віднімання в Ас.схоже з додаванням
Команда sum віднімає значення байтів або слів.
Команда sbb діє аналогічно, проте враховує можливу
помилку при попередньому відніманні багатобайтових
значень.
1) sub ax , bx ax ax-bx
2) Можна віднімати два регістри також можна віднімати безпосередні значення:
3) Останню команду можна замінити командою dec,
яка віднімає 1 з регістра або значення в пам'яті
На 1 можна зменшити також значення представлені байтом або словом.
Регістр прапорців. Фактично це регістр стану процесора. В ньому міститься інформація про стан процесора та про хід виконання програми. Кожний прапорець має розмір 1 біт. `Використовуються 9 прапорців: * CF - прапорець перенесення; * PF - прапорець парності; встановлюється в 1, якщо молодший байт результату попередньої команди містить парне число одиничних бітів, і в 0, якщо непарне; * AF - додаткове перенесення; * ZF - прапорець нуля. Встановлюється в 1, якщо результат попередньої команди дорівнює нулеві; * SF - прапорець знака; дорівнює старшому бітові результата; * TF - прапорець пастки; * IF - прапорець переривання; * DF - прапорець напрямку; * OF - прапорець переповнення.
