Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильно работает скелет программы... 
:(
    Опции темы
suvolod
Дата 25.5.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пожалуйста, помогите понять, что в этой программе не так...

Код


.386
.MODEL LARGE, STDCALL

.data
        str_my db 'Hello, my friend!$'
        ;var2 dd 77777777h

.code
assume cs:@code, ds:@data

START:

        mov ax, @data
        mov ds, ax
        
        lea dx, str_my
        mov ah, 9
        int 21h
        
        mov ah, 4ch
        int 21h
END START



Компилирую таким образом
c:\MASM611\bin\ml /c /Cp %1.asm
C:\MASM611\bin\LINK.EXE "%1.obj" ,,,,,

Программа работает, но вместо str_my выводит какой-то мусор. Явно не спозиционирован сегмент данных, но почему - никак не могу понять smile
 
PM MAIL   Вверх
suvolod
Дата 25.5.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, еще хочу добавить, что мне надо обязательно оставить директиву .386, так как выше приведен только скелет программы, а в нем я использую команды, которые ассемблер понимает только с этой директивой - например, команды для работы с сопроцессором. Короче, я хочу подружить .386 с директивами упрощенного описания сегментов, в том смысле чтобы сегменты оказались корректно спозиционированными - код на cs, данные на ds, ну и так далее... 
PM MAIL   Вверх
ds29
Дата 25.5.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



   
.MODEL small
.386 ;ПОСЛЕ!
.data    
        str_my db 'Hello, my friend!$'    
        ;var2 dd 77777777h    
.code    
;assume cs:@code, ds:@data    
START:    
        mov ax, @data    
        mov ds, ax    
         
        lea dx, str_my    
        mov ah, 9    
        int 21h    
         
        mov ax, 4c00h    ; а не  mov ah, 4ch , т.к. ax может быть "испорчен" 
        int 21h    
END START

а вообще, открой любйю книжку
 
PM MAIL   Вверх
suvolod
Дата 25.5.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, все заработало после того как model и .386 поменял местами. Если несложно, поясните почему обмен местами этих директив заставил программу работать корректно???
У меня дома куча учебников по asm-у, но такие нюансы не рассматриваются, потому и обратился в форум...

Добавлено @ 13:36 
Кстати, используя "model small",  - вы немного схитрили. Я не хочу писать com-программу, возможно мне понадобиться в будущем несколько сегментов кода или данных, соответственно надо будет использовать другие модели памяти  и явно позиционировать сегменты.... 
PM MAIL   Вверх
ds29
Дата 25.5.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



если в двух словах, то .186 , .286 , ... , можешь указать в ЛЮБОМ месте программы непосредственно перед использованием инструкции необходимого процессора, но ПОСЛЕ описания моедли памяти.

например:

mov al,bl
.386
movsx dx,al
.... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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