Доставка цветов в Севастополе: 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


1 rV

cv=o

• • • 1

Рис. 1.4. Вычислительная схема операций сложения (вычитания)

Л-байтных чисел

пользуется для циклического построения программ. Возможность создания программ на основе приведенной схемы определяется наличием в наборе команд микропроцессора команд сложения (вычитания) с переносом.

Вычислительные схемы дают общее, развернутое в пространстве представление о ходе вычислительного процесса на основе взаимосвязи между структурой данных и операциями (функциями), выполняемыми над этими структурами. В этом заключается основное отличие таких схем от схем алгоритмов, описывающих лишь последовательность операций и умалчивающих о структурах данных. Вычислительные схемы полезны для уяснения и общего описания решаемой задачи.

При сложении двоичных беззнаковых чисел может возникнуть ошибка переполнения. Признаком такой ошибки является значение бита переноса, равное CY = 1 после сложения СТБ слагаемых. При вычитании беззнаковых чисел разность может стать отрицательным числом (говорят, что множество беззнаковых чисел незамкнуто относительно операции вычитания). Признаком этого нарушения также является значение бита переноса CY= 1 после вычитания СТБ вычитаемого из СТБ уменьшаемого (CY= 1 вследствие заема из несуществующего {N -\- 1)-го байта уменьшаемого). Аналогичные ошибки возникают при сложении (вычитании) двоично-десятичных чисел и двоичных чисел со знаком. Приемы фиксации этих ошибок рассматриваются ниже при описании соответствущих программ сложения и вычитания.



1.2.2. ДВОИЧНЫЕ ЧИСЛА

. Пусть Л/-байтные (N < 256) беззнаковые целые двоичные числа размещены в оперативной памяти микропроцессорной системы, причем каждое Л/-байтное число расположено в своей локальной области памяти от МЛБ к СТБ в порядке возрастания адресов. Сложение двух таких чисел реа-изует программа C8N (название программы содержит аббревиатуры типа операции и формата данных):

о«оо

0400 53

0401 С5

0402 AF

0403 OA

0404 8Е

0405 02

0406 03

0407 23

0408 in

0409 С20304

040С CI 040Г1 5А 040Е С9 0000

ORG 400Н

C8N:

?«««»»»««»«»»»«)(»»«»»«»»»»»)()(»»»»»»»»»»»«-»»»»»»)(»»»««»)(«

;ПОДПРОГРАММА СЛОЖЕНИЯ ДВУХ ЦЕЛЫХ БЕЗЗНАКОВЫХ ДВОИЧНЫХ ; ЧИСЕЛ ФОРМАТА B»N.

гВХОДНЬЕ ПАРАМЕТРЫ: (В>С>-АДРЕС МЛБ СЛАГАЕМОГО 1г(Н>1..)-;-АДРЕС МЛЕ СЛАГАЕМОГО 2f(Е)-КОЛИЧЕСТВО N БАЙТ ЧИСЛА. ?ЕЫХОДНЬЕ ПАРАМЕТРЫ;(ЕгС)-АДРЕС МЛЕ СУММЫ (СОВПАДАЕТ С !АДРЕСОМ МЛЕ СЛАГАЕМОГО 1>)CY=1-ПРИЗНАК ПЕРЕПОЛНЕНИЯ гСУММЫ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ»СОХРАНЯЮТСЯ (ЕгС)fЮ. гГЛУЕИНА СТЕКА-2.

гОИЕНКАгДЛИНА-15 ЕАЙТ»ВРЕМЯ-<45+46»N) ТАКТОВ.

MOV ЬгЕ f(В)-СОХРАНЕНИЕ СЧЕТЧИКА

PUSH В ; СОХРАНЕНИЕ АДРЕСА 1

XRA А JCY=0

;МН010БАЙТН0Е двоичное СЛОЖЕНИЕ ЦИКЛ: LBAX В

ABC М

STAX В

INX В

INX Н гПРОВЕРКА КОНЦА ЦИКЛА

ИСК Е

JNZ ЦИКЛ ;КОНЕЦ СЛОЖЕНИЯ

POP В

MOV EjB

fСЛОЖЕНИЕ С УЧЕТОМ ПЕРЕНОСА

SУВЕЛИЧЕНИЕ АДРЕСА 1 fУВЕЛИЧЕНИЕ АДРЕСА 2

JЗАЦИКЛИВАНИЕ

SВОССТАНОВЛЕНИЕ АДРЕСА 1 ;ВОССТАНОВЛЕНИЕ СЧЕТЧИКА ;ЕСЛИ CY=lfTO ПЕРЕПОЛНЕНИЕ

В этой программе регистровые пары (В, С) и (И, L) используются для последовательной адресации байтов соответственно первого и второго слагаемых, а регистр (Е) - в качестве счетчика N байтов. Процедура сложения, согласно схеме рис. 1.4, реализуется в виде цикла сложения i-x байтов и проверки цикла по содержимому счетчика байтов. Непосредственное сложение двух байтов происходит путем считывания байта первого слагаемого из памяти в аккумулятор микропроцессора и сложения с переносом содержимого аккумулятора с соответствую-



шим байтом второго слагаемого, после чего результат сложения из аккумулятора засылается в память на место использованного байта первого слагаемого. Если при сложении возникает ненулевой перенос в следующий байт, этот перенос учитывается при сложении очередных байтов слагаемых. Заметим, что начальный перенос перед сложением первых байтов слагаемых CY=0, а конечный перенос - - после сложения СТБ чисел - определяет признак переполнения. Программа реализована (как и все последующие программы) в виде подпрограммы, что позволяет легко использовать ее в программах более высокого уровня посредством команд вызова подпрограмм типа CALL. Количественная характеристика программы содержит ее длину в байтах и предельное время выполнения в машинных тактах. Расчет времени выполнения программы сделан в соответствии с быстродействием команд микропроцессора, указанным в табл. П. 2.

В дальнейшем не будем подробно останавливаться на действиях, описанных в тексте программ, поскольку все они имеют подробный заголовок (ограничен двумя рядами звездочек), строки-комментарии, определяющие функциональное назначение очередного фрагмента программы, и поля-комментарии, поясняющие роль команд в решении задачи. (В прил. 1 дано развернутое описание набора команд микропроцессора КР580, и читатель, желающий разобраться в детальном описании программы, должен владеть этим набором.) При описании программ будут отмечаться лишь характерные их особенности и связи со структурами обрабатываемых данных.

Вычитание двух УУ-байтных целых беззнаковых двоичных чисел реализуется программой B8N:

0410 ORG 410Н

EBNs

; ПОДПРОГРАММА ВЫЧИТАНИЯ ЙЕУХ «ИЫХ ВЕЗЗНАКОВЫХ ЙВОИЧНЫХ SЧИСЕЛ ФОРМАТА B«N.

;ВХОЛНЫЕ ПАРАМЕТРЫ:(В.С)-АДРЕС мле УМЕНЬШАЕМОГО,(H.L>-;-АДРЕС МЛВ ЕЫЧИТАЕМОГОг (ЕЯаМИЧЕСТВО N БАЙТ ЧИСЛА., ВЫХОДНЫЕ ПАРАМЕТРЫ:(EjC)-АДРЕС мле РАЗНОСТИ (СОВПАДАЕТ ;С АДРЕСОМ мле УМЕНЬШАЕМОГО),CY=l-nPH3HAK ОТРИЦАТЕЛЬНО-?Г0 РЕЗУЛЬТАТА.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ»СОХРАНЯЮТСЯ ;(BfC>p<E).ГЛУБИНА СТЕКА-2.

!0ЦЕНКА!ДЛИНА-15 БАЙТ>ВРЕМЯ-(45+«6»N) ТАКТОВ.

0410 53 MOV ВтЕ ;(D>-СОХРАНЕНИЕ СЧЕТЧИКА

0411 С5 PUSH В ГСОХРАНЕНИЕ АДРЕСА



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.0129
Яндекс.Метрика