Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 11:24   #1
Sapsan_Williams
 
Регистрация: 05.07.2011
Сообщений: 7
По умолчанию Проблема с компиляцией первой программы.

Здравствуйте; начал заниматься по учебнику Калашникова.
Установил masm32; написал программу в блокноте, сохранив в формате .asm (она должна выводить на экран строчку "Hello, world").
Скопировал ее в /bin.
Открыл папку, в которую сохранил программу, из командной строки и набрал "c:\masm32\bin\ml /c prog.asm"

За этим последовало
"Assembling prog.asm
Error A2024: invalid operand size for instruction".
Использовал поиск по форуму, топиков с такой же проблемой не нашел.

2) некоторое время я занимался по урокам bitfry'я (bitfry.narod.ru). Там я программы набирал в Hiew и, соответственно, переводил каждую строчку в машинный код по отдельности.
Вопрос: зачем стоит пользоваться masm'ом, когда есть шестнадцатеричный редактор со встроенным ассемблером и дизассемблером?
Sapsan_Williams вне форума Ответить с цитированием
Старый 05.07.2011, 12:12   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> invalid operand size for instruction

покажите исходник, телепаты в отпуске

> зачем стоит пользоваться masm'ом, когда есть шестнадцатеричный редактор

зачем летать самолётами, когда и пешком можной дойти куда угодно
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.07.2011, 16:10   #3
Sapsan_Williams
 
Регистрация: 05.07.2011
Сообщений: 7
По умолчанию

>телепаты в отпуске


CSEG segment
org 100h

Begin:

mov ah, 9
mov dx, offset Message
int 21dh

int 20dh

Message db 'Hello_world!$'
CSEG ends
end Begin
Sapsan_Williams вне форума Ответить с цитированием
Старый 05.07.2011, 16:16   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> int 21dh
> int 20dh

в масме не силён, но d тут явно лишнее
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.07.2011, 16:45   #5
Sapsan_Williams
 
Регистрация: 05.07.2011
Сообщений: 7
По умолчанию

Да, точно; спасибо.
Скомпилировал .obj-файл. Когда ввожу "с:\masm32\bin\link16.exe prog.obj/t", поочередно появляются строчки "Run file", "List file", "Libraries" и "definitions file", в каждой из которых мне нужно ввести какое-то значение.
Поиск говорит, что в "Run file" нужно ввести имя исполнительного файла.
В "List file" - имя файла, где будут находиться таблица имен и размеров сегментов и ошибки, обнаруженные LINK;
В "Libraries" - имена подключаемых библиотек.
Про "definition files" не нашел.
Дело в том, что мне от этого совсем не легче: я все равно не понимаю, что нужно прописывать. Объясните, пожалуйста.

В "Run file" написал "prog.com"; в "List file" - NUL (увидел в каком-то топике на форуме), остальное оставил пустым.
Sapsan_Williams вне форума Ответить с цитированием
Старый 05.07.2011, 16:46   #6
Sapsan_Williams
 
Регистрация: 05.07.2011
Сообщений: 7
По умолчанию

файл появился в \bin, но после запуска тут же закрывается, не выводя на экран никакое "Hello, world".
Sapsan_Williams вне форума Ответить с цитированием
Старый 05.07.2011, 16:52   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы запустите его через батник
Код:
@prog.com
@pause
чтоб консоль не закрылась.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2011, 16:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну или добавить ожидание в саму программу...

например, так:
Код:
.....

        ; выведем надпись о нажатии любой клавиши
        mov    ah, 9h
        lea    dx, PressAny
        int    21h

        ; ожидание нажатия любой клавиши для выхода
        xor ah,ah
        int 16h

        ret

Message db 'Hello_world!$'

PressAny db 13,10,'Press any key...',13,10,'$'
CSEG ends
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.07.2011, 17:00   #9
Sapsan_Williams
 
Регистрация: 05.07.2011
Сообщений: 7
По умолчанию

ввел @prog.com - в консоле появилась строка "Hello, world."
Я совершенно не понял несколько вещей:
1) Что я сейчас сделал.
2) Почему программа не запускается из проводника.
3) Почему она запускается из консоли таким образом.
Sapsan_Williams вне форума Ответить с цитированием
Старый 05.07.2011, 17:05   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
в консоле появилась строка "Hello, world."
А что, по вашему, Вы ожидали увидеть в консоли?!!

Ваша программа консольная (точнее, вообще DOS), поэтому открывает окно консоли.
Дальше, в тексте программы Вы выводите сообщение.
(оно и выводится в консоль)

после этого ваша программа заканчивает свою работу. (Windows убирает консольное окно - т.е. ему поступила команда, что Ваша программа закончила работу). Добавив батник, вы заставили Windows написать в консоли Press any key и подождать нажатия Enter, после чего консоль (батник закончил работу) опять таки закрылась..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с компиляцией в VS8 программы,написанной на Си. Assylkhan Общие вопросы C/C++ 2 18.06.2011 06:13
Проблема с компиляцией программы Cpluser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 10.12.2010 21:16
Проблема с компиляцией MattStifler Общие вопросы C/C++ 6 21.04.2010 20:52
Проблема с компиляцией apocalypce Общие вопросы Delphi 7 02.10.2009 18:31
проблема с компиляцией @gent БД в Delphi 5 11.09.2007 10:09