User Tag List

Страница 8 из 8 ПерваяПервая ... 45678
Показано с 71 по 80 из 82

Тема: Вопрос по ассемблеру Z80

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

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

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,333
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    а если будет 50
    Ну да, я в среднем и приблизительно написал. Если мы знаем сколько конкретно циклов будет, то можем конкретно посчитать такты.
    Код:
       ld bc, 1000
    loop:
       djnz loop    ; 13/8t
       dec c           ; 4t
       jr nz, loop    ; 12/7t
                          ; итого 29 тактов (чуть меньше, т.к. последний виток быстрее переход)
    Например 50 циклов. Считаем. 49 раз djnz завернёт за 13 тактов. Плюс один раз djnz 8t, dec 4t и jr 7t.
    49*13+8+4+7=50*13-13+8+4+7=650+6=656
    За цикл будет 656/50=1312/100=13,12
    Всё равно 13 с мелочью. Но не 29.

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

  3. #2

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    LD A,n не имеет смысла, т.к. чуть ниже идёт LD A,B
    Очень даже имеет, так как в начале программы используется константа которая не меняется. Собственно в моей программе туда грузим вполне себе конкретный байт цветности, а потом выгружаем его в ячейку памяти. Вообще, поскольку константа не меняется, можно было бы её напрямую грузить в вычисляемую ячейку памяти, но программа была уже написана и работала, так что... )

    Но все равно благодарен всем присутствующим за помощь. Она потом используется. Возможно даже по назначению. Только OBS Надо настроить нормально, а то в последний раз кошмар что было. Но удалять уже жаль.
    Последний раз редактировалось Zidane; 02.08.2022 в 16:42.

  4. #3

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    или так

    Код:

    Код:
       ld bc, 1000
    loop:
       djnz loop    ; 13/8t
       dec c           ; 4t
       jr nz, loop    ; 12/7t
                          ; итого 29 тактов (чуть меньше, т.к. последний виток быстрее переход)
    Пример немного с ошибкой по числу итераций - нужно LD CB,1000 [+256] а не LD BC,1000 .
    Ну а поскольку такой команды нет , то надо выкручиваться вручную или макросом )))
    И учитываем что если младьший байт числа итераций не 0 , то старший нужно увеличить на 1

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

    Reobne(02.08.2022)

  5. #4

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

    По умолчанию

    А еще можно так =)) при условии, что итераций меньше 32768

    LD DE,NN
    ....
    DEC DE
    BIT 7,D
    JR Z,REPEAT

    значение флага будет равно значению бита, т.е. когда бит 7=0 (число>=0 но меньше 32768) - сработает переход по Z
    ну и счетчик надо заранее уменьшать на 1, поскольку при нулевом значении DE цикл все еще будет крутиться

    Цитата Сообщение от Zidane Посмотреть сообщение
    сли использовать CP C, то выполняется почему то 253 итерации

    да, нужно использовать именно OR - нулевой результат будет тогда, когда оба регистра равны нулю

    Эти 3 пользователя(ей) поблагодарили reddie за это полезное сообщение:

    Dart Alver(02.08.2022), Reobne(01.08.2022), Zidane(01.08.2022)

  6. #5

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

    По умолчанию

    Один из способов нестандартного применения команды CPI для организации цикла.
    Код:
    		ld hl,0
    		ld bc,1000
    .loop:
    		[код цикла]
    		cpi
    		jp pe,.loop
    На выходе HL=1000.

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

    Bedazzle(04.08.2022), Dart Alver(18.08.2022), Oleg N. Cher(03.08.2022), SoftLight(03.08.2022)

Страница 8 из 8 ПерваяПервая ... 45678

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

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

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

Похожие темы

  1. Книга по ассемблеру Z80
    от Shwartz в разделе Пресса
    Ответов: 11
    Последнее: 06.07.2018, 14:29
  2. Книги по бейсику и Ассемблеру Z80
    от stepmotor в разделе Программирование
    Ответов: 3
    Последнее: 30.01.2018, 19:53
  3. вопрос по z80 stealh
    от scl^mc в разделе Эмуляторы
    Ответов: 11
    Последнее: 17.08.2007, 15:32
  4. ламерский вопрос о временных диаграммах шин Z80
    от boo_boo в разделе Несортированное железо
    Ответов: 3
    Последнее: 30.01.2006, 13:14

Ваши права

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