Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Процедура преобразования исходного массива 16ричных констант в их 2-10 коды.





Распределение памяти:

B C

 

Адрес Данные Ассемблерный код Комментарий
    LXI H,5000     Загрузка в <H,L> адреса, начиная с которого будет считан массив исходных констант.
    LXI D,6000 Загрузка в <D,E> адреса, начиная с которого будут записаны 2-10 коды.
400A 400B 0A LXI B,000A Создание в регистре C счётчика цикла преобразования.
400C C5 PUSH B Сохранение в стек счётчика цикла.
400D 7E MOV A,M Загрузка константы из памяти.
400E 400F 0E MVI C,00 Обнуление регистра C.
  C3 2C JMP 402C Переход к подпрограмме последовательного вычитания из аккумулятора числа 64 для получения старшего байта 2-10 кода.
  CE ACI 64 Сложение аккумулятора с 64 для восстановления значения до лишнего вычитания.
    MOV B,A Сохранение аккумулятора в регистр B.
  3E MVI A,00 Обнуление аккумулятора.
401A C3 JMP 4035 Переход к подпрограмме последовательного «переписывания» в аккумулятор содержимого <B> с 2-10 коррекцией для получения младш. байта.
401B   STAX D Сохранение младшего байта 2-10 числа в память.
401C   MOV A,C Загрузка в <A> из <C> старшего байта 2-10 кода.
401D   INX D Переход к следующему адресу записи.
401E   STAX D Сохранение старшего байта 2-10 числа.
401F   INX D Переход к следующему адресу записи.
  C1 POP B Восстановление из стека счётчика цикла.
    MOV A,C Копирование <C> в <A>.
  3D DCR A Уменьшение счётчика на 1.
  CA 3E JZ 403E Если счётчик достиг нуля, то необходимо выйти из процедуры 2-10 преобразования по флагу Z.
  4F MOV C,A Иначе <A> копируем в <C>.
  C5 PUSH B И сохраняем в стек уменьшенный счётчик.
    INX H Переход к следующему адресу чтения.
402A 402B C3 0D JMP 400D Возврат к началу подпрограммы.
402C 402D D6 SUI 64 Начало подпрограммы вычитания из <A> 64 для получения старшего байта 2-10 числа.
402E 402F DA JC 4013 Если произошёл перенос, то есть число в аккумуляторе уже меньше 64, то возвращаемся к основной процедуре по флагу CY.
  0C INR C Увеличиваем число, означающее старший байт.
  C3 2C JMP 402C Возврат к началу подпрограммы.
    DCR B Начало подпрограммы получения мл.ч. <B>-1
  CA 1B JZ 401B По флагу Z возврат к основной процедуре. Нулевой результат означает, что весь остаток исх. константы переписан в аккумулятор в 2-10 виде.
  3C INR A Увеличиваем аккумулятор на 1.
403A   DAA 2-10 коррекция аккумулятора.
403B 403C 403D C3 JMP 4035 Возврат к началу подпрограммы.
403E 403F C3 JMP 4100 Выход из текущей процедуры. Переход к следующей процедуре (преобразования 2-10 кодов в коды KOИ-7).

Процедура преобразования 2-10 кодов в коды КОИ-7.

Распределение памяти:

B C
D E
H L

- Счётчик цикла.

- Адрес текущего записываемого кода КОИ-7.

- Адрес текущего читаемого из памяти 2-10 числа.

Адрес Данные Ассемблерный код Комментарий
    LXI H,6000 Загрузка в пару <H,L> адреса, начиная с которого будет произведено чтение 2-10 кодов.
  0A LXI B,000A Создание в <C> счётчика цикла чтения-преобразования-записи.
    LXI D,7000 Загрузка в пару <D,E> адреса, начиная с которого будет произведена запись кодов КОИ-7.
  7E MOV A,M Чтение из памяти младшего байта 2-10 числа.
410A 410B E6 F0 ANI F0 Выделение из младшей части числа только десятков. (лог. умнож. на число F0)
410C 1F RAR 4-х кратный сдвиг аккумулятора вправо. Для того, чтобы десятки 2-10 числа оказались справа от нуля.
410D 1F RAR
410E 1F RAR
410F 1F RAR
  F6 ORI 30 Сложение аккумулятора с 30кой, чтобы получить код КОИ-7.
    INX D Переход к следующему адресу записи.
    STAX D Запись кода КОИ-7 десятков 2-10 числа.
    INX D Переход к следующему адресу записи.
  7E MOV A,M Чтение младшего байта 2-10 числа.
  E6 0F ANI 0F Выделение из младшей части только единиц. (логич. умножение на число 0F)
  F6 ORI 30 Сложение аккумулятора с 30кой для получения кода КОИ-7 единиц 2-10 числа.
411A   STAX D Запись кода КОИ-7 единиц 2-10 числа в память.
411B 1B DCX D Переход к предыдущему адресу записи.
411C 1B DCX D Переход к предыдущему адресу записи.
411D   INX H Переход к следующему адресу чтения.
411E 7E MOV A,M Чтение в <A> старшего байта 2-10 числа.
411F F6 ORI 30 Сложение <A> с 30кой для получения кода КОИ-7 сотен 2-10 числа.
    STAX D Запись КОИ-7 кода сотен 2-10 числа в память.
  0D DCR C Уменьшение счётчика цикла.
  CA JZ 4130 При нулевом значении счётчика цикла, необходимо прекратить выполнение текущей процедуры.
    INX H Переход к следующему адресу чтения.
    INX D Переход к следующему адресу записи.
    INX D Переход к следующему адресу записи.
    INX D Переход к следующему адресу записи.
412A 412B 412C C3 JMP 4109 Переход к началу процедуры преобразования 2-10 чисел в коды КОИ-7.

Выход из процедуры КОИ-7 преобразования.

Адрес Данные Ассемблерный код Комментарий
  C3 JMP 4200 Переход к началу процедуры вывода результатов 2-10 преобразования на экран.






Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.