Рис. Р6.1. Схема алгоритма умножения
Используем РОНы МП следующим образом: число М храним в регистре С, число N – в аккумуляторе, накапливающуюся сумму частичных произведений и результат – в регистровой паре HL, счетчик циклов организуем в регистре D. В программе используется команда суммирования содержимого пар регистров DAD B, т.е. (H)(L)¬(H)(L)+(B)(C), поэтому задействован также регистр В.
Программа умножения
MULT: LXI H,00 ;Обнуление пары HL 10
MOV B,H ;Обнуление регистра В 5
MVI D,08 ;Начальная установка счетчика циклов 7
M1: DAD H ;Удвоение содержимого пары HL
;(сдвиг Пi влево на 1 разряд) 10
RLC ;Сдвиг множителя N влево на
;1 разряд (ввод Ni в триггер переноса CY) 4
JNC M2 ;Переход к М2, если Ni = 0 10
DAD B ;Прибавление к Пi множителя N10
M2: DCR D ;(D)¬(D) – 1 – организация
;счета циклов 5
JNZ M1 ;Переход к М1 при (D) ¹ 0 10
Суммарное число тактов (при N = Nмакс = 255)
N = 10+5+7+8(10+4+10+10+5+10)=414.
Время выполнения программы при fт = 2МГц t = 207 мкс.
Р6.42. а)
Характеристика |
КР580ВМ80 |
К1810ВМ86 |
Разрядность шины данных |
8 |
16 |
Адресуемая емкость памяти |
64 Кбайт |
1 Мбайт |
Тактовая частота |
2 МГц |
5 МГц |
Арифметические операции |
Сложение, вычитание |
Сложение, вычитание, умножение, деление |
Возможность работы с цепочками слов |
Нет |
Есть |
Напряжение питания, В |
+5, -5, +12 |
+5 |
б) Адресное пространство памяти 1 Мбайт разбито на 16 сегментов по 64 Кбайт в каждом. Четыре сегмента специализированы: сегмент программы, сегмент стека, сегмент данных и сегмент дополнительных данных. Начальный адрес каждого сегмента (сегментный адрес) содержит 20 бит, но 4 младших бита – всегда нули. Адрес ячейки в пределах сегмента называется смещением и содержит 16 бит. Исполнительный адрес получается при суммировании сегментного адреса и смещения (рис. Р6.2).
Сегментирование памяти позволяет хранить все адреса в 16-разрядных (а не в 20-разрядных) регистрах, но при этом приходится тратить дополнительное время на получение исполнительных адресов. Сегментные адреса хранятся в четырех сегментных регистрах CS, SS, DS и ES, которые выбираются по программе.
Р6.43. Адресное пространство ввода-вывода – 65536 портов. Исполнительный адрес порта имеет формат 20 бит, но старшие 4 бита всегда нулевые. Поэтому при адресации портов сегментные регистры не используются. Первые 256 ортов могут иметь прямую адресацию; все порты могут адресоваться косвенно (адрес порта – в регистре, определяемом командой).
Рис. Р6.2. Схема вычисления исполнительного адреса в МП К1810
Р6.44. Регистр АХ обычно выполняет функцию аккумулятора, ВХ используется как источник базового адреса (соответствует регистровой паре HL МП КР580ВМ80); СХ часто используется в качестве счетчика циклов; DX используется в командах умножения и деления, а также при косвенной адресации портов ввода-вывода.
Все эти порты – 16-разрядные, но допускают независимую адресацию старшего и младшего байтов (AH-AL, BH-BL и т.д.).
Р6.45. 16-разрядные сегментные регистры содержат начальные адреса сегментов памяти: CS – сегмент программы, SS – сегмент стека, DS – сегмент данных, ES – сегмент дополнительных данных.
При формировании исполнительных адресов эти начальные адреса суммируются со смещением, указанным в команде, в соответствии с формулой
(исполнительный адрес) = 24×(сегментный адрес)+(смещение).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.