Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.5.2010
Репутация: нет Всего: нет
|
есть исходник программы которая должна переделывать 24-битный бмп файл в 8-битный полутоновый но она не работает почему скажу сразу незнаю выдает постоянно ошибку | Код | E:\masm32\prg21c.asm(8) : error A2008: syntax error : NOINCL E:\masm32\prg21c.asm(9) : fatal error A1000: cannot open file : mmx32.inc
|
при полном прописывание пути к инк файлу выдает такое | Код | E:\masm32\prg21c.asm(8) : error A2008: syntax error : NOINCL e:\masm32\include\mmx32.inc(65) : error A2085: instruction or register not accepted in current CPU mode e:\masm32\include\mmx32.inc(66) : error A2034: must be in segment block e:\masm32\include\mmx32.inc(67) : error A2034: must be in segment block e:\masm32\include\mmx32.inc(68) : fatal error A1008: unmatched macro nestin
|
вот сама прога | Код | ;prg21c.asm ;ї рЬХ ЪЮЭЎЮЫ¬ЭЮУЮ Я рЫЮЦХЭрЇ ФЫЇ Win32 ;(Ў рЎЯЮЫ¬ЧЮТРЭрХЬ ЪЮЬРЭФ MMX- РЎЁр ХЭрЇ р ¤РЩЫЮТ, Я ЮХ¦р ЈХЬ«Ґ Т ЯРЬЇў¬) .486 .model flat,STDCALL ;ЬЮФХЫ¬ ЯРЬЇўр flat, ;STDCALL - ЯХ ХФР§Р ЯР РЬХў ЮТ Т ЎўрЫХ Б (ЎЯ РТР ЭРЫХТЮ), ; Т«Ч«ТРХЬРЇ Я Ю¦ХФЈ Р §рЎўрў ЧР ЎЮСЮЩ ЎўХЪ %NOINCL ;ЧРЯ Хўрў¬ Т«ТЮФ ўХЪЎўР ТЪЫ®§РХЬ«Ґ ¤РЩЫЮТ include e:\masm32\include\mmx32.inc include e:\masm32\include\WindowConA.inc ;ѕСЄЇТЫХЭрХ ТЭХЁЭрЬр рЎЯЮЫ¬ЧЈХЬ«Ґ Т ФРЭЭЮЩ Я ЮУ РЬЬХ ¤ЈЭЪ¦рЩ Win32 (ASCII): extrn AllocConsole:PROC extrn SetConsoleTitleA:PROC extrn ExitProcess:PROC extrn GetStdHandle:PROC extrn CreateFileA:PROC extrn CreateFileMappingA:PROC extrn MapViewOfFile:PROC extrn UnmapViewOfFile:PROC extrn CloseHandle:PROC extrn FlushFileBuffers:PROC extrn FlushViewOfFile:PROC extrn WriteFile:PROC extrn SetConsoleCursorPosition:PROC extrn ReadConsoleA:PROC extrn WriteConsoleA:PROC ;Ўў ЈЪўЈ Р bmp-¤РЩЫР (ЯЮ ЪЭрУХ ВЮЬР БТРЭР "ДЮ ЬРў« ¤РЩЫЮТ Windows") ;ЬРЪ ЮЮЯ ХФХЫХЭрЇ ўрЯЮТ SSHORT equ <dw 0> UINT equ <dw 0> DDWORD equ <dd 0> LONG equ <dd 0> WWORD equ <dw 0> BBYTE equ <db 0> ;Ўў ЈЪўЈ Р ФЫЇ ЈЎўРЭЮТЪр ЯЮЫЮЦХЭрЇ ЪЈ ЎЮ Р Т ЪЮЭЎЮЫр: Coord struc xx SSHORT yy SSHORT Coord ends ;ЧРУЮЫЮТЮЪ bmp-¤РЩЫР BitMapFileHeader struc bfType UINT ;ЎрЬТЮЫ« "B" р "ј" bfSize DDWORD ; РЧЬХ ¤РЩЫР Т СРЩўРҐ bfReserved1 UINT ; ХЧХ Т bfReserved2 UINT ; ХЧХ Т bfOffBits DDWORD ;ЎЬХ©ХЭрХ Т СРЩўРҐ Ъ ЭР§РЫЈ РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ ;ҐР РЪўХ рЎўрЪр РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ biSize DDWORD ; РЧЬХ ФРЭЭЮЩ Ўў ЈЪўЈ « Т СРЩўРҐ (ФЮЫЦЭЮ С«ў¬ РТЭЮ 00000028h) biWidth LONG ;Ёр рЭР рЧЮС РЦХЭрЇ Т ЯрЪЎХЫРҐ biHeight LONG ;Т«ЎЮўР рЧЮС РЦХЭрЇ Т ЯрЪЎХЫРҐ biPlanes WWORD ;§рЎЫЮ ¦ТХўЮТ«Ґ ЯЫЮЎЪЮЎўХЩ (ФЮЫЦЭЮ С«ў¬ РТЭЮ 1) biBitCount WWORD ;§рЎЫЮ Срў ЭР ЯрЪЎХЫ (ФЮЫЦЭЮ С«ў¬ РТЭЮ 1, 4, 8, 24) biCompression DDWORD ;ЬХўЮФ ЎЦРўрЇ biSizeImage DDWORD ; РЧЬХ ЎЮСЎўТХЭЭЮ РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ Т СРЩўРҐ biXPelsPerMeter LONG ; РЧ ХЁХЭрХ ЯЮ УЮ рЧЮЭўРЫр Т ЯрЪЎХЫРҐ ЭР ЬХў biYPelsPerMeter LONG ; РЧ ХЁХЭрХ ЯЮ ТХ ўрЪРЫр Т ЯрЪЎХЫРҐ ЭР ЬХў biClrUsed DDWORD ;§рЎЫЮ ¦ТХўЮТ Т рЧЮС РЦХЭрр biClrImportant DDWORD ;§рЎЫЮ ТРЦЭ«Ґ ¦ТХўЮТ рЧЮС РЦХЭрЇ BitMapFileHeader ends
.data NumWri dd 0 inFile db 80 dup (20) outFile db 80 dup (20) con Coord <> hinFile dd 0 houtFile dd 0 hMapinFile dd 0 hMapoutFile dd 0 TitleText db 'MMX Я ХЮС РЧЮТРЭрХ bmp-¤РЩЫР',0 mes1 db 'ІТХФрўХ ЯЈў¬ Ъ рЎҐЮФЭЮЬЈ ¤РЩЫЈ TrueColor:' len_mes1=$-mes1 mes2 db 'ІТХФрўХ ЯЈў¬ Ъ Т«ҐЮФЭЮЬЈ ¤РЩЫЈ :' len_mes2=$-mes2 mesErr1 db 'НўЮ ЭХ bmp-¤РЩЫ:' len_mesErr1=$-mesErr1 mesErr2 db 'НўЮ ЭХ TrueColor-¤РЩЫ:' len_mesErr2=$-mesErr2 mesRet db 'ЅРЦЬрўХ Ы®СЈ® ЪЫРТрЁЈ ФЫЇ Т«ҐЮФР' len_mesRet=$-mesRet dOut dd 0 dIn dd 0 porog label dword dw 0000h dw 004dh dw 0097h dw 001ch ;00 77 151 28 RabObl dd 0 dd 0 pixSizeLow dd 0 pixSizeHi dd 0 i8 dd 8 outFileSize dd 0 initRMMX0 label dword db 00,00,00,00,01,01,01,00 initRMMX1 label dword db 02,02,02,00,02,02,02,00 PointOutRegion dd 0 PointInRegion dd 0
nWrByte dd 0 temp db "B" .code start proc near ;ўЮ§ЪР ТҐЮФР Т Я ЮУ РЬЬЈ: ;ЧРЯ ЮЎ ЪЮЭЎЮЫр call AllocConsole ;Я ЮТХ рў¬ ЈЎЯХҐ ЧРЯ ЮЎР ЪЮЭЎЮЫр test ax,ax jz exit ;ЭХЈФР§Р ;ўХЪЎў ЮЪЭР ЧРУЮЫЮТЪР push offset TitleText call SetConsoleTitleA ;Т«ТЮФ Ўў ЮЪр ўХЪЎўР ;ТЭР§РЫХ ЯЮЫЈ§рЬ ФХЎЪ рЯўЮ « ТТЮФР р Т«ТЮФР ЪЮЭЎЮЫр push STD_OUTPUT_HANDLE call GetStdHandle mov dOut,eax ;dOut-ФХЎЪ рЯўЮ ТТЮФР Т«ТЮФР ЪЮЭЎЮЫр
push STD_INPUT_HANDLE call GetStdHandle mov dIn,eax ;dIn-ФХЎЪ рЯўЮ ТТЮФР Т«ТЮФР ЪЮЭЎЮЫр ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (2,5) mov con.xx,2 mov con.yy,5 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ ;Т«ТХЎўр Я рУЫРЁХЭрХ ЭР ТТЮФ рЬХЭр рЎҐЮФЭЮУЮ ¤РЩЫР push 0 push offset NumWri push len_mes1 push offset mes1 push dOut call WriteConsoleA ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (2,6) mov con.xx,2 mov con.yy,6 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ
push 0 push offset NumWri push 80 push offset inFile push dIn call ReadConsoleA lea eax,inFile sub NumWri,2 add eax,NumWri mov [eax],byte ptr 0
;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (2,7) mov con.xx,2 mov con.yy,7 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ ;Т«ТХЎўр Я рУЫРЁХЭрХ ЭР ТТЮФ рЬХЭр Т«ҐЮФЭЮУЮ ¤РЩЫР push 0 push offset NumWri push len_mes2 push offset mes2 push dOut call WriteConsoleA ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (2,8) mov con.xx,2 mov con.yy,8 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ
push 0 push offset NumWri push 80 push offset outFile push dIn call ReadConsoleA lea eax,outFile sub NumWri,2 add eax,NumWri mov [eax],byte ptr 0 ;------------------ inFile ----------------------------------------------------- ;ЮўЪ «ўрХ ЮСЄХЪўР ЇФ Р "¤РЩЫ" ФЫЇ рЎҐЮФЭЮУЮ ¤РЩЫР inFile push NULL push FILE_ATTRIBUTE_NORMAL push OPEN_ALWAYS push NULL push 0 push GENERIC_READ+GENERIC_WRITE ; РЧ ХЁХЭЮ §ўХЭрХ р ЧРЯрЎ¬ Т ¤РЩЫ push offset inFile call CreateFileA ;Я ЮТХ рў¬ ЈЎЯХҐ cmp eax,0ffffffffh jz exit ;ЭХЈФР§Р mov hinFile,eax
;ЎЮЧФРЭрХ ЮСЄХЪўР ЇФ Р "Я ЮХ¦р ЈХЬ«Щ ¤РЩЫ" ФЫЇ рЎҐЮФЭЮУЮ ¤РЩЫР inFile push NULL push 0 ; РЧЬХ ¤РЩЫР - ўХЪЈ©рЩ push 0 push PAGE_READWRITE push NULL push hinFile call CreateFileMappingA ;Я ЮТХ рў¬ ЈЎЯХҐ cmp eax,0 jz exit ;ЭХЈФР§Р mov hMapinFile,eax
;Я ЮХ¦р ЮТРЭрХ ¤РЩЫЮТ«Ґ ФРЭЭ«Ґ ФЫЇ рЎҐЮФЭЮУЮ ¤РЩЫР inFile ЭР РФ ХЎЭЮХ Я ЮЎў РЭЎўТЮ Я Ю¦ХЎЎР push NULL push 0 ;ЎЬХ©ХЭрХ ЯХ ТЮУЮ Ў§рў«ТРХЬЮУЮ СРЩўР Т ¤РЩЫХ push 0 push FILE_MAP_WRITE push hMapinFile call MapViewOfFile ;Я ЮТХ рў¬ ЈЎЯХҐ ЮўЪ «ўрЇ ¤РЩЫР cmp eax,0 jz exit ;ЭХЈФР§Р mov PointInRegion,eax mov ebx,eax ;РФ ХЎ ЭР§РЫР рЎҐЮФЭЮУЮ ¤РЩЫР Т ЯРЬЇўр Т ebx ;------------------ inFile ----------------------------------------------------- mov ebx,eax ;РФ ХЎ ¤РЩЫР Т ЯРЬЇўр Т ebx cmp [ebx].biSize,28h jne exit_err1 ;ўЮ ЭХ bmp-¤РЩЫ cmp [ebx].biBitCount,18h jne exit_err2 ;ўЮ ЭХ TrueColor ¤РЩЫ ;Я ХЮС РЧЮТРЭрХ True -> Gray ;------------------ outFile ---------------------------------------------------- ;ЮўЪ «ўрХ ЮСЄХЪўР ЇФ Р "¤РЩЫ" ФЫЇ Т«ҐЮФЭЮУЮ ¤РЩЫР outFile push NULL push FILE_ATTRIBUTE_NORMAL push OPEN_ALWAYS push NULL push 0 push GENERIC_READ+GENERIC_WRITE ; РЧ ХЁХЭЮ §ўХЭрХ р ЧРЯрЎ¬ Т ¤РЩЫ push offset outFile call CreateFileA ;Я ЮТХ рў¬ ЈЎЯХҐ cmp eax,0ffffffffh jz exit ;ЭХЈФР§Р mov houtFile,eax
;ЎЮЧФРЭрХ ЮСЄХЪўР ЇФ Р "Я ЮХ¦р ЈХЬ«Щ ¤РЩЫ" ФЫЇ Т«ҐЮФЭЮУЮ ¤РЩЫР outFile ;;Т«§рЎЫЇХЬ ФЫрЭЈ Т«ҐЮФЭЮУЮ ¤РЩЫР TrueColor Т ЯрЪЎХЫРҐ ;(ЈЬЭЮЦРХЬ ФЫрЭЈ рЧЮС РЦХЭрЇ ЭР ХУЮ Т«ЎЮўЈ (Т ЯрЪЎХЫРҐ)) mov eax,[ebx].biWidth mul dword ptr [ebx].biHeight mov pixSizeLow,eax ;ЬЫРФЁРЇ ЯЮЫЮТрЭР РЧЬХ Р РЎў Р Т ЯрЪЎХЫРҐ mov pixSizeHi,edx ;ЎўР ЁРЇ ЯЮЫЮТрЭР РЧЬХ Р РЎў Р Т ЯрЪЎХЫРҐ ;Т eax РЧЬХ ЎЮСЎўТХЭЭЮ РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ Т СРЩўРҐ add eax,54+4*256 ;54- РЧЬХ ¤рЪЎр ЮТРЭЭЮУЮ ЧРУЮЫЮТЪР ;4*256- РЧЬХ ЬРЎЎрТР ¦ТХўЮТ«Ґ ЧЭР§ХЭрЩ ;Т eax РЧЬХ Т«ҐЮФЭЮУЮ ¤РЩЫР Т СРЩўРҐ mov outFileSize,eax
push NULL push eax ; РЧЬХ Т«ҐЮФЭЮУЮ ¤РЩЫР push NULL push PAGE_READWRITE ;PAGE_WRITECOPY push NULL push houtFile call CreateFileMappingA ;Я ЮТХ рў¬ ЈЎЯХҐ cmp eax,0 jz exit ;ЭХЈФР§Р mov hMapoutFile,eax
;Я ЮХ¦р ЮТРЭрХ ¤РЩЫЮТ«Ґ ФРЭЭ«Ґ ФЫЇ Т«ҐЮФЭЮУЮ ¤РЩЫР outFile ЭР РФ ХЎЭЮХ Я ЮЎў РЭЎўТЮ Я Ю¦ХЎЎР push outFileSize push 0 ;ЎЬХ©ХЭрХ ЯХ ТЮУЮ Ў§рў«ТРХЬЮУЮ СРЩўР Т ¤РЩЫХ push 0 push FILE_MAP_WRITE ;FileMapAllAccess push hMapoutFile call MapViewOfFile ;Я ЮТХ рў¬ ЈЎЯХҐ ЮўЪ «ўрЇ ¤РЩЫР cmp eax,0 jz exit ;ЭХЈФР§Р mov PointOutRegion,eax mov edi,eax ;РФ ХЎ ЭР§РЫР Т«ҐЮФЭЮУЮ ¤РЩЫР Т ЯРЬЇўр Т edi
;¤Ю Ьр ЈХЬ ЧРУЮЫЮТЮЪ Т«ҐЮФЭЮУЮ ¤РЩЫР: mov ax,[ebx].bfType mov [edi].bfType,ax mov eax,outFileSize mov [edi].bfSize,eax ;ЮС©рЩ РЧЬХ ¤РЩЫР mov [edi].bfReserved1,0 mov [edi].bfReserved2,0 mov [edi].bfOffBits,54+4*256 mov [edi].biSize,28h mov eax,[ebx].biWidth mov [edi].biWidth,eax ;Ёр рЭР РЎў Р Т ЯрЪЎХЫРҐ mov eax,[ebx].biHeight mov [edi].biHeight,eax ;Т«ЎЮўР РЎў Р Т ЯрЪЎХЫРҐ mov [edi].biPlanes,1 ;§рЎЫЮ ¦ТХўЮТ«Ґ ЯЫЮЎЪЮЎўХЩ mov [edi].biBitCount,8 ;§рЎЫЮ Срў ЭР ЯрЪЎХЫ mov [edi].biCompression,0 ;ЬХўЮФ ЎЦРўрЇ mov eax,outFileSize sub eax,54+4*256 mov [edi].biSizeImage,eax ; РЧЬХ ЎЮСЎўТХЭЭЮ РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ mov eax,[ebx].biXPelsPerMeter mov [edi].biXPelsPerMeter,eax ;Ёр рЭР РЎў Р Т ЯрЪЎХЫРҐ mov eax,[ebx].biYPelsPerMeter mov [edi].biYPelsPerMeter,eax ;Т«ЎЮўР РЎў Р Т ЯрЪЎХЫРҐ mov [edi].biClrUsed,100h ;§рЎЫЮ ¦ТХўЮТ Т рЧЮС РЦХЭрр mov [edi].biClrImportant,0 ;§рЎЫЮ ТРЦЭ«Ґ ¦ТХўЮТ Т рЧЮС РЦХЭрр ;¤Ю Ьр ЈХЬ ЬРЎЎрТ ¦ТХўЮТ add edi,54 mov ecx,128 movq rmmx0,initRMMX0 movq rmmx1,initRMMX1 xor esi,esi m3: movq [edi+esi*8],rmmx0 paddusb rmmx0,rmmx1 dec ecx inc esi jcxz m1 jmp m3 ;------------------ outFile ---------------------------------------------------- m1: mov ecx,pixSizeLow add edi,4*256 ;[edi]-ЭР ЭР§РЫЮ ЎЮСЎўТХЭЭЮ РЎў ЮТЮУЮ рЧЮС РЦХЭрЇ Т Т«ҐЮФЭЮЬ ¤РЩЫХ add ebx,[ebx]+0ah dec ebx ;Т ebx РФ ХЎ Т ¤РЩЫХ ЭР§РЫР рЧЮС РЦХЭрЇ - 1 xor esi,esi ;ЧРУ ЈЧЪР Т ХУрЎў « ¦ТХўЮТ«Ґ ЧЭР§ХЭрЩ ФЫЇ Я ХЮС РЧЮТРЭрЇ m2: punpcklbw rmmx0,[ebx][esi*4] psrlw rmmx0,8 pmullw rmmx0,porog movq rmmx1,rmmx0 psllq rmmx1,16 paddusw rmmx0,rmmx1 psllq rmmx1,16 paddusw rmmx0,rmmx1 psrlw rmmx0,8 ;ФХЫрЬ ЭР 256 movq RabObl,rmmx0 mov al,byte ptr RabObl+6 mov [edi],al add ebx,3 dec ecx inc edi jecxz m5 jmp m2 ;ЭХ ЧРС«ў¬ ЎФХЫРў¬ ФЫЇ ЎЫЈ§РЇ ЪЮУФР edx ЭХ ЯЈЎў (СЮЫ¬ЁЮЩ ¤РЩЫ) m5: jmp exit exit_err1: ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (5,10) mov con.xx,5 mov con.yy,10 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ ;Т«ТХЎўр ЎЮЮС©ХЭрХ ЮС ЮЁрСЪХ push 0 push offset NumWri push len_mes2 push offset mesErr1 push dOut call WriteConsoleA jmp exit ;return exit_err2: ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (5,10) mov con.xx,5 mov con.yy,10 push con push dOut call SetConsoleCursorPosition cmp eax,0 jz exit ;ХЎЫр ЭХЈЎЯХҐ ;Т«ТХЎўр ЎЮЮС©ХЭрХ ЮС ЮЁрСЪХ push 0 push offset NumWri push len_mes2 push offset mesErr2 push dOut call WriteConsoleA ; jmp return ;ЧРЪ «ТРХЬ ¤РЩЫ« exit: emms ;ЈЎўРЭЮТрЬ ЪЈ ЎЮ Т ЯЮЧр¦р® (5,12) mov con.xx,5 mov con.yy,10 push con push dOut call SetConsoleCursorPosition ;Т«ТХЎўр ЎЮЮС©ХЭрХ Ю ЭРЦРўрр Ы®СЮЩ ЪЫРТрЁр push 0 push offset NumWri push len_mesRet push offset mesRet push dOut call WriteConsoleA push 0 push offset NumWri push 80 push offset inFile push dIn call ReadConsoleA
push NULL push PointInRegion call FlushViewOfFile
push hinFile call CloseHandle push hMapinFile call CloseHandle
push outFileSize push PointOutRegion call FlushViewOfFile
push houtFile call CloseHandle push hMapoutFile call CloseHandle ;Т«ҐЮФ рЧ Я рЫЮЦХЭрЇ return: ;УЮўЮТрЬ Т«ЧЮТ VOID ExitProcess(UINT uExitCode) push 0 call ExitProcess start endp end start
|
кто может помогите плз Это сообщение отредактировал(а) Flashak - 14.5.2010, 21:03
|