41. Сегмент данных
Сегмент данных предназначен для определения констант, рабочих переменных и областей ввода-вывода.
С этим сегментом связан регистр DS, который содержит адрес текущего сегмента данных.
В модели SMALL описание сегмента данных производится с помощью упрощенной директивы сегментации . DATA.
! Замеч. Из трех сегментных регистров CS, DS, SS необходимо проинициализировать в программе только регистр DS. Регистры CS, SS инициализирует сама операционная система, так как именно она определяет местоположение сегментов кода и стека и «знает», какое значение должно быть записано в соответствующие регистры.
!! Загрузка базового адреса сегмента данных в регистр DS должна быть выполнена в программе до того, как произойдет первое обращение к данным.
Обычно инициализация сегмента DS производится следующими командами:
MOV AX,@data ; значением @data явл. Физ.адрес сегмента данных
MOV DS,AX ;вместо ax можно использ. любой регистр общ.назначения
Для описания простых типов данных в программе используются специальные директивы резервирования и инициализации данных, которые, по сути, являются указаниями транслятору на выделение определенного объема памяти.
! Машинного эквивалента этим директивам нет; просто транслятор, обрабатывая каждую такую директиву, выделяет необходимое количество байт памяти и при необходимости инициализирует эту область некоторым значением.
Директивы резервирования и инициализации данных простых типов:
•db — резервирование памяти для данных размером 1 байт.
•dw — резервирование памяти для данных размером 2 байта.
•dd — резервирование памяти для данных размером 4 байта.
•df — резервирование памяти для данных размером 6 байт;
•dp — резервирование памяти для данных размером 6 байт.
•dq — резервирование памяти для данных размером 8 байт.
•dt — резервирование памяти для данных размером 10 байт.