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

Адрес Машинный код Метка Мнемокод Комментарий
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).