Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

чиваются регулярная структура программы и минимальные затраты памяти, но время выполнения программы велико. Его можно сократить, если организовать процесс вычисления произведения формата 16-16 = 32 как последовательность двух подпроцессов умножения форматов 16-8 = 24 для МЛБ МН и 16-8 = 24 для СТБ МН с последующим суммированием полученных произведений с учетом их сдвига на один байт относительно друг друга. Этот алгоритм реализует программа У32Б (аналогичная программа приведена в работе [21]):

0630

оэпо

0630 AF

0631 67

0632 6F

0633 В2

0634 ВЗ

0635 С23Б06

0638 47

0639 4F 063А С9

063В AF 063С ВО 063D Б1 063F С8

063F 79

0640 С5

0641 СВП005

0644 ЕЗ

0645 F5

0646 7С 54

ORG 630Н У24А SET 5D0H

У32Е:

;ПОДПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА ;ФОРМАТА 16*16=32.ВАРИАНТ Б.

гМЕТОД УМНОЖЕНИЯ5РЕЗУЛЬТАТ 16»16=32 ОПРЕДЕЛЯЕТСЯ КАК ;СУММА ДВУХ СДВИНУТЫХ ОТНОСИТЕЛЬНО ДРУГ ДРУГА ПРОИЗБЕ-гДЕНИИ 16»(8=24.ПОЛУЧЕННЫХ УМНОЖЕНИЕМ МНОЖИМОГО СООТБЕТ-SCTBEHHO НА МЛЕ И СТЕ МНОЖИТЕЛЯ.

;БХОДНЫЕ ПАРАМЕТРЫ:(Б,С)-МНОЖИТЕЛЬ.(Б.Е)-МНОЖИМОЕ.ВЫ-;ХОДНЫЕ ПАРАМЕТРЫ: (B.C.Н»Ь)-ПР0И;5ВЕЯЕНИЕ.ИСПОЛЬЗУЮТСЯ ;ВСЕ РЕГИСТРЫ.ГЛУБИНА СТЕКА-4.ИСПОЛЬЗУЕТСЯ ПОДПРОГРАММА ;*У24А*.

?ОЦЕНКА:ДЛИНА 42 (+18 *У24А*) БАЙТ.ВРЕМЯ- НЕ БОЛЕЕ 1127 ;ТАКТОВ (С УЧЕТОМ •У24А*).

(ОБНУЛЕНИЕ ТЕКУЩЕЙ СУММЫ ЧП

XRA А

мои Н.А

мои L.A ;ПРОВЕРКА МНОЖИМОГО НА О

ORA В

ORA Е

JNZ ПЕР1 г ЕСЛИ МНОЖИМОЕ НЕ О MOV Б.А MOV С.А RET

;ПРОВЕРКА МНОЖИТЕЛЯ НА О ПЕР1: XRA А

ORA В

ORA С

RZ ;ЕСЛИ МН0ЖИТЕЛЬ=0

SУМНОЖЕНИЕ МНОЖИМОГО НА МЛБ МНОЖИТЕЛЯ

мои А.С ;(А)-МЛБ МНОЖИТЕЛЯ

PUSH В ;СОХРАНЕНИЕ МНОЖИТЕЛЯ

CALL У24А ;(А.H.L)-ПРОИЗВЕДЕНИЕ 1 (ПР1) SСОХРАНЕНИЕ ПРОИЗВЕДЕНИЯ 1

XTHL !СОХРАНЕНИЕ СРБ.МЛБ ПР1

;(H.L)-МНОЖИТЕЛЬ

PUSH PSM ; СОХРАНЕНИЕ СТБ ПР1 ; УМНОЖЕНИЕ МНОЖИМОГО НА СТБ МНОЖИТЕЛЯ

MOV А.Н J(А)-СТБ МНОЖИТЕЛЯ



0647 СППООЭ

064А 47

0648 F1 064С 84 064D 4F 064Е D25206

0651 04

0652 65

0653 2Е00

0655 Dl

0656 19

0657 no

0658 03

0659 С9 0000

CALL У24А ;СЛОЖЕНИЕ СДВИНУТЫХ НА

MOV POP ABB MOV JNC INK

ПЕР2: MOV MVI POP DAB RNC INX RET END

BrA FSU H

ПЕР2 В

HtL UO D D

;(A.H.L)-ПРОИЗВЕДЕНИЕ 2 (ПР2) 8 РАЗРЯДОВ ПР1 И ПР2 f(B)-CTE ПР2 ;(A)-CTE ПР1

МО-СУММА СТЕ ПР1 И CPE ПР2

;УЧЕТ ПЕРЕНОСА В СТЕ ;(Н)-МЛЕ ПР2

;(В.Е)-СРЕ»МЛЕ ПР1

?УЧЕТ ПЕРЕНОСА В СТБ

В программе для получения промежуточных произведений формата 16-8 = 24 используется быстродействующая подпрограмма У24А. В результате программа У32Б на 34 % снижает время умножения по сравнению с программой У32А, но на 50 % увеличивает затраты памяти (с учетом длины подпрограммы У24А). В программе У32Б для временного хранения первого промежуточного произведения (из-за нехватки свободных регистров) использована область стека, причем для записи СРБ ПР1 и МЛБ ПР1 из регистровой пары (Н, L) в стек использована команда XTHL обмена вершины стека с регистровой парой (Н, L). Действие этой команды поясняется на рис. 1.6. Указатель стека (SP) перед выполнением

Стек

(SPJ

АДРЕС

ВОЗВРШ

СРБ ПР1

мт ПР1

(SP)

XTHL

Стек

МЛВ ПР1

СРВ ПР1

шрсс

ВОЗВРАТА

Рис. /.6. Действие команды XTHL



команды XTHL указывает на ячейку стека, в которую предыдущей командой PUSH В записан младший байт BL регистровой пары (В, С). При выполнении команды XTHL содержимое вершины стека по адресам (SP) и (SP) +1 переписывается в регистровую пару (Н, L), а содержимое регистровой пары (Н, L) - на место ВН, BL (ВН - старший байт регистровой пары (В, С)). Глубина стека в программе равна 4 байтам. Тестовые данные для программ У32А, У32Б приведены в табл. 1.7.

Табл. 1.7. Тесты умножения формата 16-16=32 (целые двоичные беззнаковые числа)

Представление чисел

шестнадцатеричное

десятичное

FFFF-FFFF=FFFE0001 65535 - 65535 = 4294836225

FFFF-0001=OOOOFFFF 65535- 1 =65535

FOOO • OOOF=O0OE 1 ООО 61440 - 15 = 921500

FF00-00FF=00FE010 65280- 255 = 16646400

5555-AAAA=38E31C72 211845- 43690 = 954408050

7FFF-7FFF=3FFF0001 32767 • 32767 = 1073676289

1.3.3. ЦЕЛЫЕ ЧИСЛА CO ЗНАКОМ

1.3.3.1. Форма! 8.8=16

Программа УД88 выполняет умножение, обращаясь к подпрограмме У88Б:

0660 ORG 660Н

0550 У88Е SET 550Н

УД88:

гПОйПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ЙВОИЧННХ ЧИСЕЛ В ЙОПОЛНИ-;ТЕЛЬНОН КОЙЕ ФОРМАТА 8*8=16.

;ВХ0ЙНЫЕ ПАРАМЕТРЫ!(С)-МНОЖИТЕЛЬ,(Е)-МНОЖИМОЕ.ВЫХОЙНОИ ;ПАРАМЕТР:(Н,Ь)-ПР0ИЗВЕДЕНИЕ.ИСП0ЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ, гСОХРАНЯЮТСЯ (С),(Е).ИСПОЛЬЗУЕТСЯ ПОДПРОГРАММА *У88Б*. !ОЦЕНКА!ДЛИНА-22 (+22 *У88Е») БАЙТ>ВРЕМЯ-НЕ БОЛЕЕ 528 ;ТАКТОВ (С УЧЕТОМ *У68Б*).

РВЫПОЛНЕНИЕ беззнакового УМНОЖЕНИЯ 8*8=16 0660 СВ5005 CALL У88Е ?(H,L)-ПРОИЗВЕДЕНИЕ

5ПРОВЕРКА ПРОИЗВЕДЕНИЯ НА О

0663 AF XRA А

0664 В4 ORA Н

0665 Б5 ORA L

0666 С8 RZ -.ЕСЛИ ПР0ИЗБЕДЕНИЕ=0



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0158
Яндекс.Метрика