Программа сложения ряда чисел

Адрес Машинный код Метка Мнемокод Комментарий
  3A   LDA загрузка длины ряда чисел в АКМ
  NN     из ячейки памяти с адресом
  NN     NNNN
      MOV B,A загрузка длины ряда чисел в регистр-счетчик
      SUB А Обнуление аккумулятора
      LXI H загрузка адресного указателя
  DD     DDDD в регистровую пару HL
  DD      
    M2 ADD M сложение элемента массива с АКМ
      DCR B уменьшение содержимого регистра-счетчика на единицу
810A CA   JZ, M1 сложение элементов массива
810B       закончено?
810C        
810D     INX H переход к следующему адресу
810E C3   JMP, M2 организация цикла
810F        
         
    Ml NOP окончание программы

Перед выполнением программы исходный ряд чисел заносится с помощью командных клавиш в область памяти, начиная с адреса DDDD (см. Приложение 2), а его длина - в ячейку памяти с адресом NNNN.

В большинстве случаев точность вычислений, обеспечиваемая одной ячейкой памяти, недостаточна. Поэтому рассмотрим арифметику для чисел, занимающих несколько ячеек. Задача состоит в том, чтобы сложить два числа длиной более 8 бит каждое. Исходные числа располагаются в области памяти таким образом, что сначала идут младшие разряды, а затем более старшие разряды. Полученную сумму необходимо поместить в те ячейки памяти, где хранилось первое число.

В программе суммирования двух длинных чисел для МП К580ИК80 использованы следующие исходные данные и обозначения:

N - длина чисел в байтах

В - регистр-счетчик, указатель длины чисел

DE - регистровая пара, адресный указатель первого слагаемого

NNNN - адрес ячейки памяти, где хранится младший байт первого числа

HL - регистровая пара, адресный указатель второго слагаемого

DDDD - адрес ячейки памяти, где хранится младший байт второго числа

8300 – адрес начала программы

Таблица 2

Программа сложения двух длинных чисел

Адрес Машинный код Метка Мнемокод Комментарий
      MVI B Загрузка счетчика
  N      
      LXI D загрузка адресного указателя
  NN     первого числа
  NN      
      LXI H загрузка адресного указателя
  DD     второго числа
  DD      
  1A М2 LDAX D загрузка операнда в АКМ
  8E   ADC M сложение с учетом переноса
830А     STAX D Запоминание результата сложения
         
        Таблица 2 (продолжение)
830В     DCR B Уменьшение счетчика на единицу
830С CA   JZ, M1 сложение закончено?
830D        
830Е        
830F     INX D переход к следующему байту
        первого числа
      INX H переход к следующему байту
        второго числа
  C3   JMP, M2 организация цикла
         
         
    Ml NOP окончание программы

Перед выполнением программы исходные числа F1 и F2, начиная с младшего байта, заносятся последовательно байт за байтом с помощью командных клавиш в ячейки памяти, начиная с адресов NNNN и DDDD соответственно (см. Приложение 3).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: