Рубрики

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

Проблема — Напишите программу в микропроцессоре 8086, чтобы найти вычитание двух 8-битных чисел BCD, где числа сохраняются с начального адреса памяти 2000: 500 и сохраняют результат в адресе памяти 2000: 600 и переносят (занимают) в 2000: 601.

Пример —

Алгоритм —

  1. Загрузить данные со смещения 500 в регистр AL (первое число)
  2. Загрузить данные со смещения 501 в регистр BL (второе число)
  3. Вычтите эти два числа (содержимое регистра AL и регистра BL)
  4. Применить инструкцию DAS (десятичная корректировка)
  5. Сохранить результат (содержимое регистра AL) по смещению 600
  6. Установите регистр AL на 00
  7. Добавить содержимое регистра AL к себе с помощью carry (loan)
  8. Сохранить результат (содержимое регистра AL) по смещению 601
  9. Стоп

Программа —

MEMORY ADDRESSMNEMONICSCOMMENT
400MOV AL, [500]AL<-[500]
404MOV BL, [501]BL<-[501]
408SUB AL, BLAL<-AL-BL
40ADASDECIMAL ADJUST AL
40BMOV [600], ALAL->[600]
40FMOV AL, 00AL<-00
411ADC AL, ALAL<-AL+AL+cy(prev)
413MOV [601], ALAL->[601]
417HLTEND

Пояснение —

  1. MOV AL, [500] загрузить данные со смещения 500 в регистр AL.
  2. MOV BL, [501] загрузить данные со смещения 501 для регистрации BL.
  3. SUB AL, BL вычитать содержимое регистров AL AND BL.
  4. DAS десятичную настройку AL.
  5. MOV [600], AL сохраняют данные из регистра AL по смещению 600.
  6. MOV AL, 00 установить значение регистра AL в 00.
  7. ADC AL, AL добавляет содержимое регистра AL в AL с заимствованием.
  8. MOV [601], AL сохраняет данные из регистра AL в смещение 601.
  9. HLT End.

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

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

0.00 (0%) 0 votes