Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Что не так в коде? (http://zx-pk.ru/showthread.php?t=22146)

shuran33 10th November 2013 00:03

Что не так в коде?
 
Подскажите, что не так в простом коде? Вроде должно все работать, но выдает ошибку "B Integer Out of Range" :v2_conf2:
PHP Code:

     ORG  40000
     LD     BC
,#6464   ;координаты точки
     
LD     L,30
L1   CALL  
#22E5  ;процедура печати точки
     
INC    BC
     DEC   L
     JR      NZ
,L1
     RET 


lisica 10th November 2013 00:18

Хм, а мож надо перед вызовом сохранить BC и HL в стеке, а после восстановить?

shuran33 10th November 2013 00:23

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

lisica 10th November 2013 00:24

Выходит что так.

Shadow Maker 10th November 2013 00:46

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

Лас 10th November 2013 02:23

Quote:

Originally Posted by shuran33 (Post 642735)
Получается всегда надо сохранять значения, чтобы воспользоваться подпрограммами ПЗУ?

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

Alex Rider 10th November 2013 04:44

Quote:

Выходит что так.
Вы тут ща запугаете народ - они и перед RST #10 или #1f54 начнут сохранять все, включая альтернативные и индексные регистры :)

drbars 14th November 2013 07:34

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

Code:

    ORG  40000
    LD    BC,#6464  ;координаты точки
    LD    L,30
L1  CALL  #22E5  ;процедура печати точки
    LD BC,(#5C7D)
    INC    BC
    DEC  L
    JR      NZ,L1
    RET


Alex Rider 14th November 2013 15:42

Quote:

Originally Posted by drbars (Post 644139)
Там после процедуры вывода точки похоже нужно делать так:

Регистр L надо сохранять, в нем счетчик точек. И INC BC там не к чему - надо делать INC C.

shuran33 14th November 2013 22:16

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

Вот так можно? :
PHP Code:

   LD   A,(date)
   
RST   #10

date 62,63,45,43 

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


All times are GMT +4. The time now is 00:49.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.