Convert to ASCII

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Convert to ASCII

Сообщение pokk »

Кто какими набором функциями пользуется для преобразования числа в строку?

У меня что-то набор большой получается, и когда в следующий раз возникает потребность преобразовать число в строку, то вечно какой нибудь функции не хватает :evil: .

В частности интересует с отображением нулей перед значением, или нет.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Convert to ASCII

Сообщение BOB51 »

Для ассемблера - это табличная перекодировка...
:dont_know:
Реклама
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Convert to ASCII

Сообщение akl »

Для ASCII преобразование в тетрады+0x30. Незначащие 0 заменяются кодом 0x20. Типа такого.
Спойлер

Код: Выделить всё

;Преобразование HEX значения R8:R9 в BCD R18,R19 и преобразование в ASCII - 
HEX16_BCD4_ASCII:
	CLR	R18		; BCD OUT 1'000,100
	CLR	R19		; BCD OUT 10,1

	LDI	R16,16
GO_HEX:
	subi r19,-0x33	;add 0x33
	sbrs r19, 3	;if carry to bit 3
	subi r19, 3	;subtract 3
	sbrs r19, 7	;if carry to bit 7
	subi r19, 0x30	;subtract 0x30

	subi r18,-0x33      ; \n" /*add 0x33*/
	sbrs r18, 3         ; \n" /*if carry to bit 3,*/
	subi r18, 3         ; \n" /*subtract 3*/
	sbrs r18, 7         ; \n" /*if carry to bit 7,*/
	subi r18, 0x30      ; \n" /*subtract 0x30*/

	LSL R9
	ROL	R8			;shift input*/

	ROL r19
	ROL r18		; \n" /*shift out buffer*/

	DEC R16		;\n"
	BRNE GO_HEX	;repeat for all bits*/

	MOV	R16,R18
	MOV	R17,R19
	ANDI	R19,$0F
	SUBI	R19,-$30	;единицы для индикатора
	SWAP R17
	ANDI	R17,$0F
	SUBI	R17,-$30	;десятки для индикатора
	ANDI	R18,$0F
	SUBI	R18,-$30	;сотни для индикатора
	SWAP R16
	ANDI	R16,$0F
	SUBI	R16,-$30	;тысячи для индикатора

	MOV	I1000,R16
	MOV	I100,R18
	MOV	I10,R17
	MOV	I1,R19
	RET
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: Convert to ASCII

Сообщение pokk »

С самим алгоритмом преобразованием все понятно, вся загвоздка начинается когда надо то 3 нуля вывести перед числом то четыре нуля, то хвост отбросить, то точку где-то в середине воткнуть, ну и все тоже самое для отрицательных чисел.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Convert to ASCII

Сообщение BOB51 »

Это уже относится к опциям редактирования/разметки страницы/формата.
8)
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Convert to ASCII

Сообщение ARV »

на Си все проблемы решаются при помощи единственной функции printf.
если надо экономно - itoa или аналоги ltoa и т.п. (нули дописывать слева самостоятельно).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Ответить

Вернуться в «Разные вопросы по МК»