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

0412 AF

fCY-O

sriHOrOEAHTHOE ДВОИЧНОЕ ВЫЧИТАНИЕ

0413 OA

ЦИКЛ: LBAX

0414 9E

;ВЫЧИТАНИЕ С УЧЕТОМ ПЕРЕНОСА

0415 02

STAX

0416 03

;УВЕЛИЧЕНИЕ АДРЕСА УМЕНЬШАЕМОГО

0417 23

гУВЕЛИЧЕНИЕ АДРЕСА ВЫЧИТАЕМОГО

;ПРОВЕРКА КОНЦА ЦИКЛА

0418 in

tCFi

0419 C21304

ЦИКЛ

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

гКОНЕЦ ВЫЧИТАНИЯ

041C CI

;ВОССТАНОВЛЕНИЕ АДРЕСА

041П 5A

E.ti

!ВОССТАНОВЛЕНИЕ СЧЕТЧИКА

041E C9

F£T

0000

Эта программа отличается от программы C8N тем, что вместо команды ADC М в ней задействована команда вычитания С переносом SBB М. Заметим, что обе рассмотренные программы применимы для операций и над дробными /V-байтными числами. Можно программы упростить и повысить их быстродействие, если исключить команды сохранения и восстановления регистров типа MOV D, Е и MOV Е, D, PUSH В и POP В. Необходимость этих вспомогательных команд определяется условиями использования данных подпрограмм в рамках программ более высокого уровня

Рассмотрим сложение знаковых Л/-байтных двоичных чисел, представленных в дополнительном коде. Старший бит СТБ числа используется как знаковый. При сложении знаковых чисел в дополнительных кодах, как и при сложении беззнаковых чисел, может возникнуть ошибка переполнения. Очевидно, что эта ошибка возможна лишь при сложении чисел с одинаковыми знаками, т. е. двух положительных или отрицательных чисел. При сложении таких чисел ошибка переполнения имеет место, если возникает единица переноса в знаковый разряд, т. е. значение знакового разряда суммы изменяется на противоположное. Отсюда следует простое правило выявления ошибки переполнения при сложении чисел в дополнительных двоичных кодах: ошибка имеет место, если знаки слагаемых совпадают, а сумма имеет противоположный знак.

Сложение двух целых /V-байтных двоичных чисел в дополнительном коде реализуется программой СДВЫ:



0420

0420 53

0421 С5

0422 AF

0423 OA

0424 8E

0425 ID

0426 CA2F04

0429 02 042A 03 042B 23 042C C32304

042F 5F

0430 OA

0431 AE

0432 7E

0433 02

0434 37

0435 FA3E04

0438 7E

0439 AB 043A 37 043E FA3F04 043E 3F 043F CI

0440 5A

0441 C9 0000

ORG 420H

C»8N:

ГПОДПРОГРАННА СЛОЖЕНИЯ ДВУХ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ В ДО-гПОДНИТЕЛЬНОМ КОДЕ ФОРМАТА 8«N.

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

;0ЦЕНКА!ДЛИНА-34 ЕАИТгВРЕМЯ НЕ ЕОЛЕЕ (148+56«N) ТАКТОВ.

МОУ В,Е ;(й)-СОХРАНЕНИЕ СЧЕТЧИКА

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

XRA А ?CY=0

гМНОГОБАИТНОЕ ДВОИЧНОЕ СЛОЖЕНИЕ ЦИКЛ! LDAX В

ADC М :<А)-ЕАИТ СУММЫ

гПРОЕЕР-КА КОНЦА ЦИКЛА BCR Е JZ ПЕР1

?ПР€ДОЛЖЕНИЕ ЦИКЛА STAX В INX В INX Н JMP ЦИКЛ

;ЕСЛИ КОНЕЦ ЦИКЛА

;ЗАПОМИНАНИЕ БАЙТА СУММЫ JУВЕЛИЧЕНИЕ АДРЕСА 1 ;УВЕЛИЧЕНИЕ АДРЕСА 2 ;ЗАЦИКЛИВАНИЕ ;ПРОВЕРКА ЗНАКОВ СЛАГАЕМЫХ НА СОВПАДЕНИЕ ПЕР1: МОУ Е.А ;(Е)-СОХРАНЕНИЕ СТЕ СУММЫ

LDAX В f<A)-CTE СЛАГАЕМОГО 1

STAX

ГПЕРЕПОЛНЕНИЕ! МОУ XRA STC JM

ПЕР2! CMC ПЕРЗ! POP

А»Е

ПЕР-2

;(М)-СТЕ СЛАГАЕМОГО 2

S ЗАПОМИНАНИЕ СТБ СУММЫ ;CY=1

;ЕСЛИ знаки РАЗНЫЕ

ЗНАКИ СУММЫ И СЛАГАЕМЫХ НЕ СОВПАДАЮТ? А>М ;(А)-СТЕ СЛАГАЕМОГО 2

Е !(Е)-СТЕ СУММЫ

;CY=1

ПЕРЗ ;ЕСЛИ ПЕРЕПОЛНЕНИЕ ;CY=0

В ; ВОССТАНОВЛЕНИЕ АДРЕСА 1

ErD !ВОССТАНОВЛЕНИЕ СЧЕТЧИКА

5ЕСЛИ CY=1fT0 ПЕРЕПОЛНЕНИЕ

Программа строится по аналогии с программой C8N и отличается от нее тем, что проверка конца цикла осуществляется до операции записи суммы очередных байтов на место использованного байта первого слагаемого. Такое изменение хода процедуры позволяет при сложении старших байтов сохранить знак первого слагаемого с целью использования его при анализе переполнения, выполняемом в соответствии с вышерассмотренным прави-



лом. Данная программа применима также для сложения дробных чисел.

При необходимости умножения и деления многобайтных двоичных чисел можно воспользоваться программами, приведенными в литературе [44].

1.2.3. ДЕСЯТИЧНЫЕ ЧИСЛА

Десятичные числа в микропроцессорах представляются, как отмечалось выше, в смешанной двоично-десятичной системе. При этом байт данных состоит из двух десятичных цифр формата 8 = 2- 4, а Л/-байтные данные - из 2Л-разрядного десятичного числа. Сложение двоично-десятичных чисел отличается от сложения двоичных чисел условиями формирования переноса между двоичными тетрадами [5, 16]. (Обозначим десятичную и шестнад-цатеричную цифры соответственно как аю и аш- Тогда условие двоично-десятичного переноса имеет вид

„ Я,ь, если 0<ai69; (, .74

-ta.e-f 6, если а,б>9.

Микропроцессор КР580 содержит команду десятичной коррекции DAA, реализующую условие (1.17), которая позволяет использовать для сложения двично-десятичных чисел команды сложения двоичных чисел. Для получения правильной двоично-десятичной суммы необходимо выполнить над результатом двоичного сложения команду десятичной коррекции DAA.

Сложение Л-байтных целых беззнаковых двоично-десятичных чисел реализуется программой C8N10:

0450 org 450н

c8n10:

?подпрограмма десятичного сложения ДВУХ ЦЕЛЫХ ЕЕЗЗНАКО-;ЪШ ДВОИЧНО-десятичных (код 8421) чисел формата (2*4) »N. ;ВХОДНЫЕ ПАРАМЕТРЫ:(в»с)-адрес МЛЕ слагаемого 1>(H5L)-г-адрес МЛЕ слагаемого 2г(е)-количество N ЕАИТ ЧИСЛА. ;ВЫХОДНЫЕ ПАРАМЕТРЫ:(в.с)-адрес МЛЕ СУММЫ (совпадает с ;АДРЕС0М МЛЕ слагаемого 1) .СУ:=1-признак переполнения

: СУММЫ. используются все РЕГИСТРЫ» сохраняются (в г о»

;(е).глубина сгека-2.

гОЦЕНКА:длина-16 ЕАИТгБРЕМЯ-(45+50«Ы) тактов.

0450 53 МОУ ВтЕ j(d)-сохранение счетчика

0451 с5 push в ; сохранение адреса 1

0452 af xra а ;cy=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.0119
Яндекс.Метрика