![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
lemuriaIATE |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.10.2007 Репутация: 1 Всего: 1 |
Здравствуйте. Вопрос такой. Есть программа, выполняющая сортировку массива, написана на паскале, но сама процедура сортировки на ассемблере. Интересует, каким образом передаются параметры из паскаля в ассемблер (по каким адресам), а если точнее - есть один конкретный вопрос - что хранится по адресу [bp+8]. Перечитала уже много всего по этому вопросу, ничего толкового не нашла, ответьте, пожалуйста, или хотя бы дайте скажите, где про это хорошо и подробно написано.
что же хранится в этом проклятом [bp+8]?? заранее очень благодарна. хотя бы ссылочку... |
||||
|
|||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 34 Всего: 116 |
![]() |
|||
|
||||
lemuriaIATE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.10.2007 Репутация: 1 Всего: 1 |
в том-то и дело, что по-хорошему все и должно быть именно так, однако здесь всего два параметра и передаются они в [BP + 6] и [BP +10], т.е. не подряд. можно было бы предположить, что в [BP + 8] ничего и нет и просто нехорошо написан код, но что-то там точно есть, и судя по всему там какой-то еще параметр, но какой?? или я ошибаюсь?
![]() есть мнение, что там смешение сегмента данных процедуры относительно основной программы, это может быть правдой? Это сообщение отредактировал(а) lemuriaIATE - 27.11.2008, 13:38 |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 34 Всего: 116 |
Во-первых, где ты в коде видишь это пресловутое [bp + 8]? +6 вижу, +10 тоже, где +8 ??? А во-вторых - хинт: не все параметры имеют длину в 2 байта. Есть и четырех-байтовые, правда? Например, указатели. А у тебя второй параметр - это что? Посмотри...
|
|||
|
||||
lemuriaIATE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.10.2007 Репутация: 1 Всего: 1 |
во-первых, этот вопрос с пресловутым [bp + 8] мне задал препод, так что это не мое занудство
![]() во-вторых, да, второй параметр - указатель, но находится-то в 2х байтовом регистре и к [bp + 8] отношения не имеет, по крайней мере так мне сказал тот же препод. но если есть другое мнение, то я готова к нему прислушаться. |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 34 Всего: 116 |
Указатели в TP имеют длину в 32 бита, от этого никуда не денешься. Значит и передаваться будут в процедуру, как 4-х байтовые (не двух, а четырех, и не через регистры, а через стек). Вот и смотри, что вышло: последний параметр - четырехбайтовый - начинается с [BP + 6], а первый - двухбайтовый Integer - с [BP + 6 + 4], т.е., с [BP + 10]... Уточнение: если тебя интересует, что именно находится по адресу [BP+8] - это сегментная часть адреса массива. Смещение лежит в [BP+6]. Это сообщение отредактировал(а) volvo877 - 27.11.2008, 16:04 |
|||
|
||||
lemuriaIATE |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.10.2007 Репутация: 1 Всего: 1 |
неправильно выразилась значит, имела в виду то что bx 2х байтовый
DS? это если по фаронову. не задавайте мне таких вопросов)) у меня сейчас в голове полный бред. то есть по-вашему и [BP + 6] и [BP + 8] занимает указатель? спасибо, я вроде бы начинаю понимать. а в BX тогда получается мы заносим только смещение, т.е. последние 2 байта? |
||||
|
|||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 34 Всего: 116 |
||||
|
||||
lemuriaIATE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.10.2007 Репутация: 1 Всего: 1 |
спасибо!
|
|||
|
||||
phoenixwow |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.4.2009 Репутация: нет Всего: нет |
[Assembler]Задан массив из 20 элементов.Найти и вывести последний из четных элементов массива кратный числу 8
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |