Что то я запутался.
Есть значение в HL, фактически адрес. Как сделать вызов подпрограммы по этому адресу?
Спасибо ))
Что то я запутался.
Есть значение в HL, фактически адрес. Как сделать вызов подпрограммы по этому адресу?
Спасибо ))
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Код:m0 jp (hl) my_prog ... call m0 ...
push aa
jp (hl)
aa:
call #006f
ух, через какое черезжопие удалось решить... пришлось городить таблицу вызовов ))
Код:;-- user app for test org #8000 jr startapp ;-- table of need drivers ttydev db "prscr" ;-- ;-- table of core call's sysc db #cd,0,0 ret ttyadr db #cd,0,0 ret ;-- startapp ld d,h ld e,l ld hl,sysc inc hl ld (hl),e inc hl ld (hl),d ld hl,ttydev call sysc ld d,h ld e,l ld hl,ttyadr inc hl ld (hl),e inc hl ld (hl),d ret ;-- end user app
Ой вэй... Чем вариант shurik-ua не устраивает? Сам им пользуюсь.
И если уж на то пошло...Код:ttydev: db "prscr" startapp: ld de,ttydev call callHL ; пусть в HL вернёт нужный адрес (который у тебя ложится в ttyadr+1) callHL: jp (hl)Сокращается доКод:startapp ld d,h ld e,l ld hl,sysc inc hl ld (hl),e inc hl ld (hl),dКод:ld (sysc+1),hl
Последний раз редактировалось SAM style; 12.10.2015 в 19:48.
Все любят гипножабу
Он то как раз на мысль и навел ) спасибо ему.
Дело в том что у меня адрес вызова неопределен изначально (в hl нужные данные только один раз, на старте приложения). За остальными адресами надо слазить в таблицу драйверов. Пользовательская прикладуха ведь на старте только и имеет что в HL адрес подпрограммы которая отдает в HL же адреса нужных драйверов. То есть методом jp (hl) я могу определить только адрес системной функции отдающей адреса драйверов. А потом все, куку. А представьте что приложению нужно обратиться к 2,3,5 драйверам? )
В моем примере я запомнил адрес системной функции и некоего драйвера prscr, который могу вызывать теперь постоянно напрямую из ядра с любыми параметрами. Работает. Шурик помог ) ну или я не вкуриваю всей стройности jp (hl). (((
---------- Post added at 20:04 ---------- Previous post was at 19:57 ----------
Да я пока ждал ответ на*****кодил наспех, лишь бы работало.
Все равно не вкуриваю как без таблицы вызовов запомнить в приложении адреса нескольких разных драйверов ((
я так понял у тебя при входе в user_app должны вызваться несколько драйверов, причём адреса могут меняться от приложения к приложению ?
Верно. Произвольное количество. Какому то приложению достаточно tty типа hello world :-), какому то нужен и tty и клавиатура, какому то еще какие то.
Скорее от ядра к ядру (какое то собрано с AY, какое то с мышкой и так далее). По моей задумке, user_app вообще ничего о ядре не знает изначально и запрашивает адрес нужного ему для работы драйвера непосредственно при своей инициализации.причём адреса могут меняться от приложения к приложению ?
Последний раз редактировалось Dr.Potapov; 12.10.2015 в 20:20.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)