Реферат: Арифметичні команди
aas – корекція результату віднімання для представлення в символьному вигляді; працює неявно з регістром al;
aam – корекція результату множення для представлення в символьному вигляді; працює неявно з регістром ах;
aad – корекція результату ділення для представлення в символьному вигляді; працює неявно з регістром ах.
Арифметичні дії над упакованими BCD-числами:
daa – корекція результату додавання для представлення у десятковому вигляді;
das – корекція результату віднімання для представлення у десятковому вигляді.
Б езумовні - умовні переходи мови Асемблер
Від програм, які мають просту лінійну структуру, як правило, дуже мало користі. Практично кожна програма, яка має будь-яке практичне застосування, повинна аналізувати деякі умови, і залежно від виконувати ті чи інші дії, тобто містити розгалуження та умовні переходи. Класичним прикладом такої поведінки програми є так званий “захист від дурня”, коли програма перевіряє (знову з допомогою умовних переходів) коректність даних, що вводяться, або, скажімо, тип відеосистеми і версію DOS чи факт успішного відкриття потрібного файлу.
У багатьох випадках виникає необхідність багатократного повторення якихось однорідних операцій, тобто виконання циклу. Класичним прикладом циклічних програм є програми, що здійснюють обробку масивів (цикл по елементах масиву), файлі (цикл по записах файлу), керують подіями (цикл обробки подій), обчислюють щось за ітераційними або рекурентними формулами. Для підтримки програм з циклічною структурою у складі системи команд процесорів 80х86 є спеціальні команди організації циклів. Але ці команди не володіють логічною повнотою (не дозволяють організувати всі можливі і необхідні види циклів), тому в ряді випадків доводиться імітувати циклічну структуру вручну з допомогою умовних і безумовних переходів по параметру циклу. Засоби мов високого рівня для організації циклів всіх типів спираються на команди циклів процесора та на команди умовного і безумовного переходів (при компіляції переводяться саме в ці команди).
При використанні команди LOOP ініціалізуйте СХ додатнім числом, оскільки ця команда контролює лише нульове значення: при від’ємному програма буде продовжувати роботу циклу нескінченно.
Якщо деяка команда встановлює ознаку, то вона зберігає своє значення до того часу, поки воно не буде змінене іншою командою. Тому для мінімізації числа можливих помилок потрібно кодувати команди умовного переходу безпосередньо після команд, які встановлюють ознаки.
Команда безумовного переходу
jmp (модифікатор) адреса_переходу – безумовний перехід без збереження інформації про точку повернення; адреса_переходу – мітка або адреса пам’яті.
Найчастіше використовуються:
· короткий внутрішньосегментний перехід – відстань від команди jmp до адреси_переходу не більше ніж -128 або +127 байт:
jmp short ptr m1
не більше 35-40 команд (127 байт)
m1:
або
m1
відстань не більше 35-40 команд (-128 байт)
jmp m1
· внутрішньосегментний перехід – дозволяються переходи в межах 64 Кбайт відносно наступної за jmp команди:
m1:
відстань більше 128 байт і менше 64 Кбайт
jmp m1;
· міжсегментний перехід – для організації переходів між сегментами:
seg_1 segment
jmp far ptr m2; far обов’язкове
m1 label far