Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Програма Алгоритм. Приклад 10. Додавання десяткових чисел

Приклад 10. Додавання десяткових чисел

Програма

      ORG 800H
      SUB A
  21 12 08   LXI H,ADDR1
      MOV B,M
  11 16 08   LXI D,ADDR3
    MPAD: INX H
  1A   LDAX D
80A 8E   ADC M
80B     MOV M,A
80C     INX D
80D     DCR B
80E C2 08 08   JNZ MPAD
      HLT
    ADDR1: DB 03H
  29 A4 50 ADDR2: DB 29H,0A4H,50H
  FB 37 28 ADDR3: DB 0FBH,37H,28H
      END

 

 

 

В більшості 8-бітних мікропроцесорів є спеціальна команда DAA (десяткова корекція), що використовує біти Cy та AC регістру F. Вона розрахована на те, що в акумуляторі знаходиться сума упакованих десяткових операндів, отриманих будь-якою із команд ADD, ADC, ADI, ACI. Ця команда служить для аналізу змісту тетрад акумулятора і станів прапорців Cy та AC. Як підсумок цього аналізу в акумуляторі формується вірний десятковий результат, а прапор Сy відображає значення десяткового переносу.

DAA (Decimal adjust accumulator) - неявна адресація

додавання в двійково – десятковому коді

Якщо значення [A3A2A1A0] > 9H v AC=1, діє на всі біти F

то A ß A + 6H,

Якщо значення [A7A6A5A4] > 9H v Cy=1,

то A ß A + 60H.

Зауваження: команда використовується для одного байту і здійснюється лише над акумулятором.

Завдання: нехай необхідно додати два рядки, кожен з яких складається із шести десяткових цифр

376529 + 224388 = 600917

В пам’яті вони розміщені наступним чином

(ADDR1) = 3 – лічильник,

(ADDR2) = 29H, (ADDR2+1) = 65H, (ADDR2+2) = 37H - перше число,

(ADDR3) = 88H, (ADDR3+1) = 43H (ADDR3+2) = 22H – друге число.

Результат розмісти починаючи з адреси ADDR2.

 

 

      ORG 800H
      SUB A
  21 13 08   LXI H,ADDR1
      MOV B,M
  11 16 08   LXI D,ADDR3
    MPAD: INX H
  1A   LDAX D
80A 8E   ADC M
80B     DAA
80C     MOV M,A
80D     INX D
80E     DCR B
80F C2 08 08   JNZ MPAD
      HLT
    ADDR1: DB 03H
  29 65 37 ADDR2: DB 29H,65H,37H
  88 43 22 ADDR3: DB 88H,43H,22H
      END

 

Розглянуті приклади ілюструють наступні особливості програмування на мові асемблера:

1. Майже всі операції обробки даних здійснюються над змістом акумулятору.

2. Програміст повинен передбачити якомога менше звернень до пам’яті. Число звернень можна зменшити, використовуючи посередню адресацію регістрів, а також запам’ятовувати дані в регістрах загального призначення (РЗП).

3. Слід уважно аналізувати вплив команд на стан регістру ознак.

4. За допомогою команди “логічне І” можна обнулити деякі розряди комірки, що дає можливість працювати з даними, які мають довжину меншу довжини комірки.

5. За допомогою команд зсуву можна здійснювати переміщення даних із одних розрядів в інші з метою як обробки, так і економії часу.

6. Кожна програма складається із блоків встановлення початкових значень (ініціалізації), обробки і керування циклами. ЕОМ виконує блок ініціалізації один раз перед входом в цикл. Блок керування циклом визначає число повторів циклу.

7. Використання адресних вказівників зменшує число адрес пам’яті процесора.

8. Робота з масивами і організація циклів потребує більшої уваги до всіх деталей.

Програміст повинен знати:

· вірність завдання початкових значень (ініціалізація) всіх змінних перед входом в цикл;

· вірність завдання адреси в командах посереднього переходу;

· вірність вибору умов, що перевіряються в місцях розгалуження;

· вірність виконання першого і останнього переходу.

<== предыдущая лекция | следующая лекция ==>
Приклад 9. Арифметика для чисел, які займають декілька комірок пам’яті | Тема 15. Макрокоманди
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 327; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.