Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Ассемблер
(Модератор:
Tuborg
) > Тема:
инициализация стека
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: инициализация стека (Прочитано 13348 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
pokk
Помогающий
Offline
инициализация стека
«
:
07-09-2011 12:08 »
Здравствуйте,у меня возник не большой вопрос про инициализацию стека
делаю его вот так вот:
Код:
mov ax,@data
mov ds,ax
mov ax,@stack
mov sp,ax
Но у меня получается что в sp записывается точно такое же число как и ds оно же должно быть другое ?
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: инициализация стека
«
Ответ #1 :
07-09-2011 13:37 »
1. На стек указывает пара ss:sp, а не ds:sp.
2. Что означает "@" перед меткой и что это за метки вообще?
3. Синтаксис MASM?
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
darkelf
Молодой специалист
Offline
Re: инициализация стека
«
Ответ #2 :
07-09-2011 14:38 »
Цитата: pokk от 07-09-2011 12:08
Здравствуйте,у меня возник не большой вопрос про инициализацию стека
делаю его вот так вот:
Код:
mov ax,@data
mov ds,ax
mov ax,@stack
mov sp,ax
Но у меня получается что в sp записывается точно такое же число как и ds оно же должно быть другое ?
Если @data это сегмент данных, и судя по всему @stack - сегмент стека, то надо говорить:
Код:
mov ax,@stack
mov ss,ax
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Записан
pokk
Помогающий
Offline
Re: инициализация стека
«
Ответ #3 :
07-09-2011 14:49 »
Цитата
На стек указывает пара ss:sp, а не ds:sp.
Ага это я знаю.
Только мне это не сильно говорит.Знаю что в sp записывается вершина стека а в ss что
Цитата
2. Что означает "@" перед меткой и что это за метки вообще?
Это не знаю =)
Цитата
3. Синтаксис MASM?
Мм честно говоря не помню tasm наверное
Цитата
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Вот это я как раз и хотел узнать какую команду написать что бы он нашёл конец
Записан
darkelf
Молодой специалист
Offline
Re: инициализация стека
«
Ответ #4 :
07-09-2011 15:50 »
Цитата: pokk от 07-09-2011 14:49
Цитата
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Вот это я как раз и хотел узнать какую команду написать что бы он нашёл конец
Смотря где сегмент стека описан, если в текущем файле - то можно сказать что-то типа size @stack - 2 сказать
Записан
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: инициализация стека
«
Ответ #5 :
07-09-2011 17:18 »
RXL
, это Turbo Assembler. @ - оператор такой встроенный, будто бы аналогичный assume в MASM или что-то в этом духе.
pokk
, а какая у тебя модель памяти? Если tiny или small, то твои танцы со стеком никому не нужны, ибо в них стек совпадает с сегментом кода, только код размещается в начале сегмента, а стек - в конце (у tiny и данные в том же единственном сегменте).
«
Последнее редактирование: 07-09-2011 17:22 от Dimka
»
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
pokk
Помогающий
Offline
Re: инициализация стека
«
Ответ #6 :
08-09-2011 14:01 »
Цитата
pokk, а какая у тебя модель памяти? Если tiny или small, то твои танцы со стеком никому не нужны, ибо в них стек совпадает с сегментом кода, только код размещается в начале сегмента, а стек - в конце (у tiny и данные в том же единственном сегменте).
small
т.е его инициализировать не надо ?
Записан
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: инициализация стека
«
Ответ #7 :
08-09-2011 14:21 »
pokk
, для small не надо.
http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_Intel_x86
Выше я неправду сказал. Сегмент стек в small совпадает с сегментом данных, а не кода.
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Ассемблер
(Модератор:
Tuborg
) > Тема:
инициализация стека
Загружается...