User Tag List

Страница 23 из 51 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя
Показано с 221 по 230 из 501

Тема: Тема для всяких глупых вопросов

  1. #221

    Регистрация
    07.10.2006
    Сообщений
    1,730
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    ld a, 0
    vs
    xor a

    Что-то подобное я имел в виду под "красивым методом".
    Пусть себе ухудшают. Место критическое к скорости.
    Обдумайте, как его оптимизировать алгоритмически. В данном случае инструкции SET/RES просто находка, на ВМ80 было бы длиннее, c использованием аккумулятора, двумя переходами, и флаги бы были испорчены без их сохранения.

    - - - Добавлено - - -

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    правда здесь нету сброса бита - но возможно это и не требуется
    По ТЗ требуется:
    if CY=1
    set 0, (HL);
    else
    res 0, (hl);

    Этот пользователь поблагодарил Spectramine за это полезное сообщение:

    shurik-ua(30.01.2022)

  2. #222

    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вообще все эти трюки для неиспользования переходов полезны на х86, а на z80 каждый такт на вес золота )

  3. #223

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    то rr (hl): rlc (hl)
    вообще-то это как раз и соответствует первоначально поставленной задаче
    биты 7-1 (hl) неизменны
    бит 0,(hl) = флагу C

  4. #224

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

    По умолчанию

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    Как бы сделать покрасивше:
    в зависимости от состояния флага C поставить или сбросить 0-й бит в памяти по адресу (HL)?
    Аккумулятор свободен.
    Код:
    if CY=1
       set 0, (HL);
    else
       res 0, (hl);

    Код:
    	LD A,(HL)
    	RRA
    	RLCA
    	LD (HL),A
    - - - Добавлено - - -

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    Хорошо. А если не нулевой бит?
    Код:
    if CY=1
       set 5, (HL);
    else
       res 5, (hl);
    Код:
    	LD HL,[адрес ячейки]
    
    	AND A	; Cf=0
    	[или]
    	SCF	; Cf=1
    
    	SBC A,A
    	AND %00100000	; бит 5
    	LD C,A
    	LD A,(HL)
    	AND %11011111	; не бит 5
    	OR C
    	LD (HL),A
    Последний раз редактировалось drbars; 30.01.2022 в 11:14.

    Этот пользователь поблагодарил drbars за это полезное сообщение:

    0xDEAD(30.01.2022)

  5. #225

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    jerri, так а что rl (hl)? Мне (HL) двигать нельзя, биты 1-7 должны быть там, где они есть. Только нулевой бит нужно установить/сбросить.

    Хорошо. А если не нулевой бит?
    Код:
    if CY=1
       set 5, (HL);
    else
       res 5, (hl);
    тогда при прочих равных
    jr nc,nnn
    set N,(hl)

    nnn res N,(hl)

    - - - Добавлено - - -

    Цитата Сообщение от LW Посмотреть сообщение
    вообще-то это как раз и соответствует первоначально поставленной задаче
    биты 7-1 (hl) неизменны
    бит 0,(hl) = флагу C
    ну это автору не нравятся переходы.
    С уважением,
    Jerri / Red Triangle.

  6. #226

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    автору не нравятся переходы
    Так их и нету, две команды сдвига (нециклический+циклический обратно) - длина минимальна, остальные биты на своих местах - что еще нужно? =)

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

  8. #227

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ну это автору не нравятся переходы.
    rr (hl): rlc (hl) - не вижу тут переходов.
    А так - отлично для нулевого бита, спасибо.

  9. #228

    Регистрация
    07.10.2006
    Сообщений
    1,730
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    rr (hl): rlc (hl) - не вижу тут переходов.
    А так - отлично для нулевого бита, спасибо.
    Для седьмого подобный прием тоже подойдет)

  10. #229

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну да, это крайности. В прямом смысле слова.
    Последний раз редактировалось 0xDEAD; 30.01.2022 в 13:00.

  11. #230

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Схожий трюк можно проделать, если нужно сбросить/установить нулевой бит в аккуме или (HL), но перед этим проверить его.
    Наиболее очевидны команды BIT 0,x: RES 0,x - но скроллы сэкономят байт: RRCA и следом SLA A/SLI A, для (HL) аналогично.
    Ну и затем проверяем флаг переноса, а не нуля.

Страница 23 из 51 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 42
    Последнее: 05.05.2021, 17:01
  2. Общая тема для моих вопросов (ассемблер и zx spectrum)
    от moronizzz в разделе Для начинающих
    Ответов: 17
    Последнее: 23.08.2016, 18:13
  3. тема для мобильного....
    от rasmer в разделе Музыка
    Ответов: 0
    Последнее: 18.01.2008, 20:25

Метки этой темы

Ваши права

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