push hl
;ld a,68
pop hl
--------->работает нормально
push hl
ld a,68
pop hl
--------->работает неправильно
;push hl
ld a,68
;pop hl
--------->работает нормально
Оказалось неважно какая команда блокируется, важно на сколько байт меняется код.
Каким-то образом это влияет на дальнейший код.
- - - Добавлено - - -
Нашёл в чём проблема, но не понял почему она возникает. Проблема насколько я понял в нехватке памяти.
Я отключил некоторую графику (данные в формате db 1,2,3,4...) и в итоге всё заработало как нужно.
При подключении графики программа работает неправильно.
Не пойму почему так происходит, поскольку запас памяти у меня ещё есть.
Моя программа определяется так:
org 24500
ld sp,61440 ; (#F000)
.......
После трансляции выдаёт следующие данные:
> start: 0x5FB4, 24500 bytes (начало кода)
> total: 0x5E0F, 24079 bytes (всего код занимает)
Выходит что:
#BDC3 (48579) - верхняя точка программы
----------------------------------------------------------
Далее пришла идея поменять в конце кода местами include
было:
include "include\rumdata.asm" ; информационные данные и графика
include "include\rumdata2.asm" ; информационные данные и графика
include "include\podprog.asm" ; различные подпрограммы (код)
стало:
include "include\podprog.asm" ; различные подпрограммы (код)
include "include\rumdata.asm" ; информационные данные и графика
include "include\rumdata2.asm" ; информационные данные и графика
И снова я подключил всю графику.
И всё заработало.
Однако есть подозрения что теперь на "края" данных "заползает" то что портило "края" кода подпрограммы. Но пока этого не видно.




Ответить с цитированием