Вот к стати, с успешно скомпиленного примера по ммх--единственное, какой-то урод там всесто d1 необявленную переменную d2 использовать пытался--достаточно было вернуть на d1 |D
Опции--Options-->Compiler-->Assembler Tab-->List Options [x], Assembler Output =Use Masm. Дальше выбираешь просто компилировать
	.386p
DGROUP	GROUP	_BSS,_DATA
	ASSUME	CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP
	EXTRN	MMX_EMMS: NEAR
	EXTRN	FPC_DO_EXIT: NEAR
	EXTRN	THREADVARLIST_CPU: NEAR
	EXTRN	FPC_INITIALIZEUNITS: NEAR
	EXTRN	INIT$_SYSTEM: NEAR
	EXTRN	FINALIZE$_SYSTEM: NEAR
	EXTRN	INIT$_OBJPAS: NEAR
	EXTRN	FINALIZE$_OBJPAS: NEAR
	EXTRN	INIT$_MMX: NEAR
	EXTRN	THREADVARLIST_OBJPAS: NEAR
	EXTRN	THREADVARLIST_MMX: NEAR
	EXTRN	THREADVARLIST_SYSTEM: NEAR
_CODE		SEGMENT	PARA PUBLIC USE32 'CODE'
_CODE		ENDS
_CODE		SEGMENT	PARA PUBLIC USE32 'CODE'
	ALIGN 4
	ALIGN 4
; [testmmx.pas]
; [7] begin
	PUBLIC	PASCALMAIN
PASCALMAIN:
	PUBLIC	_main
_main:
; Temps allocated between ebp+0 and ebp+0
		push	ebp
		mov	ebp,esp
		call	FPC_INITIALIZEUNITS
; [8] d1:=1.0;
		fld1
		fstp	qword ptr [U_P$TESTMMX_D1]
		fwait
; [11] for i:=0 to 10000 do
		mov	dword ptr [U_P$TESTMMX_I],0
		dec	dword ptr [U_P$TESTMMX_I]
	ALIGN 4
@@8:
		inc	dword ptr [U_P$TESTMMX_I]
; [12] a[i]:=d1; { this is done with 64 bit moves }
		mov	edx,dword ptr [U_P$TESTMMX_I]
		mov	eax,dword ptr [U_P$TESTMMX_D1]
		mov	dword ptr [U_P$TESTMMX_A+edx*8],eax
		mov	eax,dword ptr [U_P$TESTMMX_D1+4]
		mov	dword ptr [U_P$TESTMMX_A+edx*8+4],eax
		cmp	dword ptr [U_P$TESTMMX_I],10000
		jl	@@8
; [14] emms; { clear fpu }
		call	MMX_EMMS
; [16] end.
		call	FPC_DO_EXIT
		leave
		ret
	ALIGN 4
_CODE		ENDS
_DATA		SEGMENT	PARA PUBLIC USE32 'DATA'
		DB	"FPC 2.0.0 [2005/05/08] for i386 - Win32"
	ALIGN 4
	ALIGN 4
	PUBLIC	THREADVARLIST_P$TESTMMX
THREADVARLIST_P$TESTMMX:
	DD	0
	ALIGN 4
	PUBLIC	FPC_THREADVARTABLES
FPC_THREADVARTABLES	DD	5
	DD	THREADVARLIST_SYSTEM,THREADVARLIST_OBJPAS,THREADVARLIST_CPU,THREADVARLIST_MMX,THREADVARLIST_P$TESTMMX
	ALIGN 4
	PUBLIC	FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES	DD	0
	ALIGN 4
	PUBLIC	INITFINAL
INITFINAL	DD	3,0
	DD	INIT$_SYSTEM,FINALIZE$_SYSTEM,INIT$_OBJPAS,FINALIZE$_OBJPAS,INIT$_MMX,0
	ALIGN 4
	PUBLIC	__stklen
__stklen	DD	131072
	PUBLIC	__heapsize
__heapsize	DD	2097152
_DATA		ENDS
_DATA		SEGMENT	PARA PUBLIC USE32 'DATA'
_DATA		ENDS
_DATA		SEGMENT	PARA PUBLIC USE32 'DATA'
_DATA		ENDS
_BSS		SEGMENT	PARA PUBLIC USE32 'BSS'
_BSS		ENDS
_BSS		SEGMENT	PARA PUBLIC USE32 'BSS'
	ALIGN 4
U_P$TESTMMX_D1	DB	8 DUP(?)
_BSS		ENDS
_BSS		SEGMENT	PARA PUBLIC USE32 'BSS'
	ALIGN 4
U_P$TESTMMX_A	DB	80008 DUP(?)
_BSS		ENDS
_BSS		SEGMENT	PARA PUBLIC USE32 'BSS'
	ALIGN 4
U_P$TESTMMX_I	DB	4 DUP(?)
	END 
