Однако, все равно, Вам очень признателен.


еще и регистры опять заняты.странно, в AVRASM.CHM, входящем в комплект Avrstudio 4.1x для каждой подобной команды написаноСКАЗОЧНИК писал(а):Тупо не могу найти информацию
This instruction branches relatively to PC in either direction (PC - 63 ≤ destination ≤ PC + 64).

Код: Выделить всё
; Переделанная под себя программа преобразования от UMUP
; http://electronix.ru/forum/index.php?s=&showtopic=10934&view=findpost&p=324208
; изменил по предложению avreal!!!
; формат старший-младший!!!
LDS R17,$70 ; HEX IN
CLR R30 ; BCD OUT 1'000,100
CLR R31 ; BCD OUT 10,1
LDI R28,8
bin8_bcd3:
subi r31,-0x33 ;add 0x33
sbrs r31, 3 ;if carry to bit 3
subi r31, 3 ;subtract 3
sbrs r31, 7 ;if carry to bit 7
subi r31, 0x30 ;subtract 0x30
subi r30,-0x33 ; \n" /*add 0x33*/
sbrs r30, 3 ; \n" /*if carry to bit 3,*/
subi r30, 3 ; \n" /*subtract 3*/
sbrs r30, 7 ; \n" /*if carry to bit 7,*/
subi r30, 0x30 ; \n" /*subtract 0x30*/
LSL R17 ;shift input*/
rol r31
rol r30 ; \n" /*shift out buffer*/
dec R28 ;\n"
brne bin8_bcd3 ;repeat for all bits*/
MOV R29,R30 ; сотни в R29
MOV R30,R31 ; десятки и единицы в R30
SWAP R30 ; десятки в мл. тетраду
ANDI R30,$0F ; выделить десятки
ANDI R31,$0F ; выделить единицы
RETКод: Выделить всё
; -------- Проверка выхода за приделы занчения ----------
cpi ZUUM, 125 ; Сравниваем с наибольшим
brsh NORM ; Если больше, то уходим на исправление
rjmp TT
NORM: ldi ZUUM, 125 ; Исправляем и уходим дальше
rjmp TT
cpi ZUUM, -55 ; Сравниваем с наименьшим
brlo NORMM ; Если мньше, то уходим на исправление
rjmp TT
NORMM: ldi ZUUM, -55
; -------- Конец проверки ----------
TT:применяется команда neg и все как для положительногоЕсли ушла ниже НУЛЯ

Код: Выделить всё
cpi ZUUM, 125 ; Сравниваем с наибольшим
brsh NORM ; Если больше или равно, то уходим на исправление
cpi ZUUM, -55 ; Иначе, Сравниваем с наименьшим
brlo NORMM ; Если мньше, то уходим на исправление
rjmp TT ; Иначе выходим вообще
NORM: ldi ZUUM, 125 ; Исправляем и уходим
rjmp TT
NORMM: ldi ZUUM, -55
Теперь все разбирать. 
BRLO – Branch if Lower (Unsigned)
Нет, надо проинвертировать и затем +1.СКАЗОЧНИК писал(а):чтобы перевести его в обычное число надо вычесть единицу, а затем уже инвертировать...
Код: Выделить всё
cpi ZUUM, 125 ; Сравниваем с наибольшим
brge NORM ; Если больше или равно, то уходим на исправление
; brsh NORM ; Если больше или равно, то уходим на исправление
cpi ZUUM, -55 ; Иначе, Сравниваем с наименьшим
brlt NORMM ; Если мньше, то уходим на исправление
; brlo NORMM ; Если мньше, то уходим на исправление
rjmp TT ; Иначе выходим вообще
NORM: ldi ZUUM, 125 ; Исправляем и уходим
rjmp TT
NORMM: ldi ZUUM, -55
RJMP PC-1
TT:
RJMP TT
akl писал(а):BRLO осуществляет беззнаковое ветвление.
akl писал(а):проинвертировать и затем +1.
А я два дня голову ломал...

akl писал(а):Проще пользоваться имеющимися командами работы со знаковыми числами.
Код: Выделить всё
sbrc temp,MSB_BIT
neg temp
cpi temp,...
akl писал(а):СКАЗОЧНИК писал(а):чтобы перевести его в обычное число надо вычесть единицу, а затем уже инвертировать...
Нет, надо проинвертировать и затем +1.
akl писал(а):Проще пользоваться имеющимися командами работы со знаковыми числами.