Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 06.02.2020
Сообщений: 20

Разместить секцию .const вплотную к секции .code

06.02.2020, 12:24. Показов 1206. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Между секцией .code и секцией .const разрыв в 16 байтов. Подсмотрено в оллидебугере. Можно ли его убрать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2020, 12:24
Ответы с готовыми решениями:

Как правильно разместить секцию импорта в секции кода?
Я тут посмотрел файл masm1k.exe, это оконное приложение, весом в 1 кб (!). У него отсутствует секция импорта, её как-то запихали в...

Секции .code, .data и т.п. Где они в исходном файле?
Как дизассемблер обнаруживает что это секции и откуда они начинаются и как называются? Хочу их лично найти в файле!

Как разместить блоки вплотную?
Как разместить на рисунке 2 блока вплотную друг к другу? То есть как задать нулевой интервал? В настройках задается минимум только 0.5....

6
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
06.02.2020, 19:25
etu, в упрощенных директивах сегментации вроде такого не предусмотрено.. а вот в стандартных директивах сегментации пожалуйста и на здоровье..
Assembler
1
2
3
ИмяСегмента SEGMENT align combine dim ‘class’
…
ИмяСегмента ENDS
атрибут выравнивания сегмента (тип выравнивания) align сообщает компоновщику о том, что нужно обеспечить размещение начала сегмента на заданной границе. допустимые значения этого атрибута следующие:

BYTE — выравнивание не выполняется. сегмент может начинаться с любого адреса памяти;
WORD — сегмент начинается по адресу, кратному двум, то есть последний (младший) значащий бит физического адреса равен 0 (выравнивание на границу слова);
DWORD — сегмент начинается по адресу, кратному четырем, то есть два последних (младших) значащих бита равны 0 (выравнивание по границе двойного слова);
PARA — сегмент начинается по адресу, кратному 16, то есть последняя шестнадцатеричная цифра адреса должна быть 0h (выравнивание по границе параграфа);
PAGE — сегмент начинается по адресу, кратному 256, то есть две последние шестнадцатеричные цифры должны быть 00h (выравнивание по границе страницы размером 256 байт);
MEMPAGE — сегмент начинается по адресу, кратному 4 Кбайт, то есть три последние шестнадцатеричные цифры должны быть 000h (адрес следующей страницы памяти размером 4 Кбайт);

по умолчанию тип выравнивания имеет значение PARA..
2
0 / 0 / 1
Регистрация: 06.02.2020
Сообщений: 20
07.02.2020, 12:39  [ТС]
Теорию я знаю. Хотелось бы увидеть работающий пример.
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
08.02.2020, 00:32
etu, вот самая простая программа..
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.model small
 
data segment byte
    msg db 'hello!$'
data ends
 
stk segment byte stack 'stack'
    dw 100 dup(?)
stk ends
 
code segment byte
assume cs:code,ds:data,ss:stk
start:
    mov ax,data
    mov ds,ax
 
    mov ah,4Ch
    mov al,0
    int 21h
code ends
end start
загружаем в отладчике и выполняем инициализацию сегмента данных..


в дампе памяти можно видеть, что первые 11 байт заняты машинным кодом самой программы, а сразу следом за этим идет строка из сегмента данных, т.к. атрибут byte..
1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
08.02.2020, 00:39
если выставить значение атрибута word..
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.model small
 
data segment word
    msg db 'hello!$'
data ends
 
stk segment word stack 'stack'
    dw 100 dup(?)
stk ends
 
code segment word
assume cs:code,ds:data,ss:stk
start:
    mov ax,data
    mov ds,ax
 
    mov ah,4Ch
    mov al,0
    int 21h
code ends
end start
..то уже будет зазор в один нулевой байт между машинным кодом программы и сегментом данных..


и т.д. по такому же принципу установки атрибута выравнивания..
1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
08.02.2020, 00:45
вот, так будет лучше в дампе видно по атрибуту word.. код программы занимает 11 байт,
ближайшее четное количество равно 12 байтам, вылазит дополнительно нулевой байт..
1
5 / 4 / 2
Регистрация: 08.02.2020
Сообщений: 8
Записей в блоге: 1
08.02.2020, 04:20
Зачем вам это нужно, это глупость или вы собираете Интро 128 байт для сцены 1993 года?
Тогда да, нужно каждый условный переход делать коротким, использовать смарт-директиву.
Сейчас-же, вы никогда не воспользуетесь своими 16-разрядными программами, виртуальные/боксы не в счет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2020, 04:20
Помогаю со студенческими работами здесь

Как разместить переменную типа const uint8_t во флеше в секторе размером 16 килобайт, STM32f205
Как разместить переменную типа const uint8_t во флеше в секторе размером 16 килобайт, STM32f205. В STM32f205, чтоб записать во флеш одну...

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

Раздельная компиляция в Code::Blocks - как правильно разместить код в файлах?
В проекте code blocks есть функция main, несколько функций, которые подключаются как статические библиотеки, и структура (struct), которая...

Может ли быть в секции еще секции?
Добрый времени суток. Я самообучаюсь верстке, поэтому у меня к вам такие простые и странные вопросы. Верстаю с бутстрапом. Есть...

Структуры. Вывести информацию по победителю в каждой секции и найти средний бал по каждой секции
Ведомости про участников конкурса содержат следующую информацию: фамилию,имя,секцию,набранный балл.Вывести информацию по победителю в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru