User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: Использование стека и прерывания

  1. #11

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

    По умолчанию

    Я уже запилил как было в первом посте, как понял где баг. Мне с DE выгоднее работать.

  2. #12

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

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    нынче замедлять код модно? обработчик из 1 поста оптимальный, не надо его трогать, ну или по крайней мере так трогать
    этот обработчик сочинил AlCo он более универсальный

    все зависит от того для чего надо
    у Медногова
    после передачи данных их hl в sp
    есть конструкция

    ld h b
    ld l c

    что как бы тоже потери тактов
    С уважением,
    Jerri / Red Triangle.

  3. #13

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

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    еще совет раз решил заморочится графикой через стек, inc hl в конкретной ситуации можно менять на inc l это 2 такта на байт в данном случае почти на 10 % быстрее
    INC L не всегда реально использовать. У меня таблица адресов не кратна 256, немного больше... на 32 байта кажется.

  4. #14

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

    По умолчанию

    drbars, ecли на четном адресе живет то можно один inc hl заменить на inc l
    С уважением,
    Jerri / Red Triangle.

  5. #15

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, я вот что не понимаю:

    Произошло прерывание, надо снять адрес возврата со стека, и сохранить его на будущее. Так как там будет JP по адресу, со стека адрес надо снять, но не испортив регистров.
    Код:
               EX DE,HL
               EX (SP),HL
               LD (SaveRET+1),HL
               EX DE,HL
               POP DE
    Адрес сохранен, регистры на своих местах, SP как был до прерывания.
    А если вот так:
    Код:
               EX (SP),HL
               LD (SaveRET+1),HL
               POP HL
    Меньше на 2 команды и быстрее на 8 тактов. Разве не то же самое делает?..
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  6. #16

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

    По умолчанию

    Во втором случае ты восстанавливаешь HL ведь. Этот регистр не очень удобен в работе. Процедура обработки прерывания позволяет восстанавливать только один из регистров во время снятия данных стеком.

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

  8. #17

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Во втором случае ты восстанавливаешь HL ведь.
    Хм, я, наверное, не то курю, но на мой взгляд после обоих вариантов все регистры остаются на своих местах (кроме SP, который в обоих вариантах на 2 больше чем на входе, т.е. опять же такой, как был до сигнала прерывания). Поэтому, как кажется, неважно, что восстанавливать - главное, чтобы в итоге было восстановлен все. При то, что во втором варианте код короче и быстрее.

    Цитата Сообщение от drbars Посмотреть сообщение
    Процедура обработки прерывания позволяет восстанавливать только один из регистров во время снятия данных стеком.
    Почему один? EX (SP),HL сохраняет HL на стеке, POP HL его восстанавливает. DE и все остальное, кроме SP, не изменяются на всем протяжении, потому что потом идет PUSH всех, а в конце POP всех и прямой JP на адрес возврата. Там ничего не должно теряться в обоих вариантах.
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  9. #18

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

    По умолчанию

    TomCaT, ты абсолютно прав

    но тема здесь немного другая
    необходимо после восстановления адреса возврата и стека
    восстановить испорченную память что мы и делаем обновляя ее DE у медноногова
    и push reg у AlCo

    Код:
               EX DE,HL
               EX (SP),HL
               LD (SaveRET+1),HL
               EX DE,HL
               POP DE
               LD (SaveSP+1),sp
    
               LD SP,STACK_IM2
               CALL MAIN_ISR
    
    SaveSP LD SP,#0000
               EI
    SaveRET JP #0000
    Код:
                ex (sp),hl   ;забираем со стека адрес возврата
                ld (imret),hl ;сохраняем адрес возврата
                pop hl        ;забираем hl 
                ld (imstek),sp ;сохраняем стек 
                push bc ;либо push de в зависимости от того каким регистром берем спрайты
     
                ld sp,int_sp
                call proc_int
                
                ld sp,$
    imstek   equ $-2
                ei
                jp $
    imret     equ $-2
    Последний раз редактировалось jerri; 11.12.2012 в 10:26.
    С уважением,
    Jerri / Red Triangle.

  10. #19

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию


    Вот же, обработчик по сути рассчитан на то, что в DE то же, что было в (SP-2) до прихода прерывания...
    Все, понял, спасибо. Хитро-о, однако.
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  11. #20

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

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение

    Хитро-о, однако.
    Не то слово, но зато теперь со всем разобрались и можно применить в реальном проекте

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

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

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

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

Похожие темы

  1. Использование USB FDD
    от Максагор в разделе Внешние накопители
    Ответов: 62
    Последнее: 02.07.2024, 14:22
  2. Прерывания IM 2
    от GM BIT в разделе Программирование
    Ответов: 12
    Последнее: 21.01.2011, 23:52
  3. Ответов: 1
    Последнее: 03.05.2009, 23:06
  4. IM2, вектор прерывания
    от Jukov в разделе Программирование
    Ответов: 18
    Последнее: 20.09.2006, 09:32

Ваши права

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