Не зависимо на каком языке ты пишешь программу нужно в свойствах проекта поставить консольное приложение
или
AllocConsole();
HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE) ;// или STD_ERROR_HANDLE
DWORD Res;
WriteConsole(h,”Текст”,5,&Res,NULL);
Для корректного вывода русских букв необходимо их выводить в Unicode
WriteConsoleW(ConsoleHandle,L”Текст”,10,dRes,NULL);
//============= Пример C++ Builder 6.0 ======================
#include <windows.h>
#include <stdio.h>
HANDLE ConsoleHandle;
wchar_t * ConvertAnsiToUnicode_(char * InputStr,wchar_t * Buffer,int LenString,int MaxBufferLen){
if(MaxBufferLen==-1)
MaxBufferLen=65535;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED ,InputStr,LenString,(LPWSTR)Buffer,MaxBufferLen);
Buffer[LenString]=0;
return Buffer;
};
//==============================================================================
//==============================================================================
int printf__(const char *format,...){
va_list marker;
va_start(marker, format);
char Buffer[2048];
wchar_t BufferW[sizeof((Buffer)+1)*2];
char * pBuffer=&Buffer[0];
wchar_t* pBufferW=&BufferW[0];
int BufferSize=sizeof(Buffer);
int WriteSize=0;
int RealWrite=0;
if(!ConsoleHandle){
ConsoleHandle=GetStdHandle(STD_OUTPUT_HANDLE);
if(!ConsoleHandle)//Консоли нет
return 0;
};
Loop:
BOOL ErrorExit=true;
BOOL bWrite=false;
try{
WriteSize=vsnprintf((char *)pBuffer, BufferSize, format, marker);
ErrorExit=false;
}
__finally{
// if(AbnormalTermination())
if(ErrorExit)
{//Исключение
goto Exit;
};
};// __finally
if(BufferSize>=WriteSize){//Окей
DWORD dRes;
RealWrite=WriteSize;
ConvertAnsiToUnicode_(pBuffer,pBufferW,WriteSize,WriteSize);
bWrite=WriteConsoleW(ConsoleHandle,pBufferW,WriteSize,&dRes,NULL);
goto Exit;
}else{//Не влезло
if(pBuffer!=&Buffer)
goto Exit;//Очень странно, но пусть останется
BufferSize=WriteSize;
(PVOID)pBuffer=LocalAlloc(0,BufferSize);
(PVOID)pBufferW=LocalAlloc(0,(BufferSize+1)*2);
goto Loop;
};
Exit:
if(pBuffer!=&Buffer){
LocalFree(pBuffer);
LocalFree(pBufferW);
};
va_end(marker);
if(!bWrite)
RealWrite=0;
return RealWrite;
};
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
AllocConsole();
printf__("Текст %s__ _","vega");
}
B вообще сейчас нет смысла писать на asm, время на разработку будет потеряно намного больше чем на работу программы. На ассемблере отлаживать и вылавливать багги очень проблематично.
Писать на ассемблере можно только определённые куски программы, скажем обработка массива, вычисления с использованием SSE.
Я сам прекрасно умею программировать на ассемблере, прочитал множество статей об оптимизации программ на ассемблере. Беру функцию на на c++, переписываю её на ассемблер, тестирую по скорости и сначала моя функция работает медленнее раза в 2. Сравниваю ассемблерный листинг мой и сишного компилятора. Оптимизирую свой asm код и получаю 20% выигрыш в скорости.
Для вещественных чисел производительность удаётся увеличить на 50% - 150%.
Стоит смотреть на использование математических возможностей видео карт, но опять же если требуется математическая обработка больших массивов, но там уже другой ассемблер.