Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Что не так в коде?

  1. #1
    Master Аватар для shuran33
    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    555
    Благодарностей: 173
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Что не так в коде?

    Подскажите, что не так в простом коде? Вроде должно все работать, но выдает ошибку "B Integer Out of Range"
    PHP код:
         ORG  40000
         LD     BC
    ,#6464   ;координаты точки
         
    LD     L,30
    L1   CALL  
    #22E5  ;процедура печати точки
         
    INC    BC
         DEC   L
         JR      NZ
    ,L1
         RET 

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

  3. #2
    Veteran Аватар для lisica
    Регистрация
    19.12.2008
    Адрес
    Черкассы
    Сообщений
    1,504
    Благодарностей: 390
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хм, а мож надо перед вызовом сохранить BC и HL в стеке, а после восстановить?
    Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
    Pentagon 128(1991г.)+YМ
    программатор 2732-27512.


  4. #3
    Master Аватар для shuran33
    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    555
    Благодарностей: 173
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, все получилось. Значит процедура печати точки портит регистры? Получается всегда надо сохранять значения, чтобы воспользоваться подпрограммами ПЗУ?

  5. #4
    Veteran Аватар для lisica
    Регистрация
    19.12.2008
    Адрес
    Черкассы
    Сообщений
    1,504
    Благодарностей: 390
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выходит что так.
    Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
    Pentagon 128(1991г.)+YМ
    программатор 2732-27512.


  6. Этот пользователь поблагодарил lisica за это полезное сообщение:
    shuran33 (09.11.2013)

  7. #5
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,213
    Благодарностей: 869
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Shuran33, ну ты бы защел и посмотрел в этой процедуре что происходит, вопросов бы лишних и не возникло, благо щас в любом эмуляторе можно посмотреть.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Мордовия - Республика звука

  8. #6
    Veteran Аватар для Лас
    Регистрация
    18.11.2008
    Адрес
    пос.Полярный, ЯНАО
    Сообщений
    1,062
    Благодарностей: 780
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shuran33 Посмотреть сообщение
    Получается всегда надо сохранять значения, чтобы воспользоваться подпрограммами ПЗУ?
    Если бы в каждой подпрограмме ПЗУ Спектрума выполнялись операции сохранения и восстановления регистров, то Викерс бы не уложился в объем 16 КБ.

  9. #7
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,720
    Благодарностей: 947
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выходит что так.
    Вы тут ща запугаете народ - они и перед RST #10 или #1f54 начнут сохранять все, включая альтернативные и индексные регистры
    Последний раз редактировалось Alex Rider; 10.11.2013 в 02:50.

  10. #8
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там после процедуры вывода точки похоже нужно делать так:

    Код:
         ORG  40000 
         LD     BC,#6464   ;координаты точки 
         LD     L,30 
    L1  CALL  #22E5  ;процедура печати точки 
         LD BC,(#5C7D)
         INC    BC 
         DEC   L 
         JR      NZ,L1 
         RET
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  11. #9
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,720
    Благодарностей: 947
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Там после процедуры вывода точки похоже нужно делать так:
    Регистр L надо сохранять, в нем счетчик точек. И INC BC там не к чему - надо делать INC C.

  12. #10
    Master Аватар для shuran33
    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    555
    Благодарностей: 173
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А тогда еще вопрос. Как в аласме можно хранить переменные?

    Вот так можно? :
    PHP код:
       LD   A,(date)
       
    RST   #10

    date 62,63,45,43 
    И еще интересно где лучше хранить данные? На стеке нежелательно наверное?

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Интерфейс эмулятора в коде Z80
    от CityAceE в разделе Эмуляторы
    Ответов: 29
    Последнее: 15.09.2008, 18:23

Ваши права

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