Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1519 | Дата выхода: | 10.06.2012, 14:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 90 / 38 | Вопросов / ответов: | 1 / 1 | Консультация # 186329: Здравствуйте, уважаемые эксперты. Есть простейшая программа, выводит "Hello, World!", вот она: Код : .model small stack 100h data msg db 'Hello, World!$' code start: mov ax,@data mov ds,ax mov ah,9 mov dx,o ... Консультация # 186329: Здравствуйте, уважаемые эксперты. Есть простейшая программа, выводит "Hello, World!", вот она:
Код : .model small stack 100h data msg db 'Hello, World!$' code start: mov ax,@data mov ds,ax mov ah,9 mov dx,offset msg int 21h mov ax,4c00h int 21h end start Просматривая дамп, получил странную картину(прилагаю): данные идут не с нуля, как в коде, а с некоторым смещением. Проверял на других программах, то же самое. Заметил, что перед данными каким-то образом влезает хвост программы из сегмента кода. Изменил код с упрощенной записи(.model small и т.п.) на классическую - баг изчез. Что бы это могло быть, и можно ли исправить?
 Дата отправки: 06.06.2012, 17:58 Вопрос задал: Антон (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Зенченко Константин Николаевич (Модератор): Здравствуйте, Антон!
Проблема связана с тем, как разработчики компиляторов MASM и TASM смотрят на упрощенные директивы определения сегментов. Оба компилятора одинаково генерируют служебную информацию о сегментах в том числе и о выравниваниии(masm,tasm соответственно):


Но по разному генерируют код:

 Это видно по адресам 0х0000(В8 хх хх) и 0х0007(ВА хх хх). MASM совмещает сегменты данных и кода учитывает выравнивание и сегмент данных начинается с ненулевой позиции текущего параграфа, тем самым сокращается длина сгенерированого кода. Полная противоположность TASM, сегмент всегда выравнивается на начало параграфа.
Удачи!  | Консультировал: Зенченко Константин Николаевич (Модератор) Дата отправки: 08.06.2012, 12:22 5 нет комментария ----- Дата оценки: 08.06.2012, 14:09 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий