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

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

У меня два вопроса:
1)
Я объявляю сегменты данных, кода и стека:

stack segment word 'STACK'
db ..... ;объявления данних
stack ends

data segment word 'DATA'
db ..... ;объявления данних
data ends

text segment word 'CODE'
.....                       ;код
mov ax, 4c00h
int 21h
text ends

>Сколько памяти выделится для каждого сегмента: целый сегмент (64 кб) или столько, сколько занимает сегмент с объявленными переменными?

2)Есть ли какая-то закономерность относительного размещения этих сегментов в памяти, и могут ли они перекрываться?

(Речь идёт о EXE-программе под DOS)

Спасибо зарание.
Записан
RXL
Технический
Администратор

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

WWW
« Ответ #1 : 26-10-2008 13:02 » new

Подумай - разве запрещено сделать так:
Код:
mov ax, 1000h
mov ss, ax
mov ax, 1001h
mov ds, ax

В файле будет выделено место ровно столько, сколько понадобится для размещения (не забывай про выравнивание - оно вносит коррективы).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
kvych
Гость
« Ответ #2 : 26-10-2008 18:18 » 

То есть, если я напишу

Код:
data segment word 'DATA'
matrix db 400 dup(0)
data ends
то будет выделено 400 байт и вся последующая память будет считаться свободной?
« Последнее редактирование: 26-10-2008 18:20 от ...kvych... » Записан
RXL
Технический
Администратор

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

WWW
« Ответ #3 : 26-10-2008 18:23 » 

Что такое свободная память?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
kvych
Гость
« Ответ #4 : 27-10-2008 16:48 » 

Свободная со сторони ОС, и она может быть выделена другому процессу.
Записан
Basurman
Опытный

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

« Ответ #5 : 28-10-2008 05:03 » 

Вот как раз в последующей памяти и может сидеть другой процесс, а свободная память будет где то в другом месте.
Записан
kvych
Гость
« Ответ #6 : 28-10-2008 17:51 » 

Спасибо, я узнал всё, что хотел. Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines