
Микропроцессоры Токхайм / 9.3. МАТЕМАТИЧЕСКИЕ ПРОГРАММЫ
.doc9.3. МАТЕМАТИЧЕСКИЕ ПРОГРАММЫ
Пусть требуется сложить два десятичных числа 1 110 527 и 192 514 в системе, построенной на МП Intel 8080/8085. Проведем сложение обычным методом после преобразования десятичных чисел в шестнадцатеричные:
Таким образом, получаем 10 F1FF+02F002 = 13Е201Н.
Аккумулятор МП
Intel 8080/8085 может выдать только 8 бит (1
байт) данных; процессор мог бы решить
эту задачу, если бы программист
разделил шестнадцатеричные числа на
однобайтовые группы, а каждая из этих
групп стала бы слагаемым. Процесс
сложения выполняется по следующей
схеме:
Сначала складываются младшие байты (FFH+02H = =01Н плюс перенос),затем средние и предыдущий перенос (1 + F1H+F0H = E2H плюс перенос), наконец, старшие и предыдущий перенос (1 + 10Н + 02Н = 13Н). Заметим, что в двух последних операциях сложения при вычислении окончательной суммы следует учитывать переносы из младших байтов. Микропроцессоры Intel 8080/8085 снабжены специальными командами СЛОЖИТЬ с переносом для решения подобных задач.
Последовательность действий для выполнения сложения 24 бит (3 байт) могла бы быть следующей:
Сложить младший байт первого числа с МБ второго.
Записать частичную сумму младших байтов.
Сложить перенос предыдущего сложения, промежуточный байт первого числа и промежуточный байт второго числа.
5. Сложить перенос предыдущего сложения, СБ первого числа и старший байт второго числа.
6. Записать частичную сумму СБ.
Предположим для данного случая, что адреса памяти соответствуют воображаемой памяти данных, представленной на рис. 9.7. Мы найдем здесь также позиции 24-разрядного результата в памяти. С использованием этих данных адресов была подготовлена программа на ассемблере, по-
казанная в табл. 9.5 и осуществляющая выполнение рассматриваемой операции. Заметим, что первой командой сложения ADD М является операция сложения без переноса. Две следующие, однако, ADC M являются операциями сложения с переносом.
Сложение больших чисел требует введения сложения нескольких байт. В приведенном нами примере перерабатываются числа длиной 3 байт — говорят, что выполняется сложение с тройной точностью.
Упражнения
9.14. См. табл. 9.5. Записанная программа является примером сложения с ______ (двойной, тройной) точностью.
Пусть надо сложить 10F1FFH и 02F002H (см. §9.3). Записать содержимое памяти 2020—2025Н в памяти данных (см. рис. 9.7) до выполнения программы сложения с тройной точностью.
См. рис. 9.7. Записать содержимое ячеек памяти 2026Н, 2027Н и 2028Н после выполнения сложения чисел 10F1FFH и 02F002H.
9.17. См. табл. 9.5. Пара HL используется как регистр _______ (общего назначения, указатель).
9.18. См. табл. 9.5. Команда ADD М указывает на операцию сложения ______ (с переносом, без переноса).
См. рис. 9.8. Где в памяти помещается первое число для сложения?
См. рис. 9.8. Где помещается сумма двух чисел после выполнения сложения?
Как нужно изменить команду MVI С в табл. 9.6 для сложения 24 бит вместо 32?
См. рис. 9.8. Записать содержимое следующих ячеек памяти для сложения 12F0C3FFH с 01B4 D503H: 2020, 2021, 2022, 2023, 2030, 2031, 2032, 2033.
См. рис. 9.8. Чему равна сумма 12F0C3FFH+ +01B4D503H? Дать воображаемую память (адреса и содержимое), относящуюся к размещению суммы до выполнения сложения.
9.25. См. табл. 9.6. Если индикатор (Z)=0, команда ________ будет выполняться после команды JZ.
Решения
9.14. Тройной. 9.15. До сложения 10F1FFH+02F002H содержимое памяти данных следующее (Н-код):
9.17. Указатель. 9.18. Без переноса. 9.19. А (аккумулятор); 2027Н. 9.20. Первое число (4 байт) помещается в памяти по адресам 2020Н— 2023Н. 9.21. В памяти, указанной парой DE, т.е. по адресам 2020Н — 2023Н. 9.22. MVI С, ОЗН. Операнд команды MVI С (0ЗН в данном случае) должен представлять число байтов слагаемых. 9.23. В Н-коде:
9.24. 12F0C3FFH +
01B4D503H=14A59902H. Воображаемая память приведена
на рис. 9.8.
Дополнительные упражнения к гл. 9
9.26. Для программиста микро-ЭВМ, построенная на МП Intel 8080/8085, состоит из памяти, портов ВВ, индикатора, стека, указателя стека, счетчика ______, состава
______ и регистров общего назначения.
Записать четыре поля одной типовой строки на ассемблере.
Операнд поля иногда еще называют _______ .
Команда на ассемблере содержит обычно элементы полной ______ и ______ , тогда как метка и комментарии вводятся по мере необходимости.
9.30. См. рис. 9.9, Эта программа загружает числа
ASCII, взятие в памяти _____ и _________ , маскирует 4 бит
_______ (старших, младших), складывает числа, производит десятеричную коррекцию суммы и помещает ________
(двоичную, двоично-десятичную) сумму в память 2032Н.
Задачи 9.29—9.31 читателю следует решать, обращаясь к рис. 9.10.
Какая команда соответствует кадру 1?
Какая команда соответствует кадру 2?
Какая команда соответствует кадру 5?
Какая команда соответствует кадру 4?
Какая команда соответствует кадру 5?
Какая команда соответствует кадру 6?
Какая команда соответствует кадру 7?
Какая команда соответствует кадру 11?
Какая команда соответствует кадру 12?
См. рис. 9.10. Записать программу на ассемблере, решающую эту задачу.
См. рис. 9.10. После выполнения программы двоично-десятичная сумма _____ будет помещена в память
Решения
9.26. Команд; команд. 9.27. Метка, КОП, операнд, комментарий. 9.28. Аргументом. 9.29. КОП, операнда. 9.30. 2030Н, 2031Н; старших; двоично-десятичную. 9.31. LXI Я, 2030Н. 9.32. MOV А, М. 9.33. ANI OFH. 9.34. MOV В, А. 9.35. INX H. 9.36. ADD В. 9.37. DAA. 9.38. MOV М, А. 9.39. HLT.