0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 124
1

Операции вычитания в BCD кодах

29.11.2010, 12:39. Показов 5505. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто ни будь сталкивался с мат. операциями с двоично-десятичными кодами?
Мне надо, например от двух BCD-цифр 1,0 отнять 3 и получить 0,7. Может кто-то уже реализовывал это на асме или подскажет алгоритм?
Заранее спасибо =)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2010, 12:39
Ответы с готовыми решениями:

Составить программу сложения, вычитания, умножения двоичных чисел в прямом, обратном и дополнительных кодах
Составить программу сложения,вычитания, умножения двоичных чисел в прямом, обратном и...

Используя только битовые операции и операции арифметического сложения и вычитания вычислить выражение
Даны числа a и b. Используя только битовые операции и операции арифметического сложения и...

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и...

Реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения, вычитания, умножения, деления
Необходимо реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения,...

6
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
29.11.2010, 13:04 2
Если BCD не упакованные (то есть 1 байт = 1 зарряд),
то для кажного разряда производишь вычитание с учетом переноса,
если провернулись через 0, то производим коррекцию, то есть вычитаем из разряда число 0xF6 и выставляем флаг переноса.
Сложение аналогично.
Умножение можно "столбиком" реализовать.
С делением лучше не заморачиваться если не очень нужно.
А вообще есть куча готовых библиотек - нужно только погуглить.
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
29.11.2010, 14:17 3
Код не проверял. Взят с аппнота Атмела.
Код
;################################## FUNCTION ###################################
;Name of function:
; fSubBCD
;Input:
; AL, AH
;Return:
; AL = AL - AH
;Dessription:
;2-digit packed BCD subtraction
;This subroutine subtracts the two unsykned 2-digit BCD numbers
;

PROC fSubBCD
sub   AL,AH   ;subtract the numbers binary

in      AH, SREG      ; Seve CF into AH bit0

;IF HF ==1 then LSD = LSD - 6
;IF CF == 1 then MSD = MSD - 6

sbrc   AH,   HF      ;if half carry clear skip
subi   AL,$06   ; LSD = LSD - 6
;
sbrc   AH,   CF      ;if previous carry clear skip
subi   AL,$60   ; MSD = MSD - 6
ret
ENDP fSubBCD
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
29.11.2010, 14:34 4
Странно. Обычно формат BCD используется как промежуточное звено при индикации или передаче информации. А считать удобнее обычными двоичными числами. Неужели обязательно нужно считать в BCD ?
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 124
29.11.2010, 14:34 5
Спасибо, я уже написал )

Код
         LDI      R16,1
LDI      R17,7
LDI      R18,0
LDI      R19,5
SUBI   R19,7
BRCC   PC+3
SUBI   R19,0xF6
SEC
SBCI   R18,0
BRCC   PC+3
SUBI   R18,0xF6
SEC
SBCI   R17,0
BRCC   PC+3
SUBI   R18,0xF6
SEC
SBCI   R16,0
BRCC   PC+3
SUBI   R18,0xF6
SEC
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 124
29.11.2010, 14:38 6
dsodir
У меня в BCD время записано, и работаю я с DS1307. Проще уже работать в одном формате )
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
29.11.2010, 21:43 7
тоже стоял перед таким выбором. остановился на том что и часы и будильник хранятся в упакованном bcd. ну и пара функций для сложения и вычитания. еще сравнение.
0
29.11.2010, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2010, 21:43
Помогаю со студенческими работами здесь

Составить микропрограмму "Алгебраического вычитания в модифицированных дополнительных кодах"
Нужна помощь по составлению микропрограммы Алгебраического вычитания в модифицированных...

Операции с BCD числами. Сложение и вычитание
Ввести с клавиатуры два десятичных числа произвольной размерности. Выполнить двоично-десятичное...

Выполнить операции BCD-AT над квадратными матрицами
Очень нужна помощь с решением. Выполнить операции (здесь A, B, C, D — квадратные матрицы порядка...

Операции целочисленного сложения и вычитания
Где можно найти подробную инфу об этих операциях?

Переопределение операции вычитания строк
Нужно переопределить операцию вычитания строк. То есть из первой строки вычитаются все...

Операции сложения/вычитания с ComboBox
Допустим есть класс, в котором содержится объект с типом Float, и он записывается в combobox1 и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru