User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 34

Тема: Учусь программировать (need help)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    навскидку, как-то так бы накарябал

    Код:
    	ld	hl,buff
    	call	space1
    ;...
    
    ;
    space1:
    	ld	a,h		;a>#20 anyway, not space )))
    	ld	d,h
    	ld	e,l
    
    lp_spc1:
    	ld	c,a		;prev char
    	ld	a,(hl)
    	ld	(de),a
    	inc	hl
    	cp	#0a
    	ret	z
    ;	jr	z,clearline
    
    	cp	#20
    	jr	nz,go_spc1	;current char not space
    
    	cp	c
    	jr	z,lp_spc1	;prev and current char = space, skip one
    
    go_spc1:
    	inc	de		;moved ok
    	jr	lp_spc1
    - - - Добавлено - - -

    вместо ld a,h, наверное, лучше просто xor a, да и все )))

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот так, кстати, можно 1 переход (и байт) вырезать
    Код:
    space1:
    	ld	b,h		;b>0 anyway )))
    	ld	d,h
    	ld	e,l
    
    lp_spc1:
    	ld	c,b		;prev char -#20
    	ld	a,(hl)
    	ld	(de),a
    	inc	hl
    	cp	#0a
    	ret	z
    ;	jr	z,clearline
    
    	sub	#20
    	ld	b,a
    	or	c
    	jr	z,lp_spc1	;prev and current char = space, skip one
    
    	inc	de		;moved ok
    	jr	lp_spc1

  4. #3

    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    и да, для второй адресной пары, обычно лучше брать de, а не bc.

    ( b используется в djnz, hl -> de используется в ldi/ldir и т.д. )

  5. #4

    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Главное теперь не "подсесть" на помощь зала )) Очень приятно удивлен количеством откликнувшихся и качеством помощи. Спасибо други! )

  6. #5

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dr.Potapov Посмотреть сообщение
    Главное теперь не "подсесть" на помощь зала )) Очень приятно удивлен количеством откликнувшихся и качеством помощи. Спасибо други! )
    Это отличный способ размять мозг

    Подсчитал такты, сделал 3 замера. В среднем моя процедура на 300 тактов быстрее работает на коротких массивах. Особенно, если в массиве несколько слов разделены двойными пробелами. Выигрыш видимо получается за счёт LDIR'а.

  7. #6

    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Подсчитал такты, сделал 3 замера. В среднем моя процедура на 300 тактов быстрее работает на коротких массивах. Особенно, если в массиве несколько слов разделены двойными пробелами. Выигрыш видимо получается за счёт LDIR'а.
    LDIR штука замечательная ) но у меня нет указателя на конец массива (точнее он уже неверный, после "стрижки" пробелов в массиве "до" и "после" значащей строки), т.е. вот тут "LD BC,END-ARRAY" мне просто в BC впихнуть нечего, если только я не пробегусь отдельным циклом по массиву со счетчиком и не поймаю #0D в конце или в процессе отсечения пробелов "до" и "после" буду модифицировать указатель на длину массива, что сами понимаете лишняя совершенно морока.

    Меня больше беспокоит объем кода, так как я не программист и по большей части времени пишу "трактором", особенно когда Мысль ))) При этом задача заключается в том, что бы уместить ядро программы в 8 килобайт (#6000-#7FFF). В ядре сейчас содержится функция возврата указателя на произвольный драйвер (вызов драйвера идет по имени типа "fd","scr32","kbdn","trd" и прочие), + сами драйверы (какие необходимо в текущей сборке ядра). Функцию возврата указателя дергают системные функции (fs, kbd, sc, syscall которые вкомпилены в ядро всегда) которые в свою очередь вызываются уже userapp (которое вообще не знает ни о каких hardware drivers или системных функциях и получает указатель через ту же функцию возврата указателей по имени). Если что, скажу сразу - возврат указателя происходит один раз и запоминается самой userapp (патчатся нули в "LABEL DB #C3,#00,#00") и в дальнейшем вызов происходит обычным "CALL LABEL". И вся эта канитель сейчас уже занимает 1526 байт (3574 с системным шрифтом) из доступных 8192 байт. Т.е. под дальнейшее творчество (переписать драйвер клавиатуры, дописать системные fs и mem, а так же драйвер trd) осталось 4618 байт.

    И я полностью согласен с вами ))
    Это отличный способ размять мозг
    Последний раз редактировалось Dr.Potapov; 02.03.2018 в 10:17.

  8. #7

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,293
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    947 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    иногда важнее область применения.
    возможно готовый ответ (алгоритм) применяется например в адвентюрах
    (особенно в тех где распознаются фразы из трёх слов)

  9. #8

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если нужны процедуры обработки текстовых строк, их есть у меня!
    Пример работы на скриншоте: первая строчка - это синтаксис функции, следующая - результат ее выполнения.
    Если интересно, постараюсь исходники восстановить.

    Цитата Сообщение от makbar Посмотреть сообщение
    как интересно, никогда не видел для ассемблера такой библиотеки.
    кое-что:
    http://zx-pk.ru/threads/21695-sdcc-b...%ba%d0%b8+sdcc
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	sshot000000.png 
Просмотров:	92 
Размер:	12.4 Кб 
ID:	64480  
    Последний раз редактировалось Sergey; 06.03.2018 в 09:18.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  10. #9

    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Если нужны процедуры обработки текстовых строк, их есть у меня!
    Пример работы на скриншоте: первая строчка - это синтаксис функции, следующая - результат ее выполнения.
    Если интересно, постараюсь исходники восстановить.
    Конечно интересно! Буду благодарен и если получится восстановить (не срочно, я пока другие задачи решаю в проекте) буду рад использовать при возможности.

  11. #10

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dr.Potapov Посмотреть сообщение
    Конечно интересно! Буду благодарен и если получится восстановить (не срочно, я пока другие задачи решаю в проекте) буду рад использовать при возможности.
    14 числа доберусь до исходников, - выложу.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Трудно ли программировать спрайтовые движки?
    от Romanich в разделе Программирование
    Ответов: 29
    Последнее: 22.12.2006, 08:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •