📄 mmx.asm
字号:
;**************************
;文件:MMX.asm *
;功能:测试MMX指令 *
;**************************
.686P
.xmm
.model flat, stdcall
option casemap :none
include d:\masm32\include\windows.inc
include d:\masm32\include\user32.inc
include d:\masm32\include\kernel32.inc
includelib d:\masm32\lib\kernel32.lib ;库文件
includelib d:\masm32\lib\user32.lib
.DATA ;数据
Caption db '真的要退出吗?',0
Text_Begin db '真的要退出吗?',0
Text_End db '已经卸载程序!',0
align 2
MEM_BYTE DB ?
align 2
MEM_WORD DW ?
align 4
MEM_DWORD DD ?
align 8
MEM_QUAD QWORD ?
.CODE ;代码
Start:
Invoke MessageBox,NULL,offset Text_Begin,offset Caption,MB_OK
;-----------------------
EMMS
;-----------------------
MOVD XMM0 ,MEM_DWORD
MOVD MEM_DWORD,XMM1
MOVD XMM2,EAX
MOVD EBX,XMM3
;-----------------------
MOVQ XMM4,XMM5
MOVQ XMM5,MEM_QUAD
;-----------------------
PACKSSDW XMM0,XMM1
PACKSSDW XMM0,MEM_QUAD
;-----------------------
PACKSSWB XMM0,XMM1
PACKSSWB XMM0,MEM_QUAD
;-----------------------
PACKUSWB XMM0,XMM1
PACKUSWB XMM0,MEM_QUAD
;-----------------------
PADDB XMM6,XMM7
PADDB XMM0,MEM_QUAD
PADDW XMM6,XMM7
PADDD XMM6,XMM7
; PADDQ XMM6,XMM7
;-----------------------
PADDSB XMM1,XMM2
PADDSB XMM0,MEM_QUAD
PADDSW XMM1,XMM2
; PADDSD XMM1,XMM2
; PADDSQ XMM1,XMM2
;-----------------------
PADDUSB XMM0,XMM1
PADDUSB XMM0,MEM_QUAD
PADDUSW XMM0,XMM1
; PADDUSD XMM0,XMM1
; PADDUSQ XMM0,XMM1
;-----------------------
PAND XMM4,XMM1
PAND XMM4,MEM_QUAD
;-----------------------
PANDN XMM4,XMM1
PANDN XMM4,MEM_QUAD
;-----------------------
PCMPEQB XMM0,XMM1
PCMPEQB XMM0,MEM_QUAD
PCMPEQW XMM0,XMM1
PCMPEQD XMM0,XMM1
; PCMPEQQ XMM0,XMM1
;-----------------------
PCMPGTB XMM3,XMM1
PCMPGTB XMM2,MEM_QUAD
PCMPGTW XMM3,XMM1
PCMPGTD XMM3,XMM1
; PCMPGTQ XMM3,XMM1
;-----------------------
PMADDWD XMM5,XMM2 ;!!!
PMADDWD XMM6,MEM_QUAD
;-----------------------
PMULHUW XMM3,XMM1
PMULHUW XMM3,MEM_QUAD
PMULHW XMM3,XMM1
PMULHW XMM3,MEM_QUAD
;-----------------------
PMULLW XMM4,XMM7
PMULLW XMM4,MEM_QUAD
;-----------------------
POR XMM1,XMM3
POR XMM1,MEM_QUAD
;-----------------------
PSLLW XMM0,XMM3
PSLLW XMM0,3
PSLLW XMM0,MEM_QUAD
PSLLD XMM0,XMM3
PSLLD XMM0,3
PSLLD XMM0,MEM_QUAD
PSLLQ XMM0,XMM3
PSLLQ XMM0,3
PSLLQ XMM0,MEM_QUAD
; PSLLDQ XMM0,XMM3
; PSLLDQ XMM0,5
; PSLLDQ XMM0,MEM_QUAD
;-----------------------
PSRAW XMM6,XMM1
PSRAW XMM6,MEM_QUAD
PSRAW XMM6,16
PSRAD XMM6,XMM1
PSRAD XMM6,MEM_QUAD
PSRAD XMM6,200
; PSRAQ XMM6,XMM1
; PSRAQ XMM6,MEM_QUAD
; PSRAQ XMM6,200
;-----------------------
PSRLW XMM4,XMM2
PSRLW XMM4,MEM_QUAD
PSRLW XMM4,123
PSRLD XMM4,XMM2
PSRLD XMM4,MEM_QUAD
PSRLD XMM4,123
PSRLQ XMM4,XMM2
PSRLQ XMM4,MEM_QUAD
PSRLQ XMM4,123
;-----------------------
PSUBB XMM6,XMM2
PSUBB XMM5,MEM_QUAD
PSUBW XMM6,XMM4
PSUBD XMM2,XMM2
;-----------------------
PSUBSB XMM5,XMM2
PSUBSB XMM3,MEM_QUAD
PSUBSW XMM5,XMM2
; PSUBSD XMM5,XMM2
;-----------------------
PSUBUSB XMM2,XMM7
PSUBUSB XMM2,MEM_QUAD
PSUBUSW XMM2,XMM7
; PSUBUSD XMM2,XMM7
;-----------------------
PUNPCKHBW XMM4,XMM6
PUNPCKHBW XMM3,MEM_QUAD
PUNPCKHWD XMM4,XMM6
PUNPCKHDQ XMM4,XMM6
; PUNPCKHQDQ XMM4,XMM6
;-----------------------
PUNPCKLBW XMM4,XMM6
PUNPCKLBW XMM3,MEM_QUAD
PUNPCKLWD XMM4,XMM6
PUNPCKLDQ XMM4,XMM6
; PUNPCKLQDQ XMM4,XMM6
;-----------------------
PXOR XMM7,XMM3
PXOR XMM3,MEM_QUAD
;-----------------------
Invoke MessageBox,NULL,offset Text_End,offset Caption,MB_OK
Invoke ExitProcess,0
;**************************************************************
end Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -