ify"> Працює так само, як і MOVSX, тільки виробляє розширення без урахування знака, тобто заповнює додається частина нулями, а не знаковим старшим бітом джерела.
Десяткова арифметика
Десяткові числа можуть бути представлені в так званому двійковій-десятковому коді (Binary Coded Decimal - BCD). Цей спосіб передбачає зберігання кожної десяткової цифри в чотирьох бітах. Розрізняють два формати зберігання BCD-чисел:
упакований, коли кожен байт (8 біт) може містити дві десяткові цифри (по 4 біта кожна). У такому випадку кожен байт містить десяткове число в діапазоні від 00 до 99. p align="justify"> неупакований, коли кожен байт містить лише одну десяткову цифру в молодших чотирьох бітах, а старші чотири біти мають нульове значення. Діапазон представлення неупакованого BCD-числа в окремо взятому байті становить від 0 до 9. p align="justify"> Десяткова арифметика здійснюється методом комбінування вищеописаних команд двійковій арифметики з командами, спеціально призначеними для десяткових операцій. Команди десяткової арифметики використовуються для приведення результату попередніх двійкових обчислень до упакованого/неупакованого формату BCD-числа або, навпаки, для підготовки введених даних до двійковим арифметичним операціям.корректірует результат складання двох упакованих BCD-чисел в регістрі AL. Ця команда повинна слідувати за командою складання (ADD або ADC), якщо у додаванні брали участь два упакованих BCD, і результат знаходиться в AL. Якщо відкоригований результат перевищить 99, то буде встановлено прапор CF, а в AL залишаться лише дві молодші цифри. Приклад: al, 49hbl, 52hal, bl
У даному прикладі наочно показано, що упаковані BCD можна записувати просто як шістнадцяткові числа (буква h наприкінці числа означає HEX), тільки без використання символів ABCDEF. Коли буде вироблено додавання 49h і 52h, результат буде невірним. Точніше, він буде вірним, але лише стосовно до шістнадцятиричним числах, тому що процесор, складаючи ці числа, вважає їх не упакованими десятковими, а стандартними двійковими або шестнадцатерічнимі, якщо хочете. Однак команда DAA все розставляє по своїх місцях, і в результаті в AL виходить 01 (дві молодші цифри від 101), а встановлений прапор CF дозволяє визначити, що одиничка для наступного третього розряду "в умі". Працює аналогічно DAA, тільки використовується для коригування результату віднімання. У команди також відсутній операнд, тому що дія проводиться над регістром AL. Прапор CF (якщо встановлений) вказує на те, що від'ємник виявилося більше зменшуваного, і необхідно це справа обробити, наприклад, зменшенням третього розряду на едініцу.предназначена для коригування результату складання НЕ упакованих BCD-чисел розміром в байт, тобто однорозрядних. Операнди відсутні, дія проводиться над регістром AL. Якщо результат перевищує 9, то в AL поміщається лише молодший розряд, а AH збільшується на одиницю, і встано...