Арифметичні операції у мові Асемблера IBM PC
Процесор реалізує у кількох форматах чотири базові арифметичні операції. Операції виконуються над 8- та 16-бітовими беззнаковими та знаковими операндами. У мові Асемблера також передбачені команди до роботи з десятковими числами.
Арифметичні команди цієї мови програмування:
- ADC (скласти з перенесенням) приймач+джерело+cf = приймач
- INC (інкремент) приймач+1 = приймач
- ADD (скласти) приймач+джерело = приймач
- SBB (відняти з переносом) приймач-джерело-cf = приймач
- SUB (відняти) приймач-джерело = приймач
- DEC (декремент) приймач-1 = приймач
- NEG (змінити знак) -приймач = приймач
- MUL (помножити без знака) АL * джерело (8) = АХ
- АХ * джерело (16) = DX AX
- IMUL (помножити зі знаком) Команда MUL (при цьому операнди знакові)
- DIV (розділити без знака) АХ/джерело (8) = AL
- DX, АХ/джерело (16) = АХ
- IDIV (розділити зі знаком) Команда DIV (при цьому операнди знакові)
Знакові числа описані в додатковому коді з використанням лівого біта для представлення знака. Беззнаковими числами називають звичайні двійкові числа, у яких всі біти є значущими.
Більшість арифметичних команд скидають або встановлюють шість прапорів стану, які показують певні властивості результату:
- прапор CF. Він вводиться у разі, якщо операція дала беззнаковий результат і поза діапазону;
- прапор OF. Даний прапор вводиться у тому випадку, якщо в операції вийшов знаковий результат, що знаходиться поза діапазоном (знакове переповнення);
- прапор ZF. Цей прапор встановлюється,якщо результат операції дорівнює u;
- прапор SF. Він встановлюється у разі, якщо старший біт підсумку операції містить одиницю, що відповідає отриманню негативного результату;
- PF прапор. Цей прапор встановлюється у разі, якщо результат операції включає у собі парне число одиничних біт у молодшому байті результату;
- прапор AF. Цей прапор встановлюється у разі, якщо у десяткових операціях потрібна корекція.
Практично у всіх випадках вихідні дані вводяться програмою з клавіатури або файлу в десятковому форматі у вигляді ASCII-символів. Дані надходять у ЕОМ, зазвичай, в неупакованном форматі, тобто. кожен байт містить лише одну цифру.
Прикладом неупакованого десяткового формату є ASCII-код, у якому кожен символ представляється одним байтом.
Подання цифр в коді ASCII:
1 - 31Н 6 - 36Н 2 - 32Н 7 - 37Н 3 - ЗЗН 8 - 38Н 4 - 34Н 9 - 39Н 5 - 35Н 0 - ЗОН