Шаг 8 - Регистр DS

Для указания сегмента данных используется регистр DS. То есть этот регистр должен указывать на начало данных в нашей программе или на сегмент DATASEG. Мы с Вами в шаге "Шаг 3 - Программа HelloWord" делали так:

mov ax,@data 
mov ds,ax 

Во-первых, что такое @data - это идентификатор DATASEG при компиляции и сборки приложения на место этого слова будет поставлено реальное смещение сегмента, в котором находятся данные. Ведь до сборки программы мы этого не знаем. Так как при данному модели памяти данных хранятся в конце кода программы, то даже добавление одной команды к изменению его местоположения. И реально это число будет известно только при сборке.

А почему мы помещаем сначала в регистр AX? То же все просто есть правило - Вы не можете непосредственно изменять содержимое регистров CS,DS,SS. То есть мы не можем написать так:

mov ds,12345

Мы можем изменить этот регистр только используя другие регистры. Итак, смотри все вместе:

mov ax,@data 	; в регистра AX смещение для данных
mov ds,ax		; установить регистр DS равный AX то ест теперь там смещение.

Вот так. Я приведу окно из отладчика, о котором расскажу позже:

8_1.gif (5729 b)

Вот смотрите, это наш код в командах процессора после выполнения команды mov ds,ax у нас регистр DS будет равен регистру AX и в данном случае от 1343.

Итак, у нас есть регистр DS, в который мы не можем непосредственно получить доступ, а только используя другие регистры. Этот регистр указывает на данные.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 27.11.2001