Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 9.3. МАТЕМАТИЧЕСКИЕ ПРОГРАММЫ

.doc
Скачиваний:
159
Добавлен:
13.05.2015
Размер:
1.34 Mб
Скачать

9.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 байт) могла бы быть следующей:

Сложить младший байт первого числа с МБ второго.

Записать частичную сумму младших байтов.

Сложить перенос предыдущего сложения, промежу­точный байт первого числа и промежуточный байт второго числа.

4. Записать вторую частичную сумму.

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.5. По команде STA 2027Н содержимое регистра _____ (А,В) помещается в память по адресу _______.

См. рис. 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.