Запустить HelloWorld - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброе время суток! Хочу воспроизвести пример вот отсюда Создал файл в блокноте 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
У меня MASM находится в C:\masm32 Туда же я скопировал этот файл. Далее создал make.bat:
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
Запускаю его с рабочего стола выдает такую ошибку: MASM : fatal error A1000: cannot open file : HelloWorld.asm Вопрос: что я сделал не так? Вроде простая инструкция и без всякого подвоха

Решение задачи: «Запустить 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

Объяснение кода листинга программы

  1. cls - команда для очистки консоли
  2. set MASMDIR=c:\masm32 - установка пути к директории с ассемблером
  3. set filename=HelloWorld - установка имени файла для компиляции
  4. %MASMDIR%\bin\ml /Cp /Gz /I%MASMDIR%\include %filename%.asm - компиляция ассемблерного кода в исполняемый файл
  5. %MASMDIR%\bin\Link /LIBPATH:%MASMDIR%\lib %filename%.obj - создание связного файла из объектных файлов
  6. pause - приостановка работы программы до нажатия клавиши

Оцени полезность:

7   голосов , оценка 4 из 5