Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сегментация и заполнение сегментных регистров.tasm 
V
    Опции темы
En_t_end
Дата 4.8.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Код

;Data segment
data segment para public "data"
message db "Hello World$"
on_close db "Press any key for continue...$"
end_line db 10,'$'
data ends
;
;Stack segment
stk segment stack
db 4 dup ("?")
stk ends
;
;Code segment
code segment para public "code"
main proc
    ;Fill segment registers:
    assume cs:code,ds:data,ss:stk
    mov ax,data;
    mov ds,ax
    ;
    ;Begin ds:message on output
    mov ah,9
    mov dx,offset message
    int 21h
    ;End output
    ;
    mov ah,9
    mov dx,offset end_line
    int 21h
    ;
    mov ah,9
    mov dx,offset on_close
    int 21h
    ;
    mov ah,1h
    int 21h
    ;
    ;End programm,return control to OS
    mov ax,4c00h
    int 21h
    ;End
main endp
code ends
end main

Меня интересует, что же делает assume на самом деле ? Если эта операция связывает сегментные регистры с сегментами, то тогда зачем вручную заполнять ds ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
AlexST
Дата 5.8.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: 1
Всего: 3



Директивой Assume  программист лишь устанавливает соответствие между сегментными регистрами и сегментами. Тем самым получая право не указывать префиксы в большинстве команд (их самостоятельно восстановит ассемблер). Директива не загружает в регистры начальные адреса сегментов, такая загрузка делается отдельно.
PM MAIL ICQ   Вверх
En_t_end
Дата 5.8.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



AlexST, 
Спасибо... это именно то что я хотел услышать.
PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.