Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
1

Сложение BCD чисел.

02.11.2010, 02:05. Просмотров 4096. Ответов 3
Метки нет (Все метки)

Доброго Вам времени суток.

Появилась потребность в расчете BCD чисел.
АппНот от Atmel.
;**** A P P L I C A T I O N N O T E A V R 2 0 4 ************************
;*
;* Title: BCD Arithmetics
Показался уж больно корявый (Раньше и так "хавал"). Пришлось переписывать.
Вот результат. Уважаемые гуру, спецы, ... и коллеги, гляньте на досуге. Может где грабли не прикидал листьями?
Просьба не пинать ногами, если что не так.

Код
;.def  AL  = r16
;.def  AH  = r17

PROC fAdd_BCD
in    AH, SREG    ; Seve CF into AH bit0
subi  AL,   -6    ; Add 6 to LSD, Pre correction
;(!!! inverse logic HF omd CF, Becouse use (subi AL, -(x)) instead of (add AL,(x) )
brhc (pc+1)+1+1   ; if half carry set (LSD > 9), needid correction
sbrs  AH, HF    ; if previous carry not set
subi  AL, 6   ;  cancel Pre correction
;
subi  AL, -0x60 ; Add 6 to MSD, Pre correction
;(!!! inverse logic HF omd CF, Becouse use (subi AL, -(x)) instead of (add AL,(x) )
brcc (pc+1)+1+1   ; if carry set (MSD > 9), needid correction
sbrs  AH,   CF  ; if previous carry not set
subi  AL, 0x60; cancel Pre correction
;
ret
ENDP fAdd_BCD

PROC fAddBCD
add   AL,   AH
rjmp  fAdd_BCD
ENDP fAddBCD

PROC fAdcBCD
adc   AL,   AH
rjmp  fAdd_BCD
ENDP fAdcBCD
Жду Ваших коментов и предложений.
Удачи.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2010, 02:05
Ответы с готовыми решениями:

Сложение/вычитание 4-разрядных bcd-чисел
Всем доброго времени суток! Совсем запуталась с решением данной задачи, поэтому без вашей помощи не...

Задача по MCS-51, ср. арифм неупаков. BCD чисел
Помогите с решением данной задачи: В РПД начиная с адреса 40h находится массив из 5 чисел...

Сложение упакованных BCD чисел
Мне требуется сложить два упакованных BCD числа: 5643 и 9127 Вот что я сделал: .model small...

Сложение двух BCD чисел
При проверке программы (через Тасм в проге фар, выдаёт ошибку в выводе результат на экран), а...

3
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 87
05.02.2012, 19:07 2
Гениальный код. Идеал лаконичности. На главную!
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
05.02.2012, 19:11 3
Есть ли на С либа или еще какая-нибудь приблуда для работы с BCD числами?
Сложить? Вычесть? И т.д. и т.п.
А то делаю вставки на ASM-е.
Может есть хоть что-то?
0
0 / 0 / 0
Регистрация: 24.07.2020
Сообщений: 1
24.07.2020, 19:58 4
спасибо, код помог.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2020, 19:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сложение неупакованных bcd-чисел
Всем Привет!! Возникла проблема со сложением неупакованных bcd-чисел(принцип “младший байт по...

Сложение двух BCD чисел
Помогите с задачей, нужно чтобы вводилось двухзначное число, я сделал что вводится однозначное...

Ввод/вывод, сложение BCD чисел
задать с клавиатуры два BCD числа, числа двухразрядные. выполнить сложение BCD чисел.....

Задача на сложение двух bcd чисел
Народ, подскажите как исправить...у меня задача на сложение двух bcd чисел, я прогу написал, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.