Блок-схема алгоритма с поясняющим текстом




 

 

2.2 Распределение памяти и листинг программы с комментарием

 

SP-двухбайтный регистр стека

H,L - пара регистров, занятых массивом исходных чисел

D,E - пара регистров, занятых результирующего массива.

В, С - пара регистров, используемых для хранения временных данных

С - регистр, используемый как счетчик

 

адрес данные Код ассемблера Комментарии
  31 00 80 LXI SP, 8000h Создание стека программы по адресу 8000h
  21 05 50 LXI H, 5001h Помещение в пару H,L адреса исходного массива
  11 01 70 LXI D, 7001h Помещение в пару D,E адреса массива результатов
  01 00 60 LXI B, 6000h Помещение в пару В, С ячейку памяти 6000h
400C AF XRA A Обнуление аккумулятора
400D   STAX B Запись содержимого в ячейку памяти 6000h
400E 0E 0A MVI C,0Ah Создание счетчика на 10 шагов
  C5 M1: PUSH B Засылка содержимого регистров В, С в стек
  7E MOV A,M Копирование содержимого регистров в аккумулятор
    RAL Циклический сдвиг содержимого аккумулятора влево на один разряд
  DA 50 40 JC OTR Если число отрицательное (CY=1), то прыгнуть на метку OTR
  7E MOV A,M Копирование содержимого ячейки памяти в аккумулятор
    STAX D Запись в массив результатов старшего байта числа
  2B DCX H Переход к младшему байту числа в исходном массиве
  1B DCX D Переход к младшему байту числа в массиве результатов
401A 7E MOV A,M Копирование содержимого ячейки памяти в аккумулятор
401B   STAX D Запись в массив результатов младшего байта числа
401C   INX H С адреса 401С по 4021 - продвижение адресов на следующую пару чисел в исходном массиве и в массиве результатов
401D   INX D  
401E   M2: INX H  
401F   INX D  
    INX H  
    INX D  
  C1 POP B Извлечение содержимого В, С из стека
  0D DCR C Уменьшение счетчика на 1
  C2 10 40 JNZ M1 Возврат на М1 до исчерпания счетчика
  CD 80 40 CALL PODS Вызов подпрограммы PODS
402A CD 49 00 CALL 49h Перевод курсора на новую строку
402D CD 90 40 CALL VISX Вызов программы VISX
  CD 49 00 CALL 49 h Перевод курсора на новую строку
  CD B0 40 CALL VREZ Вызов подпрограммы VREZ
  C3 40 00 JMP 40h Выход в программу Монитор

 


Подпрограмма обработки отрицательных чисел

  0A PODS: LDAX B Загрузка в аккумулятор содержимого ячейки 6000h
  01 20 41 LXI B,4120h Помещение в пару регистров В, С адреса 4120h
  CD 4C 00 CALL 4Ch Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта
  CD 61 00 CALL 61h Вывод двух шестнадцатеричных цифр и аккумулятора
408A C9 RET Безусловный возврат к команде, с адресом 402А

 

Подпрограмма вывода на экран исходного массива

409011 14 00VISX: LXI D, 0014hСоздание счетчика на 20 шагов      
  21 00 50 LXI H, 5000h Помещение в пару H,L адреса исходного массива
  01 20 42 LXI B,4220h Помещение в пару регистров В, С адреса 4220h
  CD 4C 00 CALL 4Ch Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта
409С 01 20 43 LXI B,4320h Помещение в пару регистров В, С адреса 4320h
409F 7E MOV A,M Копирование содержимого ячейки памяти в аккумулятор
40A0 CD 61 00 CALL 61h Вывод двух шестнадцатеричных цифр и аккумулятора
40A3   INX H Продвижение адреса на следующую пару чисел
40A4 CD 4C 00 CALL 4Ch Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта
40A7 1D DCR E Уменьшение счетчика на 1
40A8 C2 9F 40 JNZ 409F Возврат в 409F до исчерпания счетчика
40AB C9 RET Безусловный возврат к команде, адресом 4030

 

Подпрограмма вывода на экран массива результатов

40B011 14 00VREZ: LXI D,0014hСоздание счетчика на 20 шагов      
40B3 21 00 70 LXI H, 7000h Помещение в пару H,L адреса массива результатов
40B6 01 20 44 LXI B, 4420h Помещение в пару регистров В, С адреса 4420h
40B9 CD 4C 00 CALL 4Ch Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта
40BC 01 20 43 LXI B, 4320h Помещение в пару регистров В, С адреса 4320h
40BF 7E MOV A,M Копирование содержимого ячейки памяти в аккумулятор
40C0 CD 61 00 CALL 61h Вывод двух шестнадцатеричных цифр и аккумулятора
40C3   INX H Продвижение адреса на следующую пару чисел
40C4 CD 4C 00 CALL 4Ch Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта
40C7 1D DCR E Уменьшение счетчика на 1
40C8 C2 BF 40 JNZ 40BF Возврат в 40BF до исчерпания счетчика
40CB C9 RET Безусловный возврат к команде, с адресом 4036

· Результаты тестирования программы

При запуске программы, на экране Монитора выводятся следующие данные:

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: