home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 June
/
VPR0106A.BIN
/
OLS
/
NWSA140
/
nwsa140.lzh
/
SAMPLE.ASM
< prev
Wrap
Assembly Source File
|
2001-01-27
|
2KB
|
99 lines
.586 ;Pentium までの命令を使用できるようにします。
.model large, c ;シンボルの先頭に自動的に _ を付加します。
.mmx ;mmx 命令などを使用許可します。
.PentiumPro ;cmov?? 命令などを使用許可します。
.3DNow ;3DNow! 命令を使用許可します。
extrn Vari1:dword ;Cプログラムのグローバル変数の外部参照
extrn Sleep@4:near ;Windows API の外部参照。@4 は合計 4 バイトの
;引数を持つことを示す。関数内部でこれだけの
;スタックが除去される。
_text segment para use32
;グローバル変数とスタック引数の使用例
AsmFunc proc near
arg Para1:dword, Para2:dword
mov eax,Vari1
add eax,Para1
add eax,Para2
ret
AsmFunc endp
;Windows API の呼び出し方の例
TestAPI proc near
push dword ptr 1000
call Sleep@4
ret
TestAPI endp
;MMX 命令や 3DNow! 命令のアセンブルテスト
;実行結果は保証できません(このままでは保護例外が起きる可能性があります。)。
TestFunc proc near
arg Para1:dword, Para2:dword
femms
prefetch byte ptr ds:[edi*4+1000h]
pfmul mm1,mm2
pfmul mm1,[ebx]
pfmul mm1,[ebx+10]
pfmul mm1,es:[ebx]
pfmul mm1,[ebx+eax*4+10]
fcomp st(1)
fcomi st(0),st(1)
cmova eax,ebx
cmove ebx,ds:[edi]
mov eax,Para1
add eax,Para2
paddw mm0,mm1
psubsw mm0,mm1
psllw mm0,mm1
psllw mm1,5
shl eax,1
movd mm0,eax
movd mm0,ds:[eax]
movd mm0,dword ptr ds:[eax]
; movd mm0,qword ptr ds:[eax]
movq mm0,qword ptr ds:[eax]
; movq mm0,dword ptr ds:[eax]
movq mm0,mm1
movq mm0,ds:[eax]
movq ds:[eax],mm5
movd dword ptr ds:[eax],mm7
movd ecx,mm3
emms
ret
TestFunc endp
_text ends
end