Страница 1 из 1

Convert to ASCII

Добавлено: Ср мар 15, 2017 10:42:04
pokk
Кто какими набором функциями пользуется для преобразования числа в строку?

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

В частности интересует с отображением нулей перед значением, или нет.

Re: Convert to ASCII

Добавлено: Ср мар 15, 2017 10:54:27
BOB51
Для ассемблера - это табличная перекодировка...
:dont_know:

Re: Convert to ASCII

Добавлено: Ср мар 15, 2017 11:23:19
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

Re: Convert to ASCII

Добавлено: Ср мар 15, 2017 11:58:09
pokk
С самим алгоритмом преобразованием все понятно, вся загвоздка начинается когда надо то 3 нуля вывести перед числом то четыре нуля, то хвост отбросить, то точку где-то в середине воткнуть, ну и все тоже самое для отрицательных чисел.

Re: Convert to ASCII

Добавлено: Ср мар 15, 2017 12:15:29
BOB51
Это уже относится к опциям редактирования/разметки страницы/формата.
8)

Re: Convert to ASCII

Добавлено: Ср мар 15, 2017 15:37:19
ARV
на Си все проблемы решаются при помощи единственной функции printf.
если надо экономно - itoa или аналоги ltoa и т.п. (нули дописывать слева самостоятельно).