Что означает DATA SEGMENT USE16 PARA PUBLIC 'DATA' при определении сегмента данных?

Я использую язык ассемблера 80x86.

DATA SEGMENT USE16 PARA PUBLIC 'DATA'
DAT DW 0AH
TMP DB 'WWWWW$' ;中间过程用
TGT DB 'WWWWW$' ;16位二进制数转换后至多为5位加上结束符‘$’
DATA ENDS

PARA означает, что он выровнен по абзацам (16 байт), поэтому адрес seg:off может быть xxxx:0000

Peter Cordes 10.04.2019 15:54

И что значит «общедоступные данные»?

昱文米 10.04.2019 15:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
206
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Директива SEGMENT может принимать две формы.:

name SEGMENT [attributes]

SEGMENT name [attributes]

В данном случае используется первый.


DATA
Это название сегмента

SEGMENT
Это первая форма директивы сегмента.

USE16
При использовании в объявлении сегмента кода определяет размер операнда по умолчанию. При использовании в сегменте данных он ограничивает максимальный размер сегмента.

PARA
Выровнять по абзацам (16 байт).

PUBLIC
Этот сегмент будет объединен с другими сегментами с тем же именем за пределами модуля, чтобы сформировать один непрерывный сегмент.

'DATA'
Это класс сегмента. Он используется компоновщиком для упорядочения и группировки (объединения) сегментов во время компоновки. Каждый сегмент с одним и тем же классом группируется вместе, но возможна и другая группировка (например, данные и неинициализированные данные).

Что значит «Выровнять по абзацам (16 байт)». иметь в виду?

昱文米 10.04.2019 17:15

@ 昱文米 Это означает, что начальный адрес сегмента кратен 16. Когда сегменты объединены, между ними добавляется ноль байтов, чтобы последний сегмент начинался с числа, кратного 16. Начиная с числа, кратного 16, программист для доступа к началу сегмента с адресом вида: xxxx:0000 (как указал Питер). Это позволяет использовать один сегментный регистр для адресации всех данных, даже если их длина достигает 64 КБ.

Margaret Bloom 10.04.2019 21:22

Другие вопросы по теме