What? Where? Why?
106 / 106 / 32
Регистрация: 16.10.2012
Сообщений: 459
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Вызов процедуры из модуля12.10.2013, 01:39. Показов 3535. Ответов 4
Метки нет (Все метки)
Имеется код основной программы:
А еще вопрос в том, что по заданию нужно, чтобы в процедуру параметры передавались через стек, но и процедура при входе в нее должна сохранять все регистры. И возникает еще один вопрос, если в начале процедуры сделать pusha, то каким образом доставать из стека параметры переданные ей? Добавлено через 1 час 10 минут Может не совсем верно, но пока сделал так
Оставил вот так:
Однако вопрос про передачу данных в процедуру через стек и в тоже время сохранение всех регистров остается в силе. Добавлено через 27 минут pusha и popa всё же необходимы, что собственно логично, т.к. нам нужно знать, куда возвращаться. Но как тогда понять смысл задания? "Передача параметров во вспомогательную процедуру организуется через стек. Все необходимые вспомогательной процедуре переменные должны быть организованы как локальные и размещены в стеке. Вспомогательная процедура использует стек главной процедуры и не имеет собственного сегмента данных" Добавлено через 1 час 22 минуты Проблема решена В контексте данной лабы решение нашлось ручным смещением относительно стека. Надеюсь в реальных программах передача параметров в процедуры осуществляется иным способом)
0
|
12.10.2013, 01:39 | |
Ответы с готовыми решениями:
4
Вызов ассемблерной процедуры в программе на Си Вызов процедуры на языке ассемблер из программы на Си Вызов процедуры после вызова макроса Вызов процедуры из модуля |
Ушел с форума
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
|
||||||
12.10.2013, 03:40 | 2 | |||||
Exception,
проблема в том, что для Windows-программы ты вызываешь far-процедуру, а в MODEL flat процедуры должны быть типа near, кроме того не понятно для чего в программе для Windows используются 16-разрядные регистры, при такой передаче
1
|
What? Where? Why?
106 / 106 / 32
Регистрация: 16.10.2012
Сообщений: 459
|
|
12.10.2013, 03:59 [ТС] | 3 |
А каким образом можно сделать, чтобы метки с одинаковыми именами в основной программе и в модуле считались всё-таки различными?)
0
|
Ушел с форума
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
|
|
12.10.2013, 04:14 | 4 |
Exception,
MASM (а ты пишешь на MASM'e) считает метки внутри процедуры локальными, посмотри, я уже отвечал в Локальные метки
1
|
What? Where? Why?
106 / 106 / 32
Регистрация: 16.10.2012
Сообщений: 459
|
|
12.10.2013, 13:28 [ТС] | 5 |
Mikl___, Локальными? Однако пока я не изменил имя метки "Exit" в процедуре, то в итоге jmp по метке Exit в процедуре прыгал на Exit в основной программе.
0
|
12.10.2013, 13:28 | |
12.10.2013, 13:28 | |
Помогаю со студенческими работами здесь
5
Вызов процедуры из модуля Вызов процедуры из другого модуля Вызов процедуры формы из модуля Вызов процедуры из другого модуля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |