Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: инициализация стека  (Прочитано 13455 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pokk
Помогающий

ru
Offline Offline

« : 07-09-2011 12:08 » 

Здравствуйте,у меня возник не большой вопрос про инициализацию стека   
делаю его вот так вот:
Код:
       mov		ax,@data
mov ds,ax
mov ax,@stack
mov sp,ax
Но у меня получается что  в  sp  записывается точно такое же число как и  ds   оно же должно быть другое ?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-09-2011 13:37 » 

1. На стек указывает пара ss:sp, а не ds:sp.

2. Что означает "@" перед меткой и что это за метки вообще?

3. Синтаксис MASM?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
darkelf
Молодой специалист

nl
Offline Offline

« Ответ #2 : 07-09-2011 14:38 » 

Здравствуйте,у меня возник не большой вопрос про инициализацию стека  
делаю его вот так вот:
Код:
       mov		ax,@data
mov ds,ax
mov ax,@stack
mov sp,ax
Но у меня получается что  в  sp  записывается точно такое же число как и  ds   оно же должно быть другое ?
Если @data это сегмент данных, и судя по всему @stack - сегмент стека, то надо говорить:
Код:
	mov ax,@stack
mov ss,ax
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Записан
pokk
Помогающий

ru
Offline Offline

« Ответ #3 : 07-09-2011 14:49 » 

Цитата
На стек указывает пара ss:sp, а не ds:sp.
Ага это я знаю.
Только мне это не сильно говорит.Знаю что   в  sp записывается вершина стека а в ss   что   А черт его знает...
Цитата
2. Что означает "@" перед меткой и что это за метки вообще?
Это не знаю =)
Цитата
3. Синтаксис MASM?
Мм честно говоря не помню    tasm  наверное
Цитата
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Вот это я как раз и хотел  узнать какую команду написать что бы  он нашёл конец
Записан
darkelf
Молодой специалист

nl
Offline Offline

« Ответ #4 : 07-09-2011 15:50 » 

Цитата
Скорее всего надо будет ещё инициализировать sp, чтобы он указывал на конец сегмента стека.
Вот это я как раз и хотел  узнать какую команду написать что бы  он нашёл конец
Смотря где сегмент стека описан, если в текущем файле - то можно сказать что-то типа size @stack - 2  сказать
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 07-09-2011 17:18 » 

RXL, это Turbo Assembler. @ - оператор такой встроенный, будто бы аналогичный assume в MASM или что-то в этом духе.

pokk, а какая у тебя модель памяти? Если tiny или small, то твои танцы со стеком никому не нужны, ибо в них стек совпадает с сегментом кода, только код размещается в начале сегмента, а стек - в конце (у tiny и данные в том же единственном сегменте).
« Последнее редактирование: 07-09-2011 17:22 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
pokk
Помогающий

ru
Offline Offline

« Ответ #6 : 08-09-2011 14:01 » 

Цитата
pokk, а какая у тебя модель памяти? Если tiny или small, то твои танцы со стеком никому не нужны, ибо в них стек совпадает с сегментом кода, только код размещается в начале сегмента, а стек - в конце (у tiny и данные в том же единственном сегменте).
small
т.е его инициализировать не надо ?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 08-09-2011 14:21 » new

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]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines