Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2013, 20:23   #1
Girei
Пользователь
 
Аватар для Girei
 
Регистрация: 22.10.2013
Сообщений: 72
Смущение Вопросы по "Курсу молодого бойца"

Не знаю, была ли тема, вроде, не нашел. Дорогие гуру и не гуру, не так давно началось изучение ассемблера у меня в вузе. Это событие совпало с моим созреванием для самостоятельно изучения вышеописанного (пробовал раньше - ничего вообще было не понятно). И с первых статей уже появились вопросы., а именно: http://programmersclub.ru/assembler3/
Не могу понять, что происходит в памяти при заполнении стека:
1. Если стек заполняется так, как показано, то почему ESP изначально установлен не на последнюю ячейку?
2. В примере в стек записываются числа формата XXXXh, как будет выглядеть все это дело, если попытаться занести туда число XXXh?
3. По какому принципу во время занесения значения в edx ESP переходит на значение, предшествующее первому занесенному?
4. Не могу полностью понять механизм занесения значения в edx.
Girei вне форума Ответить с цитированием
Старый 23.10.2013, 08:47   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Страницу не смотрел.
1) Потому что запись байтов будет в [ESP+0], [ESP+1], [ESP+2] и [ESP+4], т.е. в стеке должно быть место для данных.
2) Наверное будет 0ХХХh
Для 3 и 4 наверно надо смотреть примеры, иначе непонятно.
waleri вне форума Ответить с цитированием
Старый 23.10.2013, 08:48   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

1. При нормальной работе программы в самом начале содержимое ESP указывает на конец (последнюю ячейку) сегмента стека.
2. число XXXXh занимает 16 разрядов, а число XXXh - 12 разрядов. При 8/16/32 разрядной адресации к стеку 12 разрядов могут записаться только как 0XXXh или 00000XXXh. Да и явно хранить 12 разрядное число на ПК на основе x86 архитектуры не получится. Придется дополнять нулями до 16 разрядов.
3. если из стека забирается EDX (4 байта), то к значению ESP прибавляется 4 и указатель смещается на 4 байта сегмента.
4. чем меньше адрес байта в сегменте, тем меньшее положение этого байта в EDX.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Assembler. Курс молодого бойца. AngelOfDeath О форуме и сайтах клуба 2 06.11.2008 08:53