Главная Кремниевые микросхемы 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 его NEW SUM (новой суммой). Затем находим число N+1 и проверяем, меньше ли оно числа 201. Если да, то процесс вычислений продолжается. Если N+1=201, выполнение программы прекращается, а полученное значение S будем считать искомым результатом . Алгоритм вычислений чаще легче понять, чем представить его специальной диаграммой, называемой схемой алгоритма'. Схема алгоритма сложения для рассматриваемой задачи приведена на рис. 11.2. Как следует из рисунка, схема алгоритма - это ориентированная сеть с вершинами, различных типов. Как превратить схему алгоритма в программу? На языке БЕЙСИК рассматриваемая программа выглядела бы следующим образом: 10LETS = 0 20 LETN = 0 30 LETS=S-i-N 40 LETN=N--I 50 IF N<201 GO TO 30 00 PRINT S 70 END После прохождения программы выпе-чатывается ответ. Просмотрим еще раз все упоминавшиеся ранее команды для воображаемого микропроцессора, описанного в тексте, после чего станет ясно, можно ли написать подобную программу для него в шестнадцатеричном коде; Рис. 11,2. Схема алгоритма сложения целых чисе.ч от I до 200 Команда Символ Мнемокод операции LOAD (ЗАГРУЗИТЬ) аккумулятор LDA ADD (СЛОЖИТЬ) без переноса ADD ADD (СЛОЖИТЬ) с переносом ADC М-А М+А-А М+А-1-CF-vA Подобные диаграммы ранее назывались блок-схемами алгоритмов За-,СЬ и далее используется название по ГОСТ. {Прим. пер.) Команда' STORE (ЗАПОМНИТЬ) содержимое аккумулятора INCREMENT (УВЕЛИЧИТЬ) содержимое аккумулятора COMPLEMENT (ДОПОЛНЕНИЕ ДО I) содержимого аккумулятора AND (логическое И) содержимого памяти и аккумулятора OR (логическое ИЛИ) содержимого памяти и аккумулятора XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) содержимого памяти и аккумулятора CLEAR CARRY FLAG (ОЧИСТИТЬ ФЛАГ ПЕРЕНОСА) CLEAR ACCUMULATOR (ОЧИСТИТЬ АККУМУЛЯТОР) SHIFT (СДВИГ) содержимого аккумулятора вправо SHIFT (СДВИГ) содержимого аккумулятора влево STOP (СТОП) Продолжение Мнемокод Символ операции STA А->М INC А+1-А СОМР А-А AND М-А->А OR М -t-A-A XOR М ф А->А CCF О-СР CLA 0-А SAR О-> 765432 Ю->СР SAL CF-765432100 BRK PC stops где М - ячейка памяти, А - аккумулятор, CF - флаг переноса, PC - счетчик команд. Отметим также ранее упоминавшиеся флаги: флаг переноса, флаг нуля, флаг переполнения, флаг знака или флаг отрицательности. Они будут выставляться (устанавливаться) или сбрасываться в соответствии с результатом каждой выполненной арифметической или логической операции. Например, для операции ADD можно рассмотреть следующие случаи установки флагов: 1) установить флаг переноса, если есть перенос из старшего (седьмого) разряда, л сбросить его, если переноса нет; 2) установить флаг нуля, если результат - нуль, и сбросить его в противном случае (если результат не равен ну,/1ю); 3) установить флаг переполчения, если значение седьмого разряда результата отличается от значения седь- У читателя не должно сложиться впечатление, что приведенный список наиболее употребительных команд - это все, чем располагает типовой микропроцессор. Например, список команд микропроцессора Intel 8080 включает в себя 111 наименований (см. [б]), (Прим. пер.) мого разряда любого операнда, и сбросить флаг переполнения в противном случае; 4) установить флаг знака, если значением седьмого разряда результата служит единица (сигнал о том, что число отрицательное), и сбросигь флаг знака, если значение седьмого разряда результата -нуль (сигнал о том, что число положительное). При программировании для конкретного микропроцессора Вам следует внимательно изучить набор его команд, чтобы выяснить, какие в нем содержатся флаги и какие команды на какие из флагов влияют. Между разными типами микропроцессоров в этом смысле различия весьма существенны. Информация о том, какие команды на какие флаги оказывают влияние, для рассматриваемого микропроцессора может быть представлена в следующем виде: Устанавливаемые Команда LOAD аккумулятор ADD без переноса ADD с переносом STORE содержимое аккумулятора INCREMENT содержимое аккумулятора COMPLEMENT содержимое аккумулятора AND памяти и аккумулятора OR памяти и аккумулятора XOR памяти и аккумулятора CLEAR CARRY FLAG CLEAR ACCUMULATOR SHIFT правый SHIFT левый STOP Здесь используются следующие обозначения: - на флаг влияния не оказывается; О - флаг устанавливается в 0; 1-флаг устанавливается в 1; *-флаг устанавливается или сбрасывается в зависимости от результата операции; С - флаг переноса; Z-флаг нуля, О-флаг переполнения; S - флаг знака. К этому набору команд добавим еще три команды, ни одна из которых на состояние флагов не влияет: BRANCH UNCONDITIONAL (ПЕРЕХОД БЕЗУСЛОВНЫЙ), BRANCH ON ZERO (ПЕРЕХОД ПО НУЛЮ) и
|
© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения |