Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Деление двоичных чисел.




X – 16-ти разрядное делимое (XH, XL)

Y – 8-ми разрядный делитель

Z – 8-ми разрядное частное

При выполнении делении необходимо исключить возможность деления на 0. Если для представления частного потребуется более одного слова, то возникает переполнение. Поэтому перед выполнением деления необходимо проверить условие – делитель должен быть больше старшего байта делимого.

 

 

Алгоритм деления по методу итераций с восстановлением остатка.

Пример:

X=19; y=4.

X=00010011

Y=0100

Программная процедура деления:

 


AL REG R3

AH REGR4

MOV R2,#8; счетчик циклов

MOV AL,#DATA; делимое

MOV AH,#DATA

MOV B, #DATA; делитель

CLR C; обнулим флаг заёма

MOV A, AH

SUBB A,B

JZ OV_DIV; AH=B

JNC OV_DIV; AH>B

LOOP:

CLR C

RLC A

MOV AL,A; сдвиг

MOV A,AH; делимого

RLCA

MOV AH,A

 

SUBB A,B

MOV AH,A

JNC digC1; переход на занесение 1 в Сi

ADD A,B; восстановление

MOV AH,A

JMP M1

Digc1: ORL AL,#1

M1: DJNZ R2, LOOP

;вывод результата

OV_DIV:…; вывод сообщения о переполнении


 


16. Арифметическая обработка многобайтных операндов в микропроцессорах и микроконтроллерах с 8 – разрядной архитектурой.

16 разрядные числа A и B: AH AL, BH, BL

AL+BL=>CL; С- флаг переноса

AH+BH+CL=>CH

 

Вычитание

A=0001 0011 0000 00012 = 130116

B=0000 0101 0000 00112 = 050316

 


1. AL-BL

 

11111101

111111102 = [-0316]доп. C=1

 

2. AH-BH

 

11111010 * - последний разряд не 1 из-за заёма

00001101 = [0D16]


Программная процедура сложения/вычитания:

Addr_A EQU 10h

Addr_B EQU 20h

MOV R2, #2;обработка 2-х байтов

MOV R0, #Addr_A

MOV R1, #Addr_B

CLR C

loop: MOV A, @R0

ADD A, @R1; SUB для вычитания, ADDC и SUBB для ДД чисел

MOV @R0, A

inc R0

inc R1

DJNZ R2, loop

 


17. Сложение-вычитание многобайтных 2-10 чисел в 8-разрядных микропроцессорах и микроконтроллерах.

Сложение многобайтных 2-10 чисел.

1) Складываем L-байты;

2) Коррекция. (DDA – коррекция содержимого аккумулятора после сложения).

3) Складываем H-байты + возможный перенос (ADC);

4) Коррекция.

Алгоритм коррекции состоит из двух шагов:

а) Если AС = 1 (дополнительный перенос между тетрадами), или младшая тетрада больше 9, но меньше 15, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;

б) Если C = 1, или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.

Пример: 2985 + 4936 = 7921


1) 10000101

00110110

 

2) 10111011

0110

0110

\ 2 / \ 1 /

 

 

3) 00101001

1 (перенос)

 

4) 01110011

0110

0110

\ 7 / \ 9 /

 


Вычитание многобайтных 2-10 чисел.

1) Вычитаемое заменяем дополнительным кодом.

2) Добавляем уменьшаемое.

3) Проводи коррекцию.

4) Повтор шагов 1-3 для всех байтов 2-10 чисел.

(-35) доп = 65 – дополнение до десятки.


Пример 1. 0493 – 0298 = 0195

+ 1 9A +68 02 - дополнение до BL +93   +FE +04 9B +06 - коррекция A1 +60 101

этот перенос указывает на то, что получен результат в прямом коде.

Пример 2. 0298 – 0493 = 9805

+ 1 9A +60 07 - дополнение до BL +98 9F +06 A5 +60 + 1 9A +FC +02   нет переноса - значит результат получен в дополнительном коде  

 

Программная процедура вычитания ДД чисел

 

addr_A EQU 10h

addr_B EQU 20h

mov R2,#2; число повторений

mov R0,#addr_A

mov R1,#addr_B

setb C; перенос - 1

loop: mov A,#99h

addc A,#0

subb A,@R1

add A,@r0; + 1-ый операнд

DA A; коррекция

mov @R0,A; сохраняем результат вместо 1го операнда

inc R0

inc R1

djnz R2,loop

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных