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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2021, 13:27   #11
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Всё равно ошибка: Fatal: 32-bit record encountered in module 1.CPP. Если Borland C++ собирает Project -> Build all, то .exe появляется, но, как я писал ранее, выскакивает ошибка, как на скрине. Я так понимаю, что он доходит до функции SummaA и всё, падает программа. А если собираю tasm, tlink, тогда при линковке ошибка Fatal: 32-bit record encountered in module 1.CPP. Что-то с адресацией, видимо так?! Может быть настройки в Borland не так выставлены, не знаю, .cpp я через него компилировал.
Изображения
Тип файла: png Error.png (94.8 Кб, 1 просмотров)

Последний раз редактировалось apofioz; 11.02.2021 в 16:47.
apofioz вне форума Ответить с цитированием
Старый 11.03.2021, 01:17   #12
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

п≤пЇп╩п╟пЁп╟я┌я▄, я┤я┌п╬ пҐя┐пІпҐп╬ п╦пЇя┐я┤п╟я┌я▄ я│п╪я▀я│п╩п╟ пҐп╣я┌, п©я─п╦п╡п╣пЄя┐ п╩п╦я┬я▄ п©я─п╦п╪п╣я─.

п║пҐп╟я┤п╟п╩п╟, п©я─п╬п©п╦я┬п╣п╪ п©п╣я─п╣п╪п╣пҐпҐя▀п╣ п╡ п╬п╨я─я┐пІп╣пҐп╦п╦ я│п╦я│я┌п╣п╪я▀:
п║п╡п╬п╧я│я┌п╡п╟ я│п╦я│я┌п╣п╪я▀, (пЇпҐп╟я┤п╣п╨ п╪п╬п╧ п╨п╬п╪п©я▄я▌я┌п╣я─), пЄп╬п©п╬п╩пҐп╦я┌п╣п╩я▄пҐп╬,
п©п╣я─п╣п╪п╣пҐпҐя▀п╣ я│я─п╣пЄя▀, п║п╬пЇпЄп╟я┌я▄ - п╨пҐп╬п©п╨п╟.

п≤п╪я▐ п©п╣я─п╣п╪п╣пҐпҐп╬п╧: Path
п≈пҐп╟я┤п╣пҐп╦п╣ п©п╣я─п╣п╪п╣пҐпҐп╬п╧: C:\BC5\Bin;C:\Tasm\Bin;

п▓я┌п╬я─п╬п╧ я┬п╟пЁ.

п║п╬пЇпЄп╟пҐп╦п╣ я└п╟п╧п╩п╟ "Make" (пЄп╩я▐ я│п╠п╬я─п╨п╦ п╨п╬пҐя│п╬п╩я▄пҐп╬пЁп╬ п©я─п╦п╩п╬пІп╣пҐп╦я▐)
(я│п╦п╪п╡п╬п╩ я─п╣я┬п╣я┌п╨п╦ - п╨п╬п╪п╪п╣пҐя┌п╟я─п╦п╧)

Код:
# make -B		Will build Test1.exe
# make -B -DDEBUG	Will build the debug version

.autodepend

#-----------------------------[ Borland C directory
BASE = C:\bc5

#-----------------------------[ Make Console main ()
LINKOPT = /Tpe /ap /c

#-----------------------------[ Module
MOD01	= AMod

#-----------------------------[ Application name
NAME	= Test1

MAIN	= main

OBJS	= $(MAIN).obj\
	$(MOD01).obj

#-----------------------------[ Options

CCOPT	= -w+ -DSTRICT
ASMOPT	= /kh100000 /ml /m2

!if $d(DEBUG)
	CCDBG=/v
	TASMDEBUG=/zi
	LINKDEBUG=/v
!else
	CCDBG=
	TASMDEBUG=
	LINKDEBUG=
!endif

#-----------------------------[ Macros

LIBRARY	= $(BASE)\Lib
INCLUDE	= -I$(BASE)\Include
OPT_LIB	= -L$(LIBRARY)
BCC32	= Bcc32 
ILINK32	= Ilink32
TLINK32	= TLink32
BRC32	= Brc32

#-----------------------------[ Dependency List

All	= $(NAME).exe

$(NAME) : $(All)
	@echo.
	@echo.
	@echo.	...[ MakeNode $(NAME).exe ]...
	@echo.
	@echo.

#-----------------------------[ Executable target

$(NAME).exe : $(OBJS)
	$(ILINK32) $(LINKDEBUG) $(LINKOPT) @&&|
$(LIBRARY)\c0x32.obj+
$(MAIN).obj+
$(MOD01).obj
$(NAME).exe

#---[ Library static: "cw32.lib", Dynamic: "cw32i.lib"
#
$(LIBRARY)\cw32.lib+
$(LIBRARY)\import32.lib

|

#-----------------------------[ CPP module

$(MAIN).obj: $(MAIN).cpp
	$(BCC32) $(CCOPT) $(CCDBG) -c -tW -a4 $**

#-----------------------------[ ASM module

.asm.obj:
	tasm32 $(ASMOPT) $(TASMDEBUG) $(MOD01).asm
#
# <<eof>>
#
п╗п╟пЁ п╒п═п≤

п÷п╟п╨п╣я┌пҐя▀п╧ я└п╟п╧п╩ пЄп╩я▐ пЇп╟п©я┐я│п╨п╟ я│п╠п╬я─п╨п╦
zMake.BAT
Код:
make -B
pause
zMakeD.BAT
Код:
@echo off

set NAME=Test1

make -B -DDEBUG
if errorlevel 1 goto ERROR

cls
TD32 %NAME%
goto EXIT

:ERROR

echo.	--- Error ---
pause
goto EXIT

:EXIT
пїп╣я┌п╡п╣я─я┌п╬п╣ - п░я│я│п╣п╪п╠п╩п╣я─пҐя▀п╧ п╪п╬пЄя┐п╩я▄

Код:
%TITLE "AMod.asm"

	IDEAL
	P586
	MODEL	flat

	DATASEG

	global _GAppname:byte

msg	db 'Hello, World!', 0

	CODESEG

	global _MsgBox:near
	global MessageBoxA:near

proc	_MsgBox

	push	40h		; uType
	push	offset _GAppname
	push	offset msg
	push	0
	call	MessageBoxA

	ret

endp	_MsgBox

	END
п÷я▐я┌я▀п╧ я┬п╟пЁ, пЁп╩п╟п╡пҐя▀п╧ п╪п╬пЄя┐п╩я▄ п╨п╬пҐя│п╬п╩я▄пҐп╬пЁп╬ п©я─п╦п╩п╬пІп╣пҐп╦я▐
Код:
////////////////////////////////////////////////////////////////////////////////
// main.cpp

#include "iHead.h"
#include <fstream>
#include <iostream>
#include <string>
#include <conio.h>
#include <windows.h>

#if _MSC_VER >= 1200	// MSVC++ 6.0
using namespace std;	// BC5 No need
#endif

TCHAR GAppname[]=TEXT("Test1");

extern "C" void MsgBox();

int main()
{
	DWORD VolumeSerialNumber;
	char VolumeNameBuffer[MAX_PATH]="";
	char FileSystemNameBuffer[MAX_PATH]="";

	char Drive[]="C:";

	GetVolumeInformation(Drive,
	VolumeNameBuffer,
	sizeof(VolumeNameBuffer),
	&VolumeSerialNumber,
	NULL,
	NULL,
	FileSystemNameBuffer,
	sizeof(FileSystemNameBuffer));

	cout << "Drive " << Drive << "\nSerial Number: ";
	cout << VolumeSerialNumber << "\n";

	char Filename[]="hdd_sn.txt";

	ofstream file(Filename);
	if (file)
	{
		file << "Drive " << Drive << "\nSerial Number: ";
		file << VolumeSerialNumber << "\n";
		file.close();
	}
	else
	{
		cout << "Cannot open " << Filename;
	}

	MsgBox();

	return 0;
}

////////////////////////////////////////////////////////////////////////////////
// <<eof>> main.cpp
////////////////////////////////////////////////////////////////////////////////
пєп╟п╧п╩ iHead.h

Код:
////////////////////////////////////////////////////////////////////////////////
// iHead.h

#if _MSC_VER >= 1200

// MSVC++ 6.0

#else

// Borland

#pragma option -w-aus
#pragma option -w-par
#pragma option -w-sig
#pragma warn -rng

#define uintptr_t		DWORD
#define INT_PTR		UINT
#define UINT_PTR		UINT
#define __int3264		LONG
#define LONG_PTR		LONG
#define GWLP_WNDPROC	GWL_WNDPROC
#define GWLP_USERDATA	GWL_USERDATA
#define SetWindowLongPtr	SetWindowLong
#define GetWindowLongPtr	GetWindowLong
#define SetClassLongPtr	SetClassLong
#define GetClassLongPtr	GetClassLong
#define GetClassLongPtr	GetClassLong

#endif	// end _MSC_VER

#ifndef _UNICODE
#define VC_EXTRALEAN	// use stripped down Win32 headers
#endif

////////////////////////////////////////////////////////////////////////////////
// <<eof>> iHead.h
////////////////////////////////////////////////////////////////////////////////
п÷я─п╦п╪п╣я─ п©я─п╦п╩п╬пІп╣пҐп╦я▐ GUi.

Makefile

Код:
# make -B		Will build Test.exe
# make -B -DDEBUG	Will build the debug version

.autodepend

#-----------------------------[ Borland C directory
BASE = C:\bc5

#-----------------------------[ Make WinMain ()
LINKOPT	= /Tpe /aa /c

#-----------------------------[ Module
MOD01	= AMod

#-----------------------------[ Application name
NAME	= Test

MAIN	= WinMain

OBJS	= $(MAIN).obj\
	$(MOD01).obj

#-----------------------------[ Options

CCOPT	= -w+ -DSTRICT
ASMOPT	= /kh100000 /ml /m2

!if $d(DEBUG)
	CCDBG=/v
	TASMDEBUG=/zi
	LINKDEBUG=/v
!else
	CCDBG=
	TASMDEBUG=
	LINKDEBUG=
!endif

#-----------------------------[ Macros

LIBRARY	= $(BASE)\Lib
INCLUDE	= -I$(BASE)\Include
OPT_LIB	= -L$(LIBRARY)
BCC32	= Bcc32 
ILINK32	= Ilink32
TLINK32	= TLink32
BRC32	= Brc32

#-----------------------------[ Dependency List

All	= $(NAME).exe

$(NAME) : $(All)
	@echo.
	@echo.
	@echo.	...[ MakeNode $(NAME).exe ]...
	@echo.
	@echo.

#-----------------------------[ Executable target

$(NAME).exe : $(OBJS)
	$(ILINK32) $(LINKDEBUG) $(LINKOPT) @&&|
$(LIBRARY)\c0w32.obj+
$(MAIN).obj+
$(MOD01).obj
$(NAME).exe

#---[ Library static: "cw32.lib", Dynamic: "cw32i.lib"
#
$(LIBRARY)\cw32.lib+
$(LIBRARY)\import32.lib

|

#-----------------------------[ CPP module

$(MAIN).obj: $(MAIN).cpp
	$(BCC32) $(CCOPT) $(CCDBG) -c -tW -a4 $**

#-----------------------------[ ASM module

.asm.obj:
	tasm32 $(ASMOPT) $(TASMDEBUG) $(MOD01).asm

#
# <<eof>>
#
п·я│я┌п╟п╩я▄пҐп╬п╣ пҐп╣п╦пЇп╪п╣пҐпҐп╬, пЇп╟ п╦я│п╨п╩я▌я┤п╣пҐп╦п╣п╪ я│я┌п╟я─я┌п╬п╡п╬пЁп╬ п╪п╬пЄя┐п╩я▐

Код:
////////////////////////////////////////////////////////////////////////////////
// WinMain.cpp

#include "iHead.h"
#include <windows.h>

TCHAR GAppname[]=TEXT("Gui win32");

extern "C" void MsgBox();

int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nCmdShow)
{
	MsgBox();

	return 0;
}

////////////////////////////////////////////////////////////////////////////////
// <<eof>> WinMain.cpp
////////////////////////////////////////////////////////////////////////////////
Вложения
Тип файла: zip Test_con32.zip (2.3 Кб, 0 просмотров)
Тип файла: zip Test_win32.zip (2.1 Кб, 0 просмотров)
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 01:20   #13
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

Кароче какаята ерунда палучилась
с текстом

Последний раз редактировалось Ramiraz; 11.03.2021 в 01:29.
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 01:29   #14
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

Там, в начале, я объяснял как прописать
переменные в окружении системы.

Свойства Мой компьютер / Дополнительно.
Имя переменной "Path"
Значение (для Borland C и Tasm)
C:\BC5\Bin;C:\Tasm\Bin;
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 02:39   #15
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

Шестнадцати битное приложение.

Код:
# make -B		Will build Test16.exe
# make -B -DDEBUG	Will build the debug version

.autodepend

#--------------------------[ Borland C Directory
BASE = C:\BC5

LINKOPT	= /Tde /c

#--------------------------[ Application name
NAME	= Test16

#--------------------------[ Modules
AMOD	= ModA

MAIN	= main
OBJS	= $(MAIN).obj\
	$(AMOD).obj

#--------------------------[ Options

CCOPT	= -w+ -DSTRICT
ASMOPT	= /kh100000 /ml /m2

!if $d(DEBUG)
	CCDBG=/v
	TASMDEBUG=/zi
	LINKDEBUG=/v
!else
	CCDBG=
	TASMDEBUG=
	LINKDEBUG=
!endif

#--------------------------[ Macros

LIBRARY	= $(BASE)\Lib
INCLUDE	= -I$(BASE)\Include
OPT_LIB	= -L$(LIBRARY)
BCC	= Bcc
TLINK	= TLink

#--------------------------[ Dependency List

All	= $(NAME).exe

$(NAME) : $(All)
	@echo.
	@echo.
	@echo.	...[ MakeNode $(NAME).exe ]...
	@echo.
	@echo.

#--------------------------[ Executable target

$(NAME).exe : $(OBJS)
	$(TLINK) $(LINKDEBUG) $(LINKOPT) @&&|
$(LIBRARY)\c0s.obj+
$(MAIN).obj+
$(AMOD).obj
$(NAME).exe

$(LIBRARY)\maths.lib+
$(LIBRARY)\emu.lib+
$(LIBRARY)\cs.lib
|

#--------------------------[ C / CPP module

$(MAIN).obj: $(MAIN).cpp
	$(BCC) $(CCOPT) $(CCDBG) -c $**

#--------------------------[ ASM module

$(AMOD).obj:
	tasm $(ASMOPT) $(TASMDEBUG) $(AMOD).asm

#
# <<eof>>
#
Ассемблерный модуль.

Код:
%TITLE "ModA.asm"

	IDEAL
	P386
	MODEL	small

	IDEAL

	DATASEG

szMsg	db 'Hello from ModA',13,10,36

	CODESEG

	global _ModA:near

proc	_ModA

	mov	ah, 9
	mov	dx, offset szMsg
	int	21h

	ret

endp	_ModA

	END

;-----------------------------------------------
; <<eof>> _ModA.asm
;
Код:
////////////////////////////////////////////////////////////////////////////////
// main.cpp

#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

extern "C" ModA();

int main()
{
	ModA();

	getch();

	return 0;
}

////////////////////////////////////////////////////////////////////////////////
// <<eof>> main.cpp
////////////////////////////////////////////////////////////////////////////////
Бат-файл сборки:
zMake.BAT
Код:
make -B
pause
Для отладки:
zMakeD.BAT
Код:
@echo off

:: Debug

set NAME=Test16

make -B -DDEBUG
if errorlevel 1 goto ERROR

cls
TD %NAME%
goto EXIT

:ERROR

echo.	--- Error ---
pause
goto EXIT

:EXIT
Главный модуль:

Код:
////////////////////////////////////////////////////////////////////////////////
// main.cpp

#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

extern "C" ModA();

int main()
{
	ModA();

	getch();

	return 0;
}

////////////////////////////////////////////////////////////////////////////////
// <<eof>> main.cpp
////////////////////////////////////////////////////////////////////////////////
Замечание: при работе в чистом ДОС, сборку осуществлять
вызвом MakeR, вместо Make.
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 02:41   #16
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

Просьба модераторам оформить мое сообщение
приобщить, а-то не прикрепил пакет "test_16.zip".
Вложения
Тип файла: zip test_16.zip (1.5 Кб, 0 просмотров)
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 02:53   #17
Ramiraz
Заблокирован
 
Регистрация: 11.03.2021
Сообщений: 14
По умолчанию

И напоследок "Makefile" - это так и есть, файл без расширения.
Чтобы сохранить его, нужно указать в диалоговом окне сохранения
имя в кавычках "Makefile".

Есть еще несколько способов сборки, вот очередной:

Код:
@echo off

set NAME=Test
set MOD1=main
set MOD2=AsmMod

set BC5=C:\BC5

BCC -c %MOD1%.c
if errorlevel 1 goto ERROR

Tasm /ml /m2 %MOD2%
if errorlevel 1 goto ERROR

BCC -ms -e%NAME% %MOD1%.obj %MOD2%.obj
if errorlevel 1 goto ERROR

pause
call kill
goto EXIT

:ERROR

echo.	--- Error ---
pause
goto EXIT

:EXIT
Ну все, товарищи, изучайте, сия.
Ramiraz вне форума Ответить с цитированием
Старый 11.03.2021, 13:43   #18
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Красавчик, только, тут столько понаписано, что нужно ещё пару книг прочитать и это как минимум, про make файлы вообще ничего не знаю, всё хочу почитать да руки не доходят. Ну хоть бвтник могу прочитать)
apofioz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер farxad Помощь студентам 6 11.09.2016 14:19
Ассемблер ViSaDeR Помощь студентам 2 25.12.2010 20:37
Ассемблер Майкл18 Помощь студентам 0 27.11.2009 09:16
Ассемблер Artur95 Помощь студентам 2 11.09.2009 22:30
Ассемблер maziLa Помощь студентам 2 14.07.2009 09:25