Арифметичні операції у мові Асемблера 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 - ЗОН