Рубрики

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

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

Пример —

Алгоритм —

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

Программа —

MEMORY ADDRESSMNEMONICSCOMMENT
400MOV AL, [500]AL<-[500]
404MOV BL, [502]BL<-[502]
408SUB AL, BLAL<-AL-BL
40ADASdecimal adjust
40BMOV [600], ALAL->[600]
40FMOV AL, [501]AL<-[501]
413MOV BL, [503]BL<-[503[
417SBB AL, BLAL<-AL-BL-borrow
419DASdecimal adjust
41AMOV [601], ALAL->[601]
41EMOV AL, 00AL<-00
420ADC AL, ALAL<-AL+AL+borrow
422MOV [602], ALA->[602]
426HLTEnd

Пояснение —

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

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

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

0.00 (0%) 0 votes