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

User Tag List

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

Тема: Вызов по адресу в HL

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Вызов по адресу в HL

    Что то я запутался.
    Есть значение в HL, фактически адрес. Как сделать вызов подпрограммы по этому адресу?
    Спасибо ))

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

  3. #2
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    m0
      jp (hl)
    
    my_prog
      ...
      call m0
      ...

  4. #3
    Veteran Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    31
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    push aa
    jp (hl)
    aa:

  5. #4
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    call #006f

  6. #5
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ух, через какое черезжопие удалось решить... пришлось городить таблицу вызовов ))

    Код:
    ;-- 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

  7. #6
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,054
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    217
    Поблагодарили
    91 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dr.Potapov Посмотреть сообщение
    ух, через какое черезжопие удалось решить... пришлось городить таблицу вызовов ))
    Ой вэй... Чем вариант 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.
    Все любят гипножабу

  8. #7
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Ой вэй... Чем вариант shurik-ua не устраивает? Сам им пользуюсь.
    Он то как раз на мысль и навел ) спасибо ему.

    Дело в том что у меня адрес вызова неопределен изначально (в hl нужные данные только один раз, на старте приложения). За остальными адресами надо слазить в таблицу драйверов. Пользовательская прикладуха ведь на старте только и имеет что в HL адрес подпрограммы которая отдает в HL же адреса нужных драйверов. То есть методом jp (hl) я могу определить только адрес системной функции отдающей адреса драйверов. А потом все, куку. А представьте что приложению нужно обратиться к 2,3,5 драйверам? )

    В моем примере я запомнил адрес системной функции и некоего драйвера prscr, который могу вызывать теперь постоянно напрямую из ядра с любыми параметрами. Работает. Шурик помог ) ну или я не вкуриваю всей стройности jp (hl). (((

    ---------- Post added at 20:04 ---------- Previous post was at 19:57 ----------

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    зачем было спрашивать, непонятно - неоднократно наблюдаю, человек задаёт вопрос - получает всеобъемлющие варианты ответов - и всё равно делает по своему. (причём выходит как правило лютый *****код)
    Да я пока ждал ответ на*****кодил наспех, лишь бы работало.
    Все равно не вкуриваю как без таблицы вызовов запомнить в приложении адреса нескольких разных драйверов ((

  9. #8
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dr.Potapov Посмотреть сообщение
    ух,
    зачем было спрашивать, непонятно - неоднократно наблюдаю, человек задаёт вопрос - получает всеобъемлющие варианты ответов - и всё равно делает по своему. (причём выходит как правило лютый *****код)
    Последний раз редактировалось shurik-ua; 12.10.2015 в 19:57.

  10. #9
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я так понял у тебя при входе в user_app должны вызваться несколько драйверов, причём адреса могут меняться от приложения к приложению ?

  11. #10
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    я так понял у тебя при входе в user_app должны вызваться несколько драйверов
    Верно. Произвольное количество. Какому то приложению достаточно tty типа hello world :-), какому то нужен и tty и клавиатура, какому то еще какие то.

    причём адреса могут меняться от приложения к приложению ?
    Скорее от ядра к ядру (какое то собрано с AY, какое то с мышкой и так далее). По моей задумке, user_app вообще ничего о ядре не знает изначально и запрашивает адрес нужного ему для работы драйвера непосредственно при своей инициализации.
    Последний раз редактировалось Dr.Potapov; 12.10.2015 в 20:20.

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

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

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

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

Похожие темы

  1. Вызов функций через RST
    от axor в разделе Программирование
    Ответов: 98
    Последнее: 19.01.2006, 16:01

Ваши права

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