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

User Tag List

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

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

  1. #1
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    42
    Благодарностей: 10
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

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

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

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

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

    По умолчанию

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

  4. Этот пользователь поблагодарил shurik-ua за это полезное сообщение:
    Dr.Potapov (12.10.2015)

  5. #3
    Доктор Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,093
    Благодарностей: 859
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    push aa
    jp (hl)
    aa:
    нефть.

  6. #4
    Member
    Регистрация
    15.01.2005
    Сообщений
    175
    Благодарностей: 50
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    call #006f

  7. #5
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    42
    Благодарностей: 10
    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

  8. #6
    CraZZZy CodEr Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    1,576
    Благодарностей: 757
    Mentioned
    2 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.
    Все любят гипножабу

  9. Эти 2 пользователя(ей) поблагодарили SAM style за это полезное сообщение:
    Dr.Potapov (12.10.2015), shurik-ua (12.10.2015)

  10. #7
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    694
    Благодарностей: 514
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  11. #8
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    42
    Благодарностей: 10
    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 Посмотреть сообщение
    зачем было спрашивать, непонятно - неоднократно наблюдаю, человек задаёт вопрос - получает всеобъемлющие варианты ответов - и всё равно делает по своему. (причём выходит как правило лютый говнокод)
    Да я пока ждал ответ наговнокодил наспех, лишь бы работало.
    Все равно не вкуриваю как без таблицы вызовов запомнить в приложении адреса нескольких разных драйверов ((

  12. #9
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    694
    Благодарностей: 514
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  13. #10
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    42
    Благодарностей: 10
    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

Ваши права

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