Рубрики

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

Проблема — Напишите программу для вычитания двух 16-разрядных чисел, где начальный адрес равен 2000, а числа по адресу 3000 и 3002, и сохраните результат в адрес памяти 3004 и 3006 .

Пример —

Алгоритм —

  1. Загрузить 0000H в регистр CX (для заимствования)
  2. Загрузите данные в AX (аккумулятор) из памяти 3000
  3. Загрузите данные в регистр BX из памяти 3002
  4. Вычтите BX с аккумулятором AX
  5. Прыгай, если не брать
  6. Увеличение CX на 1
  7. Переместить данные из AX (аккумулятора) в память 3004
  8. Переместить данные из регистра CX в память 3006
  9. Стоп

Программа —

MemoryMnemonicsOperandsComment
2000MOVCX, 0000[CX] <- 0000
2003MOVAX, [3000][AX] <- [3000]
2007MOVBX, [3002][BX] <- [3002]
200BSUBAX, BX[AX] <- [AX] – [BX]
200DJNC2010Jump if no borrow
200FINCCX[CX] <- [CX] + 1
2010MOV[3004], AX[3004] <- [AX]
2014MOV[3006], CX[3006] <- [CX]
2018HLTStop

Пояснение —

  1. MOV используется для загрузки и хранения данных.
  2. SUB используется для вычитания двух чисел, в которых один номер находится в аккумуляторе или нет.
  3. JNC — это 2-битная команда, которая используется для проверки того, генерируется ли заимствование из аккумулятора или нет.
  4. INC используется для увеличения регистра на 1.
  5. HLT используется для остановки программы.
  6. AX — это аккумулятор, который используется для загрузки и хранения данных.
  7. BX, CX — это регистры общего назначения, где BX используется для хранения второго номера, а CX используется для хранения заимствований.

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

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

0.00 (0%) 0 votes