Рубрики

Программа 8086 для добавления двух 16-битных номеров BCD с переносом

Проблема — Напишите программу на языке ассемблера для добавления двух 16-битных чисел BCD с переносом в микропроцессоре 8086.

Пример —

Алгоритм —

  1. Загрузите нижнюю часть обоих 16-битных номеров BCD в разных местах.
  2. Добавьте каждое число, добавив сначала его нижнюю часть.
  3. Повторите вышеуказанный шаг также, добавив перенос, если таковые имеются.
  4. Сделайте нижнюю часть регистра 00 и добавьте перенос. Это сделано, чтобы получить керри.
  5. Отобразите все номера с наивысшей частью в качестве переноса, среднюю часть — как добавление старших 8-битных битов, а нижнюю часть — как младшие 8 битов.

Программа —

Memory AddressMnemonicsComments
0400MOV AL, [500]AL ← [500]
0404MOV BL, [502]BL ← [502]
0408ADD AL, BLAL ← AL+BL
040ADAADecimal Adjust AL
040BMOV [600], ALAL → [600]
040FMOV AL, [501[AL ← [501]
0413MOV BL, 503BL ← [503]
0417ADC AL, BLAL ← AL+BL+CY
0419DAADecimal Adjust AL
041AMOV [601], ALAL → [601]
041EMOV AL, 00AL ← 00H
0420ADC AL, ALAL ← AL+AL+CY
0422MOV [602], ALAL → [602]
0426HLTStop Execution

Пояснение —

  1. MOV AL, [500] перемещает значение, хранящееся в ячейке памяти 500, в регистр AL.
  2. MOV BL, [502] перемещает значение, хранящееся в ячейке памяти 500, в регистр BL.
  3. ADD AL, BL добавить значения в регистры AL и BL.
  4. DAA добавляет 6 к цифре, которая больше 9.
  5. MOV [600], AL отображает добавленную стоимость в ячейке памяти 600.
  6. MOV AL, [501] перемещает значение, сохраненное в ячейке памяти 501, в регистр AL.
  7. MOV BL, [503] перемещает значение, сохраненное в ячейке памяти 503, в регистр BL.
  8. ADC AL, BL добавляют значения в регистры AL и BL и переносят (если есть).
  9. MOV BL, [503] перемещает значение, сохраненное в ячейке памяти 503, в регистр BL.
  10. MOV [601], AL отображает добавленное значение в ячейку памяти 601.
  11. MOV AL, 00 перемещается в регистр AL.
  12. ADC AL, AL добавляют значения в регистры AL и AL и переносят (если есть).
  13. MOV [602], AL отображает добавленное значение в ячейку памяти 602.
  14. HLT останавливает исполнение.

Следующая связанная статья — программа 8086 для добавления двух 8-битных чисел BCD

Рекомендуемые посты:

Программа 8086 для добавления двух 16-битных номеров BCD с переносом

0.00 (0%) 0 votes