Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается простая com программа, По книге Зубков С.В. 
:(
    Опции темы
Kryndach
Дата 12.4.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я читал книгу Зубкова и решил создать com программу. Скачал MASM32 и сделал как в книге:
код
Код

; hello-l.asm
; Выводит на экран сообщение "Hello World!" и завершается
        .model     tiny              ; модель памяти, используемая для СОМ
        .code                        ; начало сегмента кода
        org        100h              ; начальное значение счетчика - 100h
start:  mov        ah,9              ; номер функции DOS - в АН
        mov        dx,offset message ; адрес строки - в DX
        int        21h               ; вызов системной функции DOS
        ret                          ; завершение СОМ-программы
message db         "Hello World!",0Dh,0Ah,'$' ; строка для вывода
        end        start             ; конец программы




сомпиляция:
ml /c hello-1.asm
link hello-1.obj,,NUL,,,
exe2bin hello-1.exe hello-1.com

Подскажите как надо. Я точно не уверен что нужно использовать именно MASM32. Буду ооочень признателен.
PM MAIL   Вверх
Akina
Дата 12.4.2007, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А что не получается-то?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kryndach
Дата 12.4.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Когда компилирую выдает ошибку:

D:\masm32\bin>ml /c hello-1.asm
Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997.  All rights reserved.

 Assembling: hello-1.asm

D:\masm32\bin>link hello-1.obj,,NUL,,,
Microsoft ® Incremental Linker Version 5.12.8078
Copyright © Microsoft Corp 1992-1998. All rights reserved.

LINK : fatal error LNK1181: cannot open input file "hello-1.obj,,NUL,,,"

D:\masm32\bin>exe2bin hello-1.exe hello-1.com
Файл не найден - HELLO-1.EXE

Непонятно что означает ,,NUL,,, и /c
А у вас все работает нормально?
PM MAIL   Вверх
Akina
Дата 12.4.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Kryndach @  12.4.2007,  18:40 Найти цитируемый пост)
Непонятно что означает ,,NUL,,,

Мне тоже непонятно. Я бы по крайней мере попросил link.exe рассказать о его параметрах запуска и и попробовал бы понять, что там понапихано. Или вернее так - сперва просто попробовал бы link hello-1.obj

Я использую TASM, на котором 1) указанный код собирается без проблем 2) задание при сборке доп. ключа /t позволяет обойтись без exe2bin


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kryndach
Дата 12.4.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я уже пробовал. Мне бы хотелось спросить у тех кто знает MASM32. Както на TASM не охото  переходить.
PM MAIL   Вверх
Akina
Дата 12.4.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Kryndach @  12.4.2007,  19:16 Найти цитируемый пост)
Мне бы хотелось спросить 

А почитать документацию что, не хочется? мне, например, всегда помогало...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kryndach
Дата 13.4.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Документация на Английском - оооочень помогает smile . Вообще я нашол хорошую книгу по асму -  чо не пойму сразу на форум, а пока вопрос закрыт. 
PM MAIL   Вверх
Kryndach
Дата 13.4.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А вот и первый вопрос:
Я пробовал в HIEW_611 вставить такой код:
Код

mov    ax,03      ; В AX значение 3 (параметр видеорежима 80x25)
int    010        ; Подпрограмма установит текстовый видеорежим 80х25,
                  ; при этом экран ДОС очистится

TuLuLa:           ; Всего лишь условная метка, в коде программы её нет 
                  ; Здесь могли быть любые буквы и ":"

mov    ah,02      ; В AH поместить 02 (для int10 - установка курсора)
mov    dx,[0175h] ; В DX загрузить значение из памяти по адресу 175h
                  ; в первый раз там нули, 
                  ; а в следующий проход значения будут увеличены

int    10         ; Установит текстовый курсор в положение, указанное в DX
                  ; DH - номер линии, DL - номер колонки (верх.лев.- 0000)

inc    dh         ; Прибавить 1 к значению DH
add    dl,03      ; Прибавить 3 к значению DL

mov    [0175h],dx ; Сохранить DH и DL в память по адресу 175h

mov    ah,09      ; Функция в int21h - вывод на экран с позиции курсора
mov    dx,00150h  ; В DX адрес текстовой строки, заканчивающейся $
int    021        ; Подпрограмма выведет текстовую строку на экран


cmp    byte ptr [176h],19h ;Сверяется значение байта в памяти с числом 25d
jne    TuLuLa              ;и если значения не равны,
                           ;то прыг на выполнение от метки TuLuLa

mov    ah,010     ; а если были равны, то выполнится эта строка
int    016        ; Подпрограмма дождётся нажатия клавиши
                  ; и вернёт управление на следующую строку

int    020        ; код завершения программы


Первые две команды без проблем а метка вводится с ошибкой. В чем причина и как ее исправить?
PM MAIL   Вверх
MACKLIA
Дата 14.4.2007, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Kryndach @ 12.4.2007,  15:29)
Я читал книгу Зубкова и решил создать com программу. Скачал MASM32 и сделал как в книге:



Так MASM32 для WIN32,а судя по коду эта программа досовская -потому что в WIN32 нет никаких int 21h.
Чтобы сделать программу с таким кодом бери MASM 6.11  
PM MAIL   Вверх
Kryndach
Дата 14.4.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А я вообще щас начал HIEW пользоваться (он сам досовский и на нем создаются дос приложения). Я его с WASM.RU скачал(точно не помню где). 
Щас проблема не в создании com файлов(уже сделал 3 штуки под дос) а в создании метки на языке асма. Конечно для джампа можно обойтись и без меток (jne 00000005  например) но всеже хотелось пользоваться метками. 

То что я спрашиваю не подходит к заголовку темы. Уважаемые Модераторы, может мне создать отдельную тему?
PM MAIL   Вверх
MACKLIA
Дата 17.4.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Kryndach 1)  HIEW не досовский ,а консольный -это очень большая разница.
                             2)  HIEW это в первую очередь Hex-редактор,который служит для редактирования.Программы на нем писать хотя и можно ,но -это мазохизм  smile 
                              3)В HIEW нельзя создавать метки,можно только в команде перехода задать адрес (как я понял ты именно так и делаешь)

Если хочешь создавать дос программы используй  MASM 6.11 (6,12).

Это сообщение отредактировал(а) MACKLIA - 17.4.2007, 21:33
PM MAIL   Вверх
Kryndach
Дата 18.4.2007, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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