как передать массив в асм модуль ?, ? |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
как передать массив в асм модуль ?, ? |
kile |
5.06.2004 19:55
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 14 Репутация: 0 |
допустим у меня есть программа на паскале. в ней есть (описан) некоторый массив(любой). с этим массивом надо сделать какие-то изменения (неважно какие), но эти изменения должна делать процедура, которая находится в отдельном модуле. данная процедура должна быть написана на асемблере (то есть надо использовать встроенный ассемблер паскаля). так вот, суть самой проблемы: я не могу передать в эту процедуру сам массив как переменную (то есть передать не массив значний, а массив переменных)... выдается сообщение что операнды н соответствуют друг другу .... я там по всякому уже изголялся, но ничего хорошего так и не получилось.
ЗЫ: однако если в самой процедуре описать массив, то ассебмлер будет его обрабатывать!!!!!! <_< ... это меня смущает... ЗЫ2: как передавать массив в процедуру - я знаю (пишу на всякий случай, чтобы вы это не писали). если есть какие-нить предположения, то напишите мне. спасибо ;). |
GLuk |
5.06.2004 21:07
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Дык может все-таки передавать не массив, а ссылочку на него (тип Pointer)??
Которая будет валяться в стеке и занимать всего 4 б. |
kile |
5.06.2004 23:25
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 14 Репутация: 0 |
не-а, именно сам массив !!!
массив не надо размещать в динамической памяти. |
GLuk |
6.06.2004 6:23
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Да какая разница, он все равно должен быть в стеке.
Разве что описалово процедуры реализуется с VAR, типа (procedure OldDood(var a:array[1..21] of Char);) Цитата Массив не надо размещать в динамической памяти Он у тебя изначально по дефолту там... добавлено позже А что это за извращение-то такое, когда по ссылке нельзя передавать, а весь массив можно и даже нужно, преподы болеют?? Сообщение отредактировано: GLuk - 6.06.2004 6:26 |
kile |
6.06.2004 12:04
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 14 Репутация: 0 |
это не извращение, просто тема : связь ассемблера с языками высокого уровня.
если не сложно, напиши код . |
BlackShadow |
11.06.2004 12:52
Сообщение
#6
|
Гость |
Должно быть где-то так:
Procedure ProcessArray(Var A:TMyArray);External; В саой процедуре надо работать примерно так: И через ES:DI к массиву и обращаться. Естественно A[i] это [SOMETYPE PTR (ES:DI)+i*SIZE SOMETYPE] |
Текстовая версия | 2.05.2024 21:15 |