1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 5
|
||||||
1 | ||||||
Как получить адрес подпрограммы?10.09.2012, 16:53. Показов 2537. Ответов 9
Метки нет (Все метки)
В общем такая проблема... Есть программа (к устройству), она должна выводить текущее количество деталей с счетчика на индикаторы раз в n секунд(подсчет идет до 10 000) и при нажатии кнопки должна совершить передачу текущего количества деталей на внешнее устройство.
Когда на программируемый контролер прерываний поступает сигнал запроса прерываний, мкп заканчивает выполнение текущей программы и на шд подается байт вектора прерывания(А0H в моем случае получается) Он считывается МКП и на основании его вычисляется адрес подпрограммы обработки прерывания и выполняется соотвествующая подпрограмма. А дальше я запутался и не могу разобраться, вопрос в следующем - какой адрес этой подрограммы будет в моем случае? Куда/на что вообще смотреть? В общем вопрос практически жизни и смерти, помогите, пожалуйста)
0
|
10.09.2012, 16:53 | |
Ответы с готовыми решениями:
9
Как в переменную объектного процедурного типа поместить адрес подпрограммы? Как называют область стековой памяти, содержащую связанные с одним вызовом подпрограммы значения параметров, адрес возвр Получить адрес ИЗ указателя на адрес другой программы Как получить IP адрес? |
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
|
||||||
10.09.2012, 17:18 | 2 | |||||
Адрес процедуры-обработчика прерываний надо прописать в системную таблицу векторов прерываний. Для этого есть DOS-ское прерывание:
1
|
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 5
|
|
10.09.2012, 22:14 [ТС] | 3 |
Я извиняюсь, а в куда это ставить и какой будет адрес?) и я буду крайне благодарен если объясните подробнее, потому что в этом все я крайне сильно запутался и без чужой помощи уже врядли смогу разобраться
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|
11.09.2012, 05:01 | 4 |
atlantic,
зайди сюда Лучший сборник книг в электронном виде по Ассемблеру и скачай книгу Ассемблер и программирование для IBM PC - Абель Питер — создание резидента описано очень подробно
1
|
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
|
|
11.09.2012, 10:44 | 5 |
В таком случае нужно общее описание задачи. Например: есть некоторое устройство, которым надо управлять с персоналки (если я правильно понял); устройство сопрягается с ПК так-то и так-то; операционная система такая-то. Возможно, что это реализуемо и не на чистом ассемблере. Можно выложить это и на фриланс. Но в рамках форума обсуждать всю задачу будет сложно. А что это за порты 0D9Ch, 0DA3h? И на персоналке инициализация ПКП идет через другие порты. Может быть это какой-то микроконтроллер (однокристалка)? В таком случае нужно запостить в другой раздел форума - Электроника и радиотехника.
0
|
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 5
|
|
11.09.2012, 11:44 [ТС] | 6 |
спасибо, качаю, попытаюсь разобраться
Ну вообще это курсач, если честно, - задача спроектировать устройство и написать к нему программу, задача устройства считать количество деталей и выводить текущее количество на индикаторы, а так же при нажатии кнопки выводить текущее значение на ВУ. Там используется датчик, таймер, мкп, пкп, память ну и индикаторы и ещё чего по мелочи. В принципе все было сделано, но вот с прерываниями и адресом где будет располагаться подпрограмма я запутался и пытаюсь узнать это. Поидее это именно тот раздел который мне нужен. В теории мне в принципе было понятно что куда и откуда идет и как работает, а вот на конкретном примере не могу понять.
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
11.09.2012, 12:35 | 7 |
Сообщение от atlantic
0
|
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
|
|
11.09.2012, 14:48 | 8 |
Да я уже стал догадываться, что мы говорили о разных вещах. Здесь, в основном, постятся программеры под персоналки. А раз речь о проектировании устройства, то это на однокристаллке. Там архитектура отличается от INTEL-совместимых процессоров и поэтому надо обратиться к "Электроника и радиотехника". Там ребята занимаются подобными вопросами, т.е. электроникой (обвязкой) и программированием, а здесь тебя уведут совсем не в ту сторону (я уже по ответам вижу, в том числе и своим). Только им надо будет сразу сказать "фамилию" процессора, на котором предполагается делать устройство, т.к. у разных процессоров архитектура и, соответственно, ассемблер разные.
1
|
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 5
|
|
11.09.2012, 19:08 [ТС] | 9 |
Ладно, а если чуть изменить вопрос - допустим есть начальный адрес памяти - 90 000H, в программе мы делаем смещение ORG 100H, оставшаяся программа занимает допустим 137 байт. Соответственно следующая программа/подпрограмма будет дальше. Как исходя из этого найти ее физический адрес и узнать что будет записано в ячейку памяти?
Знаю что физический адрес находиться как (сег регистра * 16) + смещение. Ну или из значений CS и IP. А из того что я написал выше можно найти? Ну или все же мне лучше обратиться в "Электронику и радиотехнику" ?
0
|
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
|
||||||
11.09.2012, 19:42 | 10 | |||||
Для реального режима процессора в 16-битном ассемблере INTEL это выглядело бы так:
А физический адрес будет равен CS*16 + OffSet ProcInterrupt (для реального режима)
1
|
11.09.2012, 19:42 | |
11.09.2012, 19:42 | |
Помогаю со студенческими работами здесь
10
Как получить IP адрес? Как получить МАС-адрес? Как получить ип адрес сайта? Как получить адрес по альянсу? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |