[an error occurred while processing this directive]
эммм.. это случаем не про перевод BIN в BCD? Я написал процу (по тому куску из книжки) которая переводит n-байтное число. Может есть смысл ещё сжать... (+две процы)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 507 19 февраля 2005 г. 14:30
В ответ на: Привет всем! Колян, рулит твоя последняя прога, тебе удалось избавится от рег В, а это большое дело, когда меньше регистров задействовано. Молодца! отправлено nikolaus 19 февраля 2005 г. 08:38


;===
;IN: R0-src addr, R1-dst addr, R2-src_len_bit[R2<0..3>=0], R3-dst_len_byte

;B-tmp cnt reg
;R4-tmp shift

BinToBCD: mov B,R3
bintobcd_clr: mov @R1,#0
inc R1
djnz B,bintobcd_clr
dec R1

jmp btobcd_2

btobcd_0: mov B,R3
clr C
btobcd_1: mov A,@R1
addc A,ACC
da A
mov @R1,A
dec R1
djnz B,btobcd_1

mov A,R1
add A,R3
mov R1,A

mov A,R2
anl A,#7
jnz btobcd_3

btobcd_2: mov A,@R0
inc R0
mov R4,A

btobcd_3: mov A,R4
rlc A
mov R4,A

jnc btobcd_4
inc @R1

btobcd_4: djnz R2,btobcd_0

ret

;===
;IN: R0-addr, B-size*2
LCDPutBCD: clr F0
lcdpbcd_0: mov A,@R0
inc R0
jb B.0,lcdpbcd_1
swap A
dec R0
lcdpbcd_1: anl A,#0Fh
jb F0,lcdpbcd_2
jz lcdpbcd_3
setb F0
lcdpbcd_2: add A,#'0'
call LCDPutChar
lcdpbcd_3: djnz B,lcdpbcd_0
jb F0,lcdpbcd_4
mov A,#'0'
call LCDPutChar

lcdpbcd_4: ret


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru