Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
вот зануда))) если на камне нет набортного двухбайтового деления то выделение декад из инта методом последовательного деления на 10000,1000,100,10 занимает куда больше времени чем стандартное BCD преобразование.
Отправлено
колян безпарольный 13 ноября 2009, г. 01:48
В ответ на:
О! Раз появился - ответь-ка за базар ПРЕДМЕТНО --> отправлено пользователем
MBedder 13 ноября 2009, г. 01:38
на, дарю, для авр
[code]
;Перевод 2ух байтового числа в 5 цифр для семисегментного индикатора
;Вызов
; void int2bcdASM(char *dst,int i);
;
;308 циклов 74 байт
MODULE int2bcd
RSEG CODE
PUBLIC int2bcdASM
int2bcdASM:
;R16-указатель на конечный буфер
;R18:R19-исходная величина
;R20,R21,R22- переходные регистры
mov R30,R16
mov R31,R17
ldi R20,0
ldi R21,1
mov R22,R20
; mov R31,R20
Lab0: ;цикл
subi R20,-$33 ;add 0x30
sbrs R20,7
subi R20,$30 ;add 0x30
sbrs R20,3
subi R20,$03 ;add 0x03
tst R22
breq Lab1
subi R21,-$33 ;add 0x30
sbrs R21,7
subi R21,$30 ;add 0x30
sbrs R21,3
subi R21,$03 ;add 0x03
Lab1:
lsl R18
rol R19
rol R20 ;a
rol R21 ;b
rol R22 ;c
brcc Lab0
;закончили, перенести значение в конечный буфер
andi R22,0x0F ;
st Z, R22
mov R16,R21
swap R21
andi R21,0x0F
std Z+1,R21
andi R16,0x0F
std Z+2,R16
mov R16,R20
swap R20
andi R20,0x0F
std Z+3,R20
andi R16,0x0F
std Z+4,R16
RET
END
[/code]
Составить ответ | Вернуться на конференцию.
Ответы
- А вот тебе аллаверды для камня, у которого "нет набортного двухбайтного деления" (на самом деле оно есть, но было с отвращением отброшено из-за тормознутости). 13 слов, 19 тактов - твое "быстрое BCD" ахнуло и тупо удавилось :)) --> - MBedder (13.11.2009, 02:59:37 80.92.96.19, пустое, ссылка)
- дауж)) - колян безпарольный (13.11.2009, 11:06:5 193.200.150.125, пустое)
- Ответ: - колян безпарольный (13.11.2009, 01:48:59 193.200.150.125, 1607 байт)