nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

QuatCore: чего-то мы перемудрили с print

Или недомудрили, не понял пока. Но что-то не то!

Вот мы решили не заморачиваться с упаковыванием по 2 символов в каждом слове, поэтому в каждом слове данных выходит 1 свободный байт. А потом какого-то рожна решили, что каждая строка должна оканчиваться ЕЩЁ ОДНИМ СЛОВОМ, конкретно -32768. Тут уж "или крест сними..." - мы либо утрамбовываемся как следует, но тогда сопровождать каждый символ флагом "это последний символ" - жуткое расточительство. А если мы этого не делаем - то у нас для этих флагов места - ну просто завались!

А то как начал в "бортовую программу" закладывать все строки - и свободное пространство в 256 словах как-то резко начало заканчиваться :) Хоть на последнем символе поэкономим!


В общем, вместо такого объявления строки:
DistStr	dw	'Д','а','л','ь','н','о','с','т','ь',':',' ',-32768


предлагается такое:
DistStr	dw	'Д','а','л','ь','н','о','с','т','ь',':',f' '


где f' ' - это "цельный" символ, тоже объявленный в Win1251.inc:

	f' '		EQU	0x8020

так сказать "финальный пробел", final frontier однако.

А чтобы такую строку выводить, надо подправить процедуру print:

	;X указывает на начало строки текста
	;последний символ обозначается как отрицательное число (старший бит слова - единичка)
	;меняет значение регистра Acc
	print proc
				[SP++]	i
				i		0
		@@start:	UART0		[X+i]
				Acc		[X+i]
				i++		0
				SUB		0
				JGE		@@start
				i		[--SP]
				JMP		[--SP]
	print endp


Длина процедуры не изменилась - хоть здесь нет хитрого трюка с ABS, но зато нет лишних переходов туда-сюда.

Разве что таким способом не получится отобразить пустую строку - один символ он всё равно отправит! Но мы и не собираемся отображать пустые строки - зачем нам это!
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

  • Формулы приведения, что б их... (и atan на ТРЁХ умножениях)

    Формулу арктангенса на 4 умножениях ещё немножко оптимизировал с помощью алгоритма Ремеза: Ошибка уменьшилась с 4,9 до 4,65 угловой секунды, и…

  • Алгоритм Ремеза в экселе

    Вот и до него руки дошли, причина станет ясна в следующем посте. Изучать чужие библиотеки было лениво (в том же BOOSTе сам чёрт ногу сломит), писать…

  • atan на ЧЕТЫРЁХ умножениях

    Мишка такой человек — ему обязательно надо, чтоб от всего была польза. Когда у него бывают лишние деньги, он идёт в магазин и покупает какую-нибудь…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 1 comment