Fatal error a1000 cannot open file masm32 include windows inc


Рейтинг 4.57/88:

bogdan11

0 / 0 / 0

Регистрация: 05.04.2018

Сообщений: 10

12.09.2018, 12:44. Показов 17333. Ответов 2

Метки 2, masm32, отладчик (Все метки)


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.486
.model flat, stdcall
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm
uselib masm32, comctl32, ws2_32
.data
msg_title db "title",0
x dd 0,1,2,3,4,5,6,7,8,9,10,11
n dd 12
bufer db 128 dup(?)
format db "%d",0
.code
start:
mov eax,0
mov ecx, n
mov ebx, 0
L: add eax, x[ebx]
add ex, type x
dec ecx
cmp ecx, 0
jne L
invoke wsprintf, addr buffer, addr format, eax
invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK
invoke ExitProcess, 0
end start.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.486
.model flat, stdcall
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm
uselib masm32, comctl32, ws2_32
.data
msg_title db "title",0
x dd 0,1,2,3,4,5,6,7,8,9,10,11
n dd 12
bufer db 128 dup(?)
format db "%d",0
.code
start:
mov eax,0
mov ecx, n
mov ebx, 0
L: add eax, x[ebx]
add ex, type x
dec ecx
cmp ecx, 0
jne L
invoke wsprintf, addr buffer, addr format, eax
invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK
invoke ExitProcess, 0
end start.

Внимание! В ходе построения обнаружены ошибки:
Assembling: C:\Users\bogdan\AppData\Local\Temp\SASM\ program.asm
C:\Users\bogdan\AppData\Local\Temp\SASM\ program.asm(3) : fatal error A1000: cannot open file : /masm32/include/windows.inc
LINK : fatal error LNK1181: cannot open input file «C:\Users\bogdan\AppData\Local\Temp\SASM \program.o»



0



ФедосеевПавел

Модератор

8604 / 4446 / 1662

Регистрация: 01.02.2015

Сообщений: 13,804

Записей в блоге: 9

12.09.2018, 13:16

Пропишите полные пути к компилятору masm32 и его библиотекам.
Например

Assembler
3
include c:/masm32/include/windows.inc



1



liv

5118 / 4572 / 854

Регистрация: 07.10.2015

Сообщений: 9,462

12.09.2018, 13:22

bogdan11, в строке

Assembler
1
add ex, type x

наверное, предполагалось

Assembler
1
add eax, type x



0



Новые блоги и статьи

Все статьи  

Все блоги / 

Как использовать OAuth2 со Spring Security в Java

Javaican 14.05.2025

Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .

Анализ текста на Python с NLTK и Spacy

AI_Generated 14.05.2025

NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .

Реализация DI в PHP

Jason-Webb 13.05.2025

Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .

Обработка изображений в реальном времени на C# с OpenCV

stackOverflow 13.05.2025

Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

Наверх

  1. Randomris

    New Member

    Публикаций:

    0

    Регистрация:
    8 янв 2020
    Сообщения:
    5

    Здравствуйте форумчане! компилятор масм не открывает windows.inc
    Все перепробовал путь указывал и т.д.
    выдает
    fatal error A1000: cannot open file : \masm32\include\windows.inc

  2. Indy_

    Well-Known Member

    Публикаций:

    4

    Регистрация:
    29 апр 2011
    Сообщения:
    4.789

  3. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

    Randomris,
    а у тебя точно есть папка include в каталоге masm32? Если сборка 64-разрядная, тогда в masm32 папки include нет, а есть папка include64

  4. Randomris

    New Member

    Публикаций:

    0

    Регистрация:
    8 янв 2020
    Сообщения:
    5

    У меня есть эта папка и в ней есть нужный файл
    Программа установлена в первоначальном виде, ничего не изменено (ASM Visual)

    Вложения:

  5. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

  6. Randomris

    New Member

    Публикаций:

    0

    Регистрация:
    8 янв 2020
    Сообщения:
    5

    Я задавал полный путь к нужному файлу, но все равно он выдает ошибку

  7. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

    Randomris,
    а почему я должен верить на слово? То что папка называлась не include, а includes уже выяснили… Какую ошибку у тебя сейчас выдает? Желательно картинкой и текст asm-файла также нужно прикрепить

  8. Randomris

    New Member

    Публикаций:

    0

    Регистрация:
    8 янв 2020
    Сообщения:
    5

    Код программы

    1. includelib C:\Programms\ASM Visual\masm\32\includes\kernel32.lib
    2. includelib C:\Programms\ASM Visual\masm\32\includes\user32.lib
    3. include C:\Programms\ASM Visual\masm\32\includes\windows.inc
    4. include C:\Programms\ASM Visual\masm\32\includes\kernel32.inc
    5. include C:\Programms\ASM Visual\masm\32\includes\user32.inc
    6. szTitleName db ‘Window Application’,0
    7. szClassName db ‘ASMCLASS32’,0
    8. msg MONMSGSTRUCT <?> ;  структура сообщения
    9. wc WNDCLASS <?> ; структура класса
    10. Invoke GetModuleHandle,0 ; получаем hInstanse
    11. Mov [wc.style], CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
    12. ; устанавливаем стиль окна
    13. Mov [wc.lpfnWndProc], offset WndProc ;
    14. Invoke LoadIcon,0,IDI_APPLICATION ; получаем значок приложения по
    15. Invoke LoadCursorA,0,IDC_ARROW ; получаем курсор по умолчанию
    16. Mov [wc.hbrBackground], COLOR_BACKGROUND+1
    17. Mov dword ptr [wc.lpszMenuName], 0
    18. Mov dword ptr [wc.lpszClassName], offset szClassName ; задаём имя класса
    19. Invoke RegisterClassA,offset wc ; регистрируем класс окна
    20. Push [hInst] ; дескриптор
    21. Push CW_USEDEFAULT ; высота
    22. Push CW_USEDEFAULT ; ширина
    23. Push WS_OVERLAPPEDWINDOW ; стиль
    24. Push offset szTitleName ; заголовок окна
    25. Push offset szClassName ; имя класса
    26. Push 0 ; дополнительный стиль
    27. Call CreateWindowEx ; создаём окно
    28. mov [newhwnd], eax ; сохраняем его дескриптор
    29. invoke ShowWindow,[newhwnd],SW_SHOWNORMAL; показываем окно
    30. invoke UpdateWindow, [newhwnd]; обновляем его
    31. msg_loop: ; запускаем цикл обработки сообщений
    32. invoke GetMessage,offset msg, 0,0,0
    33. invoke TranslateMessage, offset msg
    34. invoke DispatchMessage, offset msg
    35. WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
    36. Invoke DefWindowProcA,[hwnd],[wmsg],[wparam],[lparam]
    37.   ; вызываем стандартный обработчик сообщений
    38. je wmdestroy; если нажата клавиша Escape то выход
    39. invoke PostQuitMessage, 0
    40. invoke ExitProcess, 0 ; выход

    Все начало работать после переустановки программы и чистки всего реестра. Но появилась новая ошибка
    LINK : fatal error LNK1104: cannot open file «C:\Programms\ASM.lib»

    upload_2020-1-19_22-44-46.png

    Последнее редактирование модератором: 20 янв 2020

  9. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

    Randomris,
    так найди в своем IDE файл, который содержит строку «C:\Programms\ASM.lib» и исправь ее на «C:\Programms\ASM Visual\masm\32\lib»

  10. Indy_

    Well-Known Member

    Публикаций:

    4

    Регистрация:
    29 апр 2011
    Сообщения:
    4.789

    Mikl___,

    Потом только выяснилось что у него ошибка в имени каталога, масм работает с относительными путями, если запихал в каталоги нужно указать прямой путь, иначе будет ошибка.

    А если билдер выдал cannot open file «C:\Programms\ASM.lib» это не с проста. Тем более что какой то левый IDE, параметры переданные линкеру не известны.

    С таким подходом вообще незачем браться за асм, будут косяки и трудности непрерывно. В примитивном мягко говоря выше коде коментов больше чем кода. Так не пишется, масм так и назван потому что это макро язык.

    — Сообщение объединено, 20 янв 2020

    > cmp ax, 0

    Какой дебил такое написал.. а куда делась старшая часть регистра, те его половина. А про инструкцию test авторы этого высера не слышали получается. Тогда как всегда:

    Intel® 64 and IA-32 architectures software developer’s manual combined volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4

    https://software.intel.com/en-us/do…bined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4

    Изучать нужно с первого, а не как евреи с конца.

  11. Randomris

    New Member

    Публикаций:

    0

    Регистрация:
    8 янв 2020
    Сообщения:
    5

    Я только студент (1С группа), и сам занимаюсь асмом. По этому код взял с сайта (уже не помню откуда) и занимаюсь разбором кода.
    читаю книги и пытаюсь по ним изучать.

  12. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

    Randomris,
    вспоминай, ищи сайт, откуда скачал IDE, там же найдешь инструкцию об установке, прочитай ее несколько раз, разберись и установи ASM Visual по инструкции, никакой самодеятельности…

  13. M0rg0t

    Well-Known Member

    Публикаций:

    0

    Регистрация:
    18 окт 2010
    Сообщения:
    1.602

    А лучше скачать оригинальный 32 битный масм32, и поставить в корень диска, а не в папку с пробелами. Т.к. все это весьма костыльно и может выдавать неожиданные глюки.

  14. Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.933

    Randomris,
    https://gri-software.com/ru/asmvisual/help/

    • Начало
      • Системные требования
      • Загрузка и установка
      • Обратная связь
    • ASM Visual
      • Интерфейс
      • Работа с проектами
      • Работа с кодом
      • Сборка программ
      • Отладка
      • Настройка среды
      • Метрики
      • Горячие клавиши
  15. Indy_

    Well-Known Member

    Публикаций:

    4

    Регистрация:
    29 апр 2011
    Сообщения:
    4.789

    Randomris,

    > Я только студент (1С группа)

    Что то не помню в МКБ таких кодов

    > читаю книги и пытаюсь по ним изучать.

    Не читай их, я тебе выше дал ведь ссылку. Есчо конечно не плохо было бы по логике и алго что то почитать, для общего развития так скажем; архитектур всяких много но принципы одинаковы

В одном из учебников я взял текст :
************
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib

.data
HelloWorld db «Hello World!», 0

.code
start:
invoke StdOut, addr HelloWorld
invoke ExitProcess, 0
end start
***************
Пытаюсь его ассемблировать.
Папка MASM32
со всеми её подпапками находится в «C:\Program Files»
MASM32 даёт сообщение:
Hello.asm(4) : fatal error A1000: cannot open file : \masm32\include\windows.inc

Мой вопрос: как можно сделать «*.inc» файлы доступными Ассемблеру ?
(не меняя в исходном тексте ни одной буквы !!!)

И такой же вопрос относительно файлов «.lib» в операторе includelib ?

Спасибо! Вы меня кустаря-одиночку продвинули

3-й вопрос:
при вызове ассемблера
ml /coff Hello.asm /I «c:\Program Files» > asmbl.txt

даёт сообщение

Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

«Hello.obj»
«/OUT:Hello.exe»
LINK : fatal error LNK1221: a subsystem can’t be inferred and must be defined

а при вызове

ml /coff Hello.asm /I «c:\Program Files» /link OUT:Hello.exe» > asmbl.txt

даёт сообщение
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

«Hello.obj»
«/OUT:Hello.exe»
«OUT:Hello.exe»
LINK : fatal error LNK1104: cannot open file «OUT:Hello.exe»

Что ему надо ???

Вставляю код в qeditor и делаю все по инструкции, но после постороения выдает ошибку:

Assembling: C:\Users\User\Desktop\masm32p\test.asm
C:\Users\User\Desktop\masm32p\test.asm(5) : fatal error A1000: cannot open file : \masm32\include\windows.inc

У другиг этот же код работает а гугл на счет этой ошибки молчит

Код:
.586
.model flat, stdcall
option casemap: none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib

include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

.data
Arr dd -100,2,3,4,45
Res dd 0
cf dd 200
d dd 5

.code
start:
mov ecx,5

  mov eax, cf
  cdq
  mov ebx, d

  div ebx

  mov ebx, eax
  PrintDec ebx, "C/D"

prnt:
mov eax, [Arr+ecx*4-4]

  cmp eax, ebx
  jl L

  add Res, eax
  PrintDec eax, "Added"

L: dec ecx
cmp ecx, 0
jnz prnt
  PrintDec Res, "Res"
invoke ExitProcess, NULL

end start

Hello again ,
I’ve tried to move masm32 from C: to D:, but not at the root (D:/…/masm32).
I searched on the forum and saw that the folder should be at the root, or else we must use a trick on Windows to create an alias of a volume.
This is the batch file used for assembling :


@echo off
set file=%1
if %file%V equ V (echo No arg given ! & pause & exit)
set app=%file:~0,-4%
echo *************************************************************************************************************
echo Assembling %file% into %app%.exe
echo *************************************************************************************************************
echo.
echo.
subst Z: D:\Programmation\Assembleur
Z:\masm32\bin\ml.exe /c /coff /Cp /nologo /W3 /I"Z:" /I"Z:\masm32\include" %file%
Z:\masm32\bin\link.exe /subsystem:console /release /version:4.0 /libpath:"Z:" /libpath:"Z:\masm32\lib" /out:%app%.exe %app%.obj
subst Z: /D
%app%.exe
echo.
echo.
echo *************************************************************************************************************
pause

I got the following error :

Quote
Z:\masm32\include\masm32rt.inc(38) : fatal error A1000: cannot open file : \masm32\include\windows.inc
(and another from the linker whch cannot open test.obj)

So it seems that I did something wrong, but I can’t see where, because the compiler says that it cannot find a file, but I put /I»Z:\masm32\include» in the batch file.
Could you please healp me to find the error ?


Your problem happens here:

subst Z: D:\Programmation\Assembleur
Z:\masm32\bin\ml.exe /c /coff /Cp /nologo /W3 /I"Z:" /I"Z:\masm32\include" %file%

Try

subst Z: D:\Programmation\Assembleur
Z:
\masm32\bin\ml.exe /c /coff /Cp /nologo %file%

Your %file% is on Z:, I suppose?


Thanks for your reply.
If I add Z: in the .bat, the .obj file is created in Z: directory, instead of being in the same folder than %file%.
And by the way the linker is unable to find the .obj in the same folder of %file%.

So I can make a little code which moves the .obj in the correct folder, but it involves the parsing of the file’s path to find the directory.
Is there a better solution ?


I have been using the SUBST trick for many years, never had similar problems.

My suspicion is that your drive Z is not permanent enough. Suppose you want a permanent drive M: (like «Masm»); press Alt R, type regedit and hit Return. Then go for this:

Key      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
RegSZ    M: (you need to create a new REG_SZ value)
Text     \??\D:\Programmation\Assembleur

Save and reboot. Afterwards, you have P:\Masm32\… and all the rest.


I tried both A: and M: but each time I try to open it (command A: or M: with CMD), I get an error.
So, I think I’ll modify my batch file to move the .obj .
Thanks for time spent on my problem 

(Perhaps I’ll edit post with new file for person who will maybe have the same problem)


Moving files around is not a solution — even if you get it to work, you’ll regret it later on.

What kind of errors do you get with A: or M: with CMD? If the drives really exist (and they should, if the registry entry is correct, and you rebooted), then typing A: or M: should never throw an error.

(Btw A: was a special drive, I wonder if the OS has some legacy quirks that could make problems)


I’ll strive to describe and translate correctly :

I’ve edited the register and rebooted the computer.
When I open explorer.exe, a new local disk appeared, M:, so that’s ok (but the icon has a ? near the picture)
If I want to access, Windows throws me an error :

Quote
M:\ isn’t accessible.
Syntax or file’s, directory’s or volume’s name is incorrect.

So I guess I didn’t edit correctly the register :

  • Win+R regedit [Enter] -> as administrator
  • Browsing to Ordinateur\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
  • Right click -> new -> string value («valeur chaîne» in French, if the translation isn’t correct)
  • Named it M:
  • Changed its value to D:\Programmation\Assembleur\
  • Rebooted the computer
  • Started Chrome and went to MASM forum to reply 


Thanks, all is now working as expected 

I didn’t write the \??\ because I thought you meant «replace it by parent directories».



After several changes, the batch file can compile and link without modifying register (that’s quite handy for me, if I want to code on my school’s computers where I haven’t admin rights fo course) :


@echo off

set file=%1
if %file%V equ V (echo No arg given ! & pause & exit)

call :extractNames %file%

echo *************************************************************************************************************
echo Assembling %file% into %app%.exe
echo *************************************************************************************************************
echo.
echo.

subst Z: D:\Programmation\Assembleur
Z:
set zFilePath=%filePath%
set zFilePath=%zFilePath:D:\Programmation\Assembleur=%
cd %zFilePath%
echo %zFilePath% %cd%
Z:\masm32\bin\ml.exe /c /coff /Cp /nologo /W3 /I"Z:\" /I"Z:\masm32\include\" %file%
Z:\masm32\bin\link.exe /subsystem:console /release /version:4.0 /libpath:"Z:\" /libpath:"Z:\masm32\lib\" /out:%app%.exe %app%.obj
%drive%
subst Z: /d

%app%.exe
echo.
echo.
echo *************************************************************************************************************
pause

:extractNames
set drive=%~d1
set filePath=%drive%%~p1
set app=%filePath%%~n1

Instead of compiling at the wrong place and then moving, I extracted the path from the complete file name and then went to Z: (temp drive) and moved to the file’s directory to build and link at the same place.

Links which helped me :

  • https://stackoverflow.com/questions/15567809/batch-extract-path-and-filename-from-a-variable
  • https://www.dostips.com/DtTipsStringManipulation.php#Snippets.Remove

I hope it may help someone with the same problems.


Hi totosayen_cpp,

Concerning the Masm32 package, the best installation location is the root of a partition. Simple and easy.


Evenif it’s finally a bit more complicated than leave it at the root, I did that to organize correctly my files.
But I wonder why it needs to be at the root of a (virtual or not) drive…


Quote from: totosayen_cpp on May 02, 2021, 06:28:31 PM
But I wonder why it needs to be at the root of a (virtual or not) drive…

Because all the includes in all examples are organised as
include \Masm32\include\msvcrt.inc
includelib \Masm32\lib\msvcrt.lib

No need for environment variables. And it works, always. Compare that to the incredible mess of a C++ compiler…


Easy. You probably have heard of Occam’s razor, an important principle of science and philosophy. Prefering the root of a partition as the installation location makes easy the maintainance of your batch files. Nearly all of my .bat files are looking like the following :

C:\masm32 or D:\masm32 :


\masm32\bin\ml /c /coff Hello.asm
\masm32\bin\polink /SUBSYSTEM:WINDOWS Hello.obj

I don’t have to tweak complicated .bat files to build Masm projects.

jj2007 is right, you can see the complications of some C++ compilers to build even the most simple hello world project.


  • The MASM Forum

  • General

  • The Campus

  • include error on D:

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • На каком языке был написан windows
  • Show all process windows
  • Huawei browser для windows
  • Где была сделана фото на обои windows 10
  • Операционная система windows относится к уровню