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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2011, 07:09   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию борьба c masm32

Долго разбирался, и так и не понял, поэтому решил написать. Как все-таки начать программировать на ассемблере? Скажу, до чего дошел я, хотя может не до того дошел. Ниже мои шаги.
1. Установить masm32 c помощью инсталлятора, просто следовать инструкциям.
2. Открыть masm32editor.exe, написать вот такой код:
Код:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
 
.data
msg db "Hello, world", 13, 10
len equ $-msg
 
.data?
written dd ?
 
.code
start:
push -11
call GetStdHandle
 
push 0
push offset written
push len
push offset msg
push eax
call WriteFile
 
push 0
call ExitProcess
end start
3. Понять, что "compile resource file" не компилит код, который я пишу, а "build all" выдает ошибку.
4. Убедиться, что работает и buildиндится testinst.
5. Удалить все кроме testinst.asm и makeit.bat, записать в testinst.asm свой код и нажать "build all".
5. Открыть получившийся exe и обнаружить, что он не открывается=(

Что добавить, исправить?=(((((((
Krasi вне форума Ответить с цитированием
Старый 30.01.2011, 08:03   #2
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

А что за ошибку то выдает? Да и нет тут ресурсов, что компилировать то...
Дабы сократить количество писанины: что за книгу вы читаете, для каких целей собираетесь использовать ассемблер и обязательно ли использовать MASM?

И да, какую версию вы используете?

UPD: Ваш код компилируется, но по какой то причине не работает, как и пример консольного IO который я нашел в гугле. Но это могут быть всего-навсего проблемы с совместимостью.
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 30.01.2011 в 08:17.
Ivan_32 вне форума Ответить с цитированием
Старый 30.01.2011, 08:52   #3
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

записываете ентот ваш кодес в *.asm файл, открываете его qeditor.exe в данной вырвиглазнойИДЕшечке- меню пункт Project-Console Assemble & Link- получаем файл. Он кстате работает, открывать его в консоли просто надо ибо вы не успеете заметить что там вывелось как канцолько уже закроется.
Ежели и при этом у вас будут ошибки, то уж пишите тогда какие.
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 30.01.2011, 14:32   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Цитата:
Дабы сократить количество писанины: что за книгу вы читаете
Лажу по ссылкам в интернете, признаюсь, что в книгах пока не увидел настройку masm32.
Цитата:
для каких целей собираетесь использовать ассемблер и обязательно ли использовать MASM?
Познаю низкоуровневое программирование, раз встретил первым masm, нужно уже с ним разобраться.
http://website.assemblercode.com/masm32/m32v10r.zip - эту версию использую.
Цитата:
Но это могут быть всего-навсего проблемы с совместимостью.
А что тогда будет точно совместимо? А то я пробовал вставлять другие коды, не помню уже, что смотрел, exe не открывается в любом случае.
Цитата:
открывать его в консоли просто надо ибо вы не успеете заметить
А как в ассемблере ожидание сделать?
Krasi вне форума Ответить с цитированием
Старый 30.01.2011, 14:50   #5
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Krasi Посмотреть сообщение
А как в ассемблере ожидание сделать?
скажем можно с помощью ReadConsole/ReadFile
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 31.01.2011, 07:25   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

И что, в консольном приложении нужно в любом случае задать ввод символа ("нажмите любую клавишу для продолжения"), иначе ждать не будет? Тогда код в студию, чтобы хоть первая программа работала
Krasi вне форума Ответить с цитированием
Старый 31.01.2011, 07:51   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

можно просто слип вызвать:

Код:
push 1000
call Sleep
За секунду и увидеть всё успеете, и нажимать ничё не надо.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 31.01.2011, 13:57   #8
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Krasi Посмотреть сообщение
И что, в консольном приложении нужно в любом случае задать ввод символа ("нажмите любую клавишу для продолжения"), иначе ждать не будет? Тогда код в студию, чтобы хоть первая программа работала
чтобы программы работали ваши надо самому их писать, а не дяденек всяких разных просить, а то работать не ваши будут, а ихие, что не есть гут и совсем нечем потешить собственное ЧСВ
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 31.01.2011, 18:13   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Ну я не разрабатывал систему хранения информации и не писал компиляторы. Это намек, типо надо подать заявку на завод? Хоть чужая сначала заработает=(
Ну ведь не захотела работать=(
Код:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
 
.data
msg db "Hello, world", 13, 10
len equ $-msg
 
.data?
written dd ?
 
.code
start:
push -11
call GetStdHandle
 
push 0
push offset written
push len
push offset msg
push eax
call WriteFile

push 1000
call Sleep
push 0
call ExitProcess
end start

Последний раз редактировалось Krasi; 31.01.2011 в 18:22.
Krasi вне форума Ответить с цитированием
Старый 31.01.2011, 18:18   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Ну я не разрабатывал систему хранения информации и не писал компиляторы. Это намек, типо надо подать заявку на завод?
это про это
Цитата:
И что, в консольном приложении нужно в любом случае задать ввод символа ("нажмите любую клавишу для продолжения"), иначе ждать не будет?
помните что программа делает то что вы написали, соответственно руками пишите ожидание и все.

если сильно надо, запускайте через bat
<ваша прога>
pause
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Борьба с вымогателями Вконтакте Котёнок ГАВ Софт 7 17.02.2011 11:31
Борьба с крякозябрами в консольном приложении fs444 C++ Builder 16 15.12.2009 19:04