Запустить HelloWorld - Assembler
Формулировка задачи:
Доброе время суток!
Хочу воспроизвести пример вот отсюда
Создал файл в блокноте HelloWorld.asm:
У меня MASM находится в C:\masm32
Туда же я скопировал этот файл.
Далее создал make.bat:
Запускаю его с рабочего стола
выдает такую ошибку:
MASM : fatal error A1000: cannot open file : HelloWorld.asm
Вопрос: что я сделал не так? Вроде простая инструкция и без всякого подвоха
comment * ## File id: HelloWorld.asm ## ## ## ## Наша первая программа на асме ## * .386 ; Тип процессора .model flat, stdcall ; Модель памяти ; Подключаем заголовочные файлы include kernel32.inc include user32.inc ; Подключаем библиотеки includelib kernel32.lib includelib user32.lib ; Секция данных .data ; Заголовок Message Box'а szCaption db "Caption", 0 ; Сообщение, которое мы покажем szHelloMsg db "Hello, World!", 0 ; Секция кода .code ; Точка входа start: ; Выводим сообщение invoke MessageBox, 0, offset szHelloMsg, offset szCaption, 0 ; Завершаем работу invoke ExitProcess, 0 end start
rem ------------------------------ rem File id: make.bat rem ------------------------------ set MASMDIR=c:\masm32 %MASMDIR%\bin\ml /c /coff /I%MASMDIR%\include HelloWorld.asm %MASMDIR%\bin\link /SUBSYSTEM:WINDOWS HelloWorld.obj pause
Решение задачи: «Запустить HelloWorld»
textual
Листинг программы
cls set MASMDIR=c:\masm32 set filename=HelloWorld %MASMDIR%\bin\ml /Cp /Gz /I%MASMDIR%\include %filename%.asm || exit %MASMDIR%\bin\Link /LIBPATH:%MASMDIR%\lib %filename%.obj pause
Объяснение кода листинга программы
cls
- команда для очистки консолиset MASMDIR=c:\masm32
- установка пути к директории с ассемблеромset filename=HelloWorld
- установка имени файла для компиляции%MASMDIR%\bin\ml /Cp /Gz /I%MASMDIR%\include %filename%.asm
- компиляция ассемблерного кода в исполняемый файл%MASMDIR%\bin\Link /LIBPATH:%MASMDIR%\lib %filename%.obj
- создание связного файла из объектных файловpause
- приостановка работы программы до нажатия клавиши