|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2011, 11:24 | #1 |
Регистрация: 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'ом, когда есть шестнадцатеричный редактор со встроенным ассемблером и дизассемблером? |
05.07.2011, 12:12 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> invalid operand size for instruction
покажите исходник, телепаты в отпуске > зачем стоит пользоваться masm'ом, когда есть шестнадцатеричный редактор зачем летать самолётами, когда и пешком можной дойти куда угодно
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
05.07.2011, 16:10 | #3 |
Регистрация: 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 |
05.07.2011, 16:16 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> int 21dh
> int 20dh в масме не силён, но d тут явно лишнее
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
05.07.2011, 16:45 | #5 |
Регистрация: 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 (увидел в каком-то топике на форуме), остальное оставил пустым. |
05.07.2011, 16:46 | #6 |
Регистрация: 05.07.2011
Сообщений: 7
|
файл появился в \bin, но после запуска тут же закрывается, не выводя на экран никакое "Hello, world".
|
05.07.2011, 16:52 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а вы запустите его через батник
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
05.07.2011, 16:58 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну или добавить ожидание в саму программу...
например, так: Код:
|
05.07.2011, 17:00 | #9 |
Регистрация: 05.07.2011
Сообщений: 7
|
ввел @prog.com - в консоле появилась строка "Hello, world."
Я совершенно не понял несколько вещей: 1) Что я сейчас сделал. 2) Почему программа не запускается из проводника. 3) Почему она запускается из консоли таким образом. |
05.07.2011, 17:05 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Ваша программа консольная (точнее, вообще DOS), поэтому открывает окно консоли. Дальше, в тексте программы Вы выводите сообщение. (оно и выводится в консоль) после этого ваша программа заканчивает свою работу. (Windows убирает консольное окно - т.е. ему поступила команда, что Ваша программа закончила работу). Добавив батник, вы заставили Windows написать в консоли Press any key и подождать нажатия Enter, после чего консоль (батник закончил работу) опять таки закрылась.. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с компиляцией в 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 |