当前位置:首页 > 我的程序 > 正文内容

CPUID指令功能,附源码和程序。

Peirre3年前 (2022-04-02)我的程序775

程序源码和程序:CPUID.zip

[bits 32]

;Nasm win32 CPUID 功能演示
;
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;                                                                                                    
;        vL  isqjIi   rs rIXjsIk  iigviiiiVdii   SJJsZLJsV   iijvr     E    U     Yi     i           
;       uBBs  bQ  B   B   XQ  Bi  viBqvrJiVqii  BRi iBi iQg  YUBSi ukiiB  iSBB sSjBBkXr iBB BB vB    
;        KP   B   B  Bid  Vv BQv   g Ii Qiiii   BgiiiBiiiQM  viBiu   i B    Bi    Bv     dq BBQBB    
;       sgBi iYiEBi  XBr  BB  iQ   B Pr iiiiv   iUi iBi iI   diZ B ii  B    Bv uDiurMB   ii i i i    
;      is Bi Bi   B  ZI   Bvg gi   vidYiEdEgv   vYvPSBuDjvv  BiR B  ii B   JQD  dv  Qi               
;      kBiE  B    B  Rrv vQ iBB    B  B  Q  B     MB B UBv   B B B sYvPBs   B    KBB                 
;      BMBQiikBBQBq ivvsiB Vg vB  JB iQ iB  Br  UQL  B   RD  B B B    iB   iB  uZk  gM               
;         irriiiiii  ii    i      virrrrrirrrr  v    r    r            i   Ji  r     ii              
;
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;
;
;

;%include "E:\RadAsm\Nasm\inc\nasmx.inc"
%include "d:\RadAsm\nasm\inc\masm32.inc"
%include "CPUID.inc"
;%include "e:\radasm\nasm\inc\win32\msvcrt.inc"

[extern StdOut]
[extern StrLen]
[extern printf]
[extern ClearScreen]
[extern getchar]
[extern ExitProcess] 

%macro clre 0
	mov ebx,0h
	mov ecx,0h
	mov edx,0h
%endmacro

[section .data]

helpinfo	db 0dh,0ah,0dh,0ah
		 	db "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓",0dh,0ah
			db "▓                                                         ▓",0dh,0ah
			db "▓    这个程序是演示CPUID这个指令的所有功能的一个小程序    ▓",0dh,0ah
			db "▓    命令行 cpuid 1 2 (eax=1 ecx=2)                       ▓",0dh,0ah
			db "▓    作者: Y.Pierre 邮箱:7535794@qq.com                   ▓",0dh,0ah
			db "▓                                                         ▓",0dh,0ah 
			db "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓",0dh,0ah,0

formeax		db "EAX:%X ECX:%X",0dh,0ah,0
form		db "EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form0		db "CPUID.EAX=00h  				[关于处理器的标识字符串]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1		db "CPUID.EAX=01h  				[决定缓存参数函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form2		db "CPUID.EAX=02h  				[缓存和TLB信息]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form3		db "CPUID.EAX=03h  				[处理器序列号]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form4		db "CPUID.EAX=04h  				[决定缓存参数函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form5		db "CPUID.EAX=05h  				[MONITOR/MWAIT函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form6		db "CPUID.EAX=06h  				[热功率和电源管理函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form7		db "CPUID.EAX=07h ECX=0			[扩展结构特性枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form71		db "CPUID.EAX=07h ECX=1			[扩展结构特性枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form9		db "CPUID.EAX=09h  				[全局Cache访问信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
forma		db "CPUID.EAX=0ah  				[架构性能监示函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formb		db "CPUID.EAX=0bh  				[扩展拓扑枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formd		db "CPUID.EAX=0dh ECX=0			[处理器扩展状态枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formd1		db "CPUID.EAX=0dh ECX=1			[处理器扩展状态枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formd2		db "CPUID.EAX=0dh ECX=n,n>1			[处理器扩展状态枚举子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formf		db "CPUID.EAX=0fh ECX=0			[资源控制器技术RDT监控枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
formf1		db "CPUID.EAX=0fh ECX=1			[三级缓存资源控制器技术RDT监控功能枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form10		db "CPUID.EAX=10h ECX=0			[资源控制器技术RDT分配枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form101		db "CPUID.EAX=10h ECX=1=ResID		[三级缓存分配技术枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form102		db "CPUID.EAX=10h ECX=2=ResID		[二级缓存分配技术枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form103		db "CPUID.EAX=10h ECX=3=ResID		[内存带宽分配枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form12		db "CPUID.EAX=12h ECX=0			[Intel软件保护扩展SGX功能枚举函数和子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form121		db "CPUID.EAX=12h ECX=1			[Intel软件保护扩展SGX属性枚举函数和子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form122		db "CPUID.EAX=12h ECX=2或更高		[Intel软件保护扩展SGX EPC枚举函数和子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form14		db "CPUID.EAX=14h ECX=0			[Intel 处理器跟踪枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form141		db "CPUID.EAX=14h ECX=1			[Intel 处理器跟踪枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form15		db "CPUID.EAX=15h				[时间戳计数器和核心芯片时钟信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form16		db "CPUID.EAX=16h				[处理器频率信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form17		db "CPUID.EAX=17h ECX=0			[片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form171		db "CPUID.EAX=17h ECX=1			[片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form172		db "CPUID.EAX=17h ECX=2			[片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form173		db "CPUID.EAX=17h ECX=3			[片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form17n		db "CPUID.EAX=17h ECX>MaxSOCID_Index	[片上系统供应商属性枚举子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form18		db "CPUID.EAX=18h ECX=0			[确定地址转换参数主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form181		db "CPUID.EAX=18h ECX>=1			[确定地址转换参数子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form19		db "CPUID.EAX=19h				[密钥锁函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1a		db "CPUID.EAX=1ah ECX=0			[混杂信息子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1b		db "CPUID.EAX=1bh ECX>=0			[PCONFIG信息子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1d		db "CPUID.EAX=1dh ECX=0			[磁贴信息主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1d1		db "CPUID.EAX=1dh ECX=1			[磁贴调色板子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1e		db "CPUID.EAX=1eh ECX=0			[TMUL信息主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form1f		db "CPUID.EAX=1fh				[V2 扩展拓扑枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form20		db "CPUID.EAX=20h ECX=0			[处理器历史重置子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0

form800		db "[处理器扩展信息:80000000]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form801		db "[处理器扩展信息:80000001]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form802		db "[处理器扩展信息:80000002]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form803		db "[处理器扩展信息:80000003]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form804		db "[处理器扩展信息:80000004]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form805		db "[处理器扩展信息:80000005]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form806		db "[处理器扩展信息:80000006]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form807		db "[处理器扩展信息:80000007]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0
form808		db "[处理器扩展信息:80000008]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=00H CPUID CPU类型 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;cpu  type 1 3 6 7 10
text1		db 32 dup 0
cpubaddr	dd cpub00,cpub01,cpub02,cpub03,cpub04,0,cpub06,cpub07,cpub08,cpub09,cpub0a,cpub0b,cpub0c,0,cpub0e,cpub0f
			dd 0,cpub11,cpub12,cpub13,cpub14,cpub15,cpub16,cpub17
cpueax		db  "基本CPUID信息最大功能函数输入值为: %X",0dh,0ah,0
cpusrn		db	"	CPU的序列号为: %X%X",0dh,0ah,0
cpu1		db  "Intel Xeon Processors",0dh,0ah,0										;02h  eax 信息
cpu2		db  "Pentium M Processor",0dh,0ah,0											;02h
cpu3		db  "Pentium 4 Processor supporting Hyper-Threading Technology",0dh,0ah,0	;05h
cpu4		db  "Pentium D Processor (8xx)",0dh,0ah,0									;05h
cpu5		db  "Pentium D Processor (9xx)",0dh,0ah,0									;06h
cpu6		db  "Intel Core Duo Processor",0dh,0ah,0									;0ah
cpu7		db  "Intel Core 2 Duo Processor",0dh,0ah,0									;0ah
cpu8		db  "Intel Xeon Processor 3000,5100,5300 Series",0dh,0ah,0					;0ah
cpu9		db  "Intel Xeon Processor 3000,5100,5200,5300,5400 Series",0dh,0ah,0		;0ah
cpu10		db  "Intel Core 2 Duo Processor 8000 Series",0dh,0ah,0						;0dh
cpu11		db  "Intel Xeon Processor 5200,5400 Series",0dh,0ah,0						;0ah

cpub00		db  "	此处理器不支持类型识别功能",0dh,0ah,0
cpub01		db  "	Intel(R) Celeron(R) processor",0dh,0ah,0
cpub02		db  "	Intel(R) Pentium(R) III processor",0dh,0ah,0
cpub03		db  "	Intel(R) Pentium(R) III Xeon(R) processor;If processor signature = 000006B1h, then Intel(R) Celeron(R) processor",0dh,0ah,0
cpub04		db  "	Intel(R) Pentium(R) III processor",0dh,0ah,0
cpub06		db  "	Mobile Intel(R) Pentium(R) III processor-M",0dh,0ah,0
cpub07		db  "	Mobile Intel(R) Celeron(R) processor",0dh,0ah,0
cpub08		db  "	Intel(R) Pentium(R) 4 processor",0dh,0ah,0
cpub09		db  "	Intel(R) Pentium(R) 4 processor",0dh,0ah,0
cpub0a		db  "	Intel(R) Celeron(R) processor",0dh,0ah,0
cpub0b		db  "	Intel(R) Xeon(R) processor;If processor signature = 00000F13h, then Intel(R) Xeon(R) processor MP",0dh,0ah,0
cpub0c		db  "	Intel(R) Xeon(R) processor MP",0dh,0ah,0
cpub0e		db  "	Mobile Intel(R) Pentium(R) 4 processor-M; If processor signature = 00000F13h, then Intel(R) Xeon(R) processor",0dh,0ah,0
cpub0f		db  "	Mobile Intel(R) Celeron(R) processor",0dh,0ah,0
cpub11		db  "	Mobile Genuine Intel(R) processor",0dh,0ah,0
cpub12		db  "	Intel(R) Celeron(R) M processor",0dh,0ah,0
cpub13		db  "	Mobile Intel(R) Celeron(R) processor",0dh,0ah,0
cpub14		db  "	Intel(R) Celeron(R) processor",0dh,0ah,0
cpub15		db  "	Mobile Genuine Intel(R) processor",0dh,0ah,0
cpub16		db  "	Intel(R) Pentium(R) M processor",0dh,0ah,0
cpub17		db  "	Mobile Intel(R) Celeron(R) processor",0dh,0ah,0
cpubXX		db  "	【保留】",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=01H 处理器类型
;<<<<<<<<<<<<<<<<<<<<<<<<<<
Extended_Famlly_ID	dw 0
Famlly_ID			dw 0
Model_ID			dw 0
Extended_Model_ID	dw 0
Stepping_ID			dw 0

a01text		db  "	处理器类型字段为:%s ",0dh,0ah,0
cput1		db  "Original OEM Processor",0dh,0ah,0												;00b  eax.[12-13] CPU 家族类型
cput2		db  "Intel OverDrive Processor",0dh,0ah,0											;01b
cput3		db  "Dual processor (not applicable to Intel 486 Processors",0dh,0ah,0				;10b
cput4		db  "Intel reserved",0dh,0ah,0														;11b

;>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=01h EAX 功能特性
;<<<<<<<<<<<<<<<<<<<<<<<<<<
a01tex1		db  "	EAX			  CPU扩展家庭ID: %X CPU家庭ID: %X CPU扩展模式: %X CPU模式: %X 步进ID: %X",0dh,0ah,0dh,0ah,0
;a01tex2		db  "	EAX 		  CPU家庭ID: %X CPU扩展模式: %X CPU模式: %X 步进ID: %X",0dh,0ah,0
a01tex3		db  "	EAX			  CPU家庭ID: %X CPU模式: %X 步进ID: %X",0dh,0ah,0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=01h EBX 功能特性
;<<<<<<<<<<<<<<<<<<<<<<<<<<
a01b0_7		db  "	EBX 字节[00-07]  值: %X	H	类型索引值",0dh,0ah,0
a01b8_15	db  "	EBX 字节[08-15]  值: %X	H	CLFLUSH行尺寸(值*8=高速缓存行尺寸/字节;也用于CLFLUSHOPT)",0dh,0ah,0
a01b16_23	db  "	EBX 字节[16-23]  值: %X	H	在物理包中逻辑处理器地址ID的最大值",0dh,0ah,0
a01b24_31	db  "	EBX 字节[24-31]  值: %X	H	初始化APIC标识",0dh,0ah,0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=01h ECX 功能特性
;<<<<<<<<<<<<<<<<<<<<<<<<<<
sse3 		db  "	ECX 字节[00]  SSE3		Intel单指令数据流扩展功能",0dh,0ah,0
pclm1		db  "	ECX 字节[01]  PCLMULQDQ    	不进位乘法",0dh,0ah,0
dtes64		db  "	ECX 字节[02]  DTES64		64位DS区域",0dh,0ah,0
monit1		db  "	ECX 字节[03]  MONITOR		支持MONITOR/MWAIT",0dh,0ah,0
ds_c		db  "	ECX 字节[04]  DS-CPL		CPL有条件调试存储",0dh,0ah,0
vmx			db  "	ECX 字节[05]  VMX		虚拟机扩展",0dh,0ah,0
smx			db  "	ECX 字节[06]  SMX		保护模式扩展",0dh,0ah,0
est			db  "	ECX 字节[07]  EIST		加强型Intel SeedStep技术",0dh,0ah,0
tm2			db  "	ECX 字节[08]  TM2		温度监控2",0dh,0ah,0
ssse3		db  "	ECX 字节[09]  SSSE3		补充单指令数据流扩展功能",0dh,0ah,0
cnxt_id		db  "	ECX 字节[10]  CNXT-ID		L1环境标识,IA32_MISC_ENABLE MSR 24比特位,L1数据缓存环境模式",0dh,0ah,0
sdbg		db  "	ECX 字节[11]  SDBG		调试,IA32_DEBUG_INTERFACE MSR 硅片调试",0dh,0ah,0
fma			db  "	ECX 字节[12]  FMA		混合乘加运算,用于YMM结构的FMA扩展",0dh,0ah,0
cmpx1		db  "	ECX 字节[13]  CMPXCHG16B	CMPXCHGBB/CMPXCHG16B 比较和改变交换字节",0dh,0ah,0 
xtpr		db  "	ECX 字节[14]  xTPR		更新控制,可由IA32_MISC_ENABLE比特位23改变",0dh,0ah,0
pdcm		db  "	ECX 字节[15]  PDCM		性能/调试能力MSR,MSR IA32_PERF_CAPABILITIES,执行和调试线路",0dh,0ah,0
				;[第16位保留]
pcid		db  "	ECX 字节[17]  PCID		进程环境标识,可使用软件设置 CR4.PCIDE",0dh,0ah,0
dca			db  "	ECX 字节[18]  DCA		直接缓存访问,从内存图表设备访问缓存数据",0dh,0ah,0
sse4_1		db  "	ECX 字节[19]  SSE4_1		支持SSE4.1指令集",0dh,0ah,0
sse4_2		db  "	ECX 字节[20]  SSE4_2		支持SSE4.2指令集",0dh,0ah,0
x2apic		db  "	ECX 字节[21]  x2APIC		支持x2APIC特性",0dh,0ah,0
movb1		db  "	ECX 字节[22]  MOVBE		支持MOVBE指令",0dh,0ah,0
popc1		db  "	ECX 字节[23]  POPCNT		支持POPCNT指令",0dh,0ah,0
tsc_d		db  "	ECX 字节[24]  TSC-Deadline	支持APIC计时器在TSC deadline值上的 one-shot 操作",0dh,0ah,0
aes			db  "	ECX 字节[25]  AESNI		AESNI扩展指令支持",0dh,0ah,0
xsav1		db  "	ECX 字节[26]  XSAVE		支持XSAVE/XRSTOR外部处理扩展特性,XSETBV/XGETBV指令,在XCR0上使用",0dh,0ah,0
osxsave		db  "	ECX 字节[27]  OSXSAVE    	支持操作系统设置CR4.0SXSAVE[bit18],用XSETBV/XGETBV指令访问XCR0,支持扩展",0dh,0ah
			db  "					管理结构XSAVE/XRSTOR",0dh,0ah,0
avx			db  "	ECX 字节[28]  AVX		支持AVX扩展指令集",0dh,0ah,0
f16c		db  "	ECX 字节[29]  F16C		支持16位浮点运算指令集",0dh,0ah,0
rdran1		db  "	ECX 字节[30]  RDRAND		支持随机数指令",0dh,0ah,0
noused		db  "	ECX 字节[31]  Not Used		一直返回值是0",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=01h EDX 功能特性
;<<<<<<<<<<<<<<<<<<<<<<<<<<
fpu			db  "	EDX 字节[00]  FPU-x87		芯片上的FPU浮点运算单元",0dh,0ah,0
vme			db  "	EDX 字节[01]  VME		加强虚8086模式,含CR4.VME控制,CR4.PVI为TSS保护模式虚拟中断,软中断异常,软件镜像",0dh,0ah
			db  "					和EFLAGS.VIF,EFLAGS.VIP标志",0dh,0ah,0
de			db  "	EDX 字节[02]  DE 		调试扩展 CR4.DE 控制I/O断点,选择访问DR4和DR5",0dh,0ah,0
pse			db  "	EDX 字节[03]  PSE		页面扩展 大页面4M支持,包含CR4.PSE控制特性 选择保留CR3,PDEs,PTEs",0dh,0ah,0
tsc			db  "	EDX 字节[04]  TSC		时间计数 RDTSC 指令支持 包含CR4.TSD私有控制",0dh,0ah,0
msr			db  "	EDX 字节[05]  MS 		RDMSR 和 WRMSR支持",0dh,0ah,0
pae			db  "	EDX 字节[06]  PAE		物理地址扩展 32位 2M扩展4M",0dh,0ah,0
mce			db  "	EDX 字节[07]  MCE		机器检查异常",0dh,0ah,0
cx8			db  "	EDX 字节[08]  CX8		CMPXCHG8B",0dh,0ah,0
apic		db  "	EDX 字节[09]  APIC		APIC芯片支持 处理器的高级中断控制,物理地址环FFFE0000h到FFFE0FFFh",0dh,0ah,0
				;[第10位保留]
sep			db  "	EDX 字节[11]  SEP		支持SYSENTER/SYSEXIT指令,访问MSRs支持",0dh,0ah,0
mtrr		db  "	EDX 字节[12]  MTRR		内存类型范围寄存器,MTRRs支持,MSR特性,支持在内存中修补MTRRs",0dh,0ah,0
pge			db  "	EDX 字节[13]  PGE		PTE全局位和TLB有关,全局TLB入口,公共到不同的处理器需要CR4.PGE控制特性",0dh,0ah,0
mca			db  "	EDX 字节[14]  MCA		机器结构检查 MCG_CAP特性,MCG_CAP MSR 检查机器报错误",0dh,0ah,0
cmov1		db  "	EDX 字节[15]  CMOV		条件移动/比较指令CPUID.FPU特性 支持FCOMI/FCMOV指令",0dh,0ah,0
pat			db  "	EDX 字节[16]  PAT		页面属性表和MTRRs有关,被操作系统指定内存属性有寄存器有4K的内存范围",0dh,0ah,0
pse_36		db  "	EDX 字节[17]  PSE-36		页面尺寸扩展 4M页面地址,物理内存4G以上 13-20位页面目录进入,可以升到 40位",0dh,0ah,0
psn			db  "	EDX 字节[18]  PSN		处理器序列号",0dh,0ah,0
clfsh		db  "	EDX 字节[19]  CLFSH		支持CLFLUSH指令",0dh,0ah,0
				;[第20位保留]
ds1			db  "	EDX 字节[21]  DS 		调试存储和 BTS PEBS有关",0dh,0ah,0
acpi		db  "	EDX 字节[22]  ACPI		温度监视和时钟控制",0dh,0ah,0
mmx			db  "	EDX 字节[23]  MMX		支持MMX技术",0dh,0ah,0
fxsr		db  "	EDX 字节[24]  FXSR		支持FXSAVE/FXRSTOR指令,在操作系统上支持CR4.OSFXSR,可用于恢复浮点,",0dh,0ah,0
sse			db  "	EDX 字节[25]  SSE		S支持SE扩展",0dh,0ah,0
sse2		db  "	EDX 字节[26]  SSE2		支持SSE2扩展",0dh,0ah,0    
ss1			db  "	EDX 字节[27]  SS 		自我窥探",0dh,0ah,0
htt			db  "	EDX 字节[28]  HTT		最大APIC ID保留段可用,CPUID.1.EBX[bit16:23](逻辑处理器的最大数),多线程",0dh,0ah,0
tm			db  "	EDX 字节[29]  TM 		处理器的自动控制的热监测器",0dh,0ah,0
				;[第30位保留]
pbe			db  "	EDX 字节[31]  PBE		Pend.Brk.EN支持使用FERR#/PBE#脚,当STPCLK#(停止时钟结构)使能,发送一个中断信号",0dh,0ah
			db	"					到常规操作的handle",0dh,0ah,0

;++++++++++++++
;TLB值判断信息
;++++++++++++++
note1		db "	返回TLB值成功:",0
c2_note1	db "【TLB或CACHE描述无效】",0dh,0ah,0
c2_note2	db "【TLB或CACHE描述可用】",0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  EAX=02H CPUID 信息(缓存或TLB描述)
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tlbdsr00	db "	General		空描述",0dh,0ah,0
tlbdsr01	db "	TLB		指令TLB:4K字节页面,4路组相联,32个条目",0dh,0ah,0
tlbdsr02	db "	TLB		指令TLB:4M字节页面,4路组相联,2个条目",0dh,0ah,0
tlbdsr03	db "	TLB		数据TLB:4K字节页面,4路组相联,64个条目",0dh,0ah,0
tlbdsr04	db "	TLB		数据TLB:4M字节页面,4路组相联,8个条目",0dh,0ah,0
tlbdsr05	db "	TLB		数据TLB:4M字节页面,4路组相联,32个条目",0dh,0ah,0
tlbdsr06	db "	Cache		1级指令高速缓存:8K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr08	db "	Cache		1级指令高速缓存:16K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr09	db "	Cache		1级指令高速缓存:32K字节页面, 4路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsr0A	db "	Cache		1级数据高速缓存:8K字节页面,2路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr0B	db "	TLB		指令TLB:4M字节页面,4路组相联,4个条目",0dh,0ah,0
tlbdsr0C	db "	Cache		1级数据高速缓存:16K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr0D	db "	Cache		1级数据高速缓存:16K字节页面, 4路组相联, 64字节管道尺寸, ECC",0dh,0ah,0
tlbdsr0E	db "	Cache		1级高速缓存:24K字节,6路组相联,64字节管道尺寸",0dh,0ah,0 
tlbdsr1D	db "	Cache		2级高速缓存:128K字节,2路组相联,64字节管道尺寸",0dh,0ah,0 
tlbdsr21	db "	Cache		256-KB L2 (MLC), 8路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsr22	db "	Cache		3级数据高速缓存:512K字节页面,4路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr23	db "	Cache		3级数据高速缓存:1M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr24	db "	Cache		2级高速缓存:1M字节,16路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr25	db "	Cache		3级数据高速缓存:2M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr29	db "	Cache		3级数据高速缓存:4M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr2C	db "	Cache		1级数据高速缓存:32K字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr30	db "	Cache		1级指令高速缓存:32K字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr3A	db "	Cache		2级高速缓存: 192K字节页面,6路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0
tlbdsr3B	db "	Cache		2级高速缓存: 128K字节页面,2路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0
tlbdsr3C	db "	Cache		2级高速缓存: 256K字节页面,4路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0
tlbdsr3D	db "	Cache		2级高速缓存: 384K字节页面,6路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0
tlbdsr3E	db "	Cache		2级高速缓存: 512K字节页面,4路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0
tlbdsr40	db "	Cache		没有2级高速缓存或2级高速缓存可用时,没有3级高速缓存",0dh,0ah,0
tlbdsr41	db "	Cache		2级高速缓存:128K字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr42	db "	Cache		2级高速缓存:256K字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr43	db "	Cache		2级高速缓存:512K字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr44	db "	Cache		2级高速缓存:1M字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr45	db "	Cache		2级高速缓存:2M字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr46	db "	Cache		3级高速缓存:4M字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr47	db "	Cache		3级高速缓存:8M字节,4路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr48	db "	Cache		2级高速缓存:3M字节,12路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr49	db "	Cache		3级高速缓存:4M字节,16路组相联,64字节管道尺寸(Intel Xeon processor MP, Family 0FH, Model 06H);",0dh,0ah
			db "	Cache		2级高速缓存:4M字节,16路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4A	db "	Cache		3级高速缓存:6M字节,12路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4B	db "	Cache		3级高速缓存:8M字节,16路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4C	db "	Cache		3级高速缓存:12M字节,12路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4D	db "	Cache		3级高速缓存:16M字节,16路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4E	db "	Cache		2级高速缓存:6M字节,24路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr4F	db "	TLB		指令TLB:4K字节和2M字节或4M字节页面,32个条目",0dh,0ah,0
tlbdsr50	db "	TLB		指令TLB:4K字节和2M字节或4M字节页面,64个条目",0dh,0ah,0
tlbdsr51	db "	TLB		指令TLB:4K字节和2M字节或4M字节页面,128个条目",0dh,0ah,0
tlbdsr52	db "	TLB		指令TLB:4K字节和2M字节或4M字节页面,256个条目",0dh,0ah,0
tlbdsr55	db "	TLB		指令TLB:2M字节或4M字节页面,全路组相联,16个条目",0dh,0ah,0
tlbdsr56	db "	TLB		数据TLB0:4M字节页面,4路组相联,16个条目",0dh,0ah,0
tlbdsr57	db "	TLB		数据TLB0:4K字节页面,4路相联,16个条目",0dh,0ah,0
tlbdsr59	db "	TLB		数据TLB0:4K字节页面,全路相联,16个条目",0dh,0ah,0
tlbdsr5A	db "	TLB		数据TLB0:2M字节或4M字节页面,4路组相联,32个条目",0dh,0ah,0
tlbdsr5B	db "	TLB		数据TLB:4K字节和4M字节页面,64个条目",0dh,0ah,0
tlbdsr5C	db "	TLB		数据TLB:4K字节和4M字节页面,128个条目",0dh,0ah,0
tlbdsr5D	db "	TLB		数据TLB:4K字节和4M字节页面,256个条目",0dh,0ah,0
tlbdsr60	db "	Cache		1级数据高速缓存:16K字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr61	db "	TLB		指令TLB:4K字节页面,全路相联,48个条目",0dh,0ah,0
tlbdsr63	db "	TLB		数据TLB:2M字节或4M字节页面,4路组相联,32条目和一个指定数组跟1G字节页面,",0dh,0ah
			db "			4路组相联,4个条目",0dh,0ah,0
tlbdsr64	db "	TLB		数据TLB:4k字节页面,4路组相联,512字节管道尺寸",0dh,0ah,0
tlbdsr66	db "	Cache		1级数据高速缓存:8K字节,4路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr67	db "	Cache		1级数据高速缓存:16K字节,4路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr68	db "	Cache		1级数据高速缓存:32K字节,4路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr6A	db "	Cache		uTLB:4k字节页面,8路组相联,64个条目",0dh,0ah,0
tlbdsr6B	db "	Cache		DTLB:2M/4M字节页面,8路组相联,64个条目",0dh,0ah,0
tlbdsr6C	db "	Cache		DTLB:4k字节页面,8路组相联",0dh,0ah,0
tlbdsr6D	db "	Cache		DTLB:4k字节页面,8路组相联",0dh,0ah,0
tlbdsr70	db "	Cache		跟踪高速缓存:12K管理层,8路组相联",0dh,0ah,0
tlbdsr71	db "	Cache		跟踪高速缓存:16K管理层,8路组相联",0dh,0ah,0
tlbdsr72	db "	Cache		跟踪高速缓存:32K管理层,8路组相联",0dh,0ah,0
tlbdsr76	db "	TLB		指令TLB:2M/4M字节页面,全路相联,8个条目",0dh,0ah,0
tlbdsr78	db "	Cache		2级高速缓存:1M字节,4路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr79	db "	Cache		2级高速缓存:128K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr7A	db "	Cache		2级高速缓存:256K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr7B	db "	Cache		2级高速缓存:512K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr7C	db "	Cache		2级高速缓存:1M字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0
tlbdsr7D	db "	Cache		2级高速缓存:2M字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr7F	db "	Cache		2级高速缓存:512K字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr80	db "	Cache		2级高速缓存:512K字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr82	db "	Cache		2级高速缓存:256K字节,8路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr83	db "	Cache		2级高速缓存:512K字节,8路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr84	db "	Cache		2级高速缓存:1M字节,8路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr85	db "	Cache		2级高速缓存:2M字节,8路组相联,32字节管道尺寸",0dh,0ah,0
tlbdsr86	db "	Cache		2级高速缓存:512K字节,4路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsr87	db "	Cache		2级高速缓存:1M字节,8路组相联,64字节管道尺寸",0dh,0ah,0
tlbdsrA0	db "	DTLB		DTLB:4K字节页面,全路相联,32个条目",0dh,0ah,0
tlbdsrB0	db "	TLB		指令TLB:4K字节页面,4路组相联,128个条目",0dh,0ah,0
tlbdsrB1	db "	TLB		指令TLB:2M页面,4路相联,8条目或4M页,4路组相联,4条目",0dh,0ah,0
tlbdsrB2	db "	TLB		指令TLB:4K字节页面,4路组相联,64个条目",0dh,0ah,0
tlbdsrB3	db "	TLB		数据TLB:4K字节页面,4路组相联,128个条目",0dh,0ah,0
tlbdsrB4	db "	TLB		数据TLB1:4K字节页面,4路组相联,256个条目",0dh,0ah,0
tlbdsrB5	db "	TLB		指令TLB1:4K字节页面,8路组相联,64个条目",0dh,0ah,0
tlbdsrB6	db "	TLB		指令TLB1:4K字节页面,8路相联,128个条目",0dh,0ah,0
tlbdsrBA	db "	TLB		数据TLB1:4K字节页面,4路相联,64个条目",0dh,0ah,0
tlbdsrC0	db "	TLB		数据TLB:4K字节和4M字节页面,4路相联,8个条目",0dh,0ah,0
tlbdsrC1	db "	STLB		共享2级TLB: 4K字节页面, 4路组相联, 512个条目",0dh,0ah,0
tlbdsrC2	db "	DTLB		DTLB:4K字节/2M字节页面, 4路相联,16个条目",0dh,0ah,0
tlbdsrC3	db "	STLB		共享2级TLB:4K字节/2M字节页面,6路相联,1536条目,也有1GB字节页面,4路,16个条目",0dh,0ah,0
tlbdsrC4	db "	DTLB		DTLB:2M/4M字节页面,4路相联,32个条目",0dh,0ah,0
tlbdsrCA	db "	STLB		共享2级TLB:4KB页面,4路组相联,512个条目",0dh,0ah,0
tlbdsrD0	db "	Cache		3级缓存:512K字节,4路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrD1	db "	Cache		3级缓存:1M字节,4路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrD2	db "	Cache		3级缓存:2M字节,4路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrD6	db "	Cache		3级缓存:1M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrD7	db "	Cache		3级缓存:2M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrD8	db "	Cache		3级缓存:4M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrDC	db "	Cache		3级缓存:2M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrDD	db "	Cache		3级缓存:4M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrDE	db "	Cache		3级缓存:8M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrE2	db "	Cache		3级缓存:2M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrE3	db "	Cache		3级缓存:4M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrE4	db "	Cache		3级缓存:8M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrEA	db "	Cache		3级缓存:12M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrEB	db "	Cache		3级缓存:18M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrEC	db "	Cache		3级缓存:24M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0
tlbdsrF0	db "	Prefetch	64字节预读",0dh,0ah,0
tlbdsrF1	db "	Prefetch	128字节预读",0dh,0ah,0 
tlbdsrFE	db "	General		CPUID 功能函数 2 不能报告TLB描述信息, 使用CPUID 功能函数 18H 请求TLB和另外地址转换参数",0dh,0ah,0 
tlbdsrFF	db "	General		CPUID 功能函数 2 不能报告缓存描述信息,使用CPUID 功能函数 4 请求缓存参数",0dh,0ah,0 
 
tlbdsrXA	db "			指令TLB:【信息未公开】",0dh,0ah,0
tlbdsrXB	db "			数据TLB:【信息未公开】",0dh,0ah,0
tlbdsrXC	db "			Cache缓存:【信息未公开】",0dh,0ah,0
afg  		db "---------------------------------------------------------------------------",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=04H CPUID 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;EAX
cachet0		db "	EAX 字节[00]    空-没有任何缓存",0dh,0ah,0
cachet1		db "	EAX 字节[01]    数据缓存",0dh,0ah,0
cachet2		db "	EAX 字节[02]    指令缓存",0dh,0ah,0
cachet3		db "	EAX 字节[03]    统一缓存",0dh,0ah,0
cachet4		db "	EAX 字节[04-31] CPUID 04函数 EAX 4-31字节保留",0dh,0ah,0
cachelevel	db "	EAX 字节[05-07] 高速缓存级别是: %X",0dh,0ah,0						;bit 5-7
cachesleve	db "	EAX 字节[08]    自初始缓存级别(不须要初始化开关)",0dh,0ah,0 	;bit 8
cachefa		db "	EAX 字节[09]    全相联缓存",0dh,0ah,0							;bit 9
cachere		db "	EAX 字节[10-13] CPUID 04函数 EAX 13-26字节保留",0dh,0ah,0		;bit 10-13
cachemaxl	db "	EAX 字节[14-25] 逻辑处理器共享缓存ID地址的最大数",0dh,0ah,0     ;bit 14-25
cachemaxp	db "    EAX 字节[26-31] 物理处理器缓存ID地址的最大数",0dh,0ah,0			;bit 26-31
cacebx1		db "	EBX 字节[00-11] 系统相干线尺寸:L=%X",0dh,0ah,0
cacebx2		db "	EBX 字节[12-21] 物理线路分区:P=%X",0dh,0ah,0
cacebx3		db "	EBX 字节[22-31] 联想方式:W=%X",0dh,0ah,0
cacecx		db "	ECX 字节[00-31] 设置参数:S=%X",0dh,0ah,0

;共享此缓存的逻辑处理器的最大可寻址ID数
;物理内存中处理器内核的最大可寻址ID数
;EDX
cac0		db "	EDX 字节[00]    低级别缓存下使用WBINVD/INVD",0dh,0ah,0
cac10		db "	EDX 字节[00]    回写失效设置",0dh,0ah,0
cac10_0		db "	EDX 字节 0      WBINVD/INVD作用于线程的低级别缓存的共享缓存线程",0dh,0ah,0
cac10_1		db "	EDX 字节 1      WBINVD/INVD无保护作用于非原始线程的低级别共享缓存",0dh,0ah,0

;0=WBINVD/INVD作用于线程的低级别缓存的共享缓存线程
;1=WBINVD/INVD无保护作用于非原始线程的低级别共享缓存
cac1 		db "	EDX 字节[01]    缓存包容性设置",0dh,0ah,0
cac1_0		db "	EDX 字节 0      不包含较低的缓存级别的缓存",0dh,0ah,0
cac1_1		db "	EDX 字节 1      包含较低的缓存级别的缓存",0dh,0ah,0
;0=不包含较低的缓存级别的缓存
;1=包含较低的缓存级别的缓存
cac2		db "	EDX 字节[02]    复杂缓存索引",0dh,0ah,0
cac2_0		db "	EDX 字节 0      直接映射缓存",0dh,0ah,0
cac2_1		db "	EDX 字节 1      一个复杂函数用于索引缓存,可能使用所有地址位",0dh,0ah,0

;0=直接映射缓存
;1=一个复杂函数用于索引缓存,可能使用所有地址位
cac3_31		db "	EDX 字节[03-31] CPUID 04函数 EDX 3-31字节保留为0",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=05H CPUID 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a05mixmon	db "	EAX 字节[0-15]  最小监控尺寸(默认处理器监控):%d ",0dh,0ah,0
a05maxmon	db "	EBX 字节[0-15]  最大监控尺寸(默认处理器监控):%d ",0dh,0ah,0
a05c0		db "	ECX 字节[0]     监控-等待指令扩展支持.(在EAX和EBX寄存器之前)",0dh,0ah,0
a05c1		db "	ECX 字节[1]     支持MWAIT的中断事件的中断支持,事件中断时关闭功能",0dh,0ah,0
a05cx		db "	ECX 字节[2-31]  CPUID 子功能 05 保留功能开关",0dh,0ah,0
a05d0		db "	EDX 字节[0-3]   C0 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d4		db "	EDX 字节[4-7]   C1 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d8		db "	EDX 字节[8-11]  C2 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d12		db "	EDX 字节[12-15] C3 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d16		db "	EDX 字节[16-19] C4 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d20		db "	EDX 字节[20-23] C5 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d24		db "	EDX 字节[24-27] C6 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0
a05d28		db "	EDX 字节[28-31] C7 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=06H CPUID 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a06a00		db "	EAX 字节[0]     数字温度传感器",0dh,0ah,0
a06a01		db "	EAX 字节[1]     Intel 快速Boost技术可用(看IA32_MISC_ENABLE字节[38]位)",0dh,0ah,0
a06a02		db "	EAX 字节[2]     ARAT.APIC时间器在线运行特性支持",0dh,0ah,0
a06a03		db "	EAX 字节[3]     保留",0dh,0ah,0
a06a04		db "	EAX 字节[4]     PLN.电源最小注意控制支持",0dh,0ah,0
a06a05		db "	EAX 字节[5]     ECMD.时钟模块循环扩展支持",0dh,0ah,0
a06a06		db "	EAX 字节[6]     PTM.包中断管理支持",0dh,0ah,0
a06a07		db "	EAX 字节[7]     HWP.HWP基本注册(IA32_PM_ENABLE字节[0]位,IA32_HWP_CAPABILITIES,",0dh,0ah
			db "			IA32_HWP_REQUEST,IA32_HWP_STATUS)支持",0dh,0ah,0
a06a08		db "	EAX 字节[8]     HWP_注意.IA32_HWP_INTERRUPT MSR支持",0dh,0ah,0
a06a09		db "	EAX 字节[9]     HWP_激活_窗口.IA32_HWP_REQUEST字节[32:41]支持",0dh,0ah,0
a06a10		db "	EAX 字节[10]    HWP_传统_专业_参考.IA32_HWP_REQUEST字节[24:31]支持",0dh,0ah,0
a06a11		db "	EAX 字节[11]    HWP_包_级别_请求.IA32_HWP_REQUEST_PKG MSR 支持",0dh,0ah,0
a06a12		db "	EAX 字节[12]    保留",0dh,0ah,0
a06a13		db "	EAX 字节[13]    HDC.HDC基本注册IA32_PKG_HDC_CTL,IA32_PM_CTL1,IA32_THREAD_STALL MSR 支持",0dh,0ah,0
a06a14		db "	EAX 字节[14]    Intel 快速Boost技术 3.0版可用",0dh,0ah,0
a06a15		db "	EAX 字节[15]    HWP线路.高分改变支持",0dh,0ah,0
a06a16		db "	EAX 字节[16]    HWP PECI 溢出支持",0dh,0ah,0
a06a17		db "	EAX 字节[17]    Flexible HWP支持",0dh,0ah,0
a06a18		db "	EAX 字节[18]    快速访问模块 IA32_HWP_REQUEST MSR 支持",0dh,0ah,0
a06a19		db "	EAX 字节[19]    HW_FEEDBACK.IA32_HW_FEEDBACK_PTR MSR,IA32_HW_FEEDBACK_CONFIG MSR,",0dh,0ah
			db "			IA32_PACKAGE_THERM_STATUS MSR字节[26]位,和IA32_PACKAGE_THERM_INTERRUPT MSR字节[25]位支持",0dh,0ah,0
a06a20		db "	EAX 字节[20]    中止idle逻辑处理器HWP请求支持",0dh,0ah,0
a06a21_31	db "	EAX 字节[21-31] 值: %X 保留",0dh,0ah,0

a06b0_3		db "	EBX 字节[0-3]   值: %X 中断号的数码中止场",0dh,0ah,0
a06b4_31	db "	EBX 字节[4-31]  值: %X 保留",0dh,0ah,0

a06c0		db "	ECX 字节[0]     硬件协调反馈能力 IA32_MPERF和IA32_APERF,提供处理器性能指标的能力(自从上次计数器重置以来),",0dh,0ah
			db "			以TSC频率运行时预期处理器性能的百分比。",0dh,0ah,0
a06c1_2		db "	ECX 字节[1-2]   值: %X 保留",0dh,0ah,0
a06c3		db "	ECX 字节[3]     处理器支持性能能量偏差偏好CPUID.06H:ECX.SETBH[3]设1,这也意味着新建筑的出现",0dh,0ah
			db "			MSR IA32_ENERGY_PERF_BIAS(1B0H)",0dh,0ah,0
a06c4_31	db "	ECX 字节[4-31]  值: %X 保留",0dh,0ah,0

a06d0_7		db "	EDX 字节[0-7]   值: %X 支持的硬件反馈接口功能的位图",0dh,0ah,0
a06d7_0		db "	EDX 字节[0]     像征性支持性能报告",0dh,0ah,0
a06d7_1		db "	EDX 字节[1]     像征性支持能源效率能力报告",0dh,0ah,0
a06d7_2_7	db "	EDX 字节[2-7]   值: %X 保留",0dh,0ah,0
a06d8_11	db "	EDX 字节[8-11]  值: %X 枚举硬件反馈接口结构的大小(以4KB页为单位),加返回值到结果",0dh,0ah,0
a06d16_31	db "	EDX 字节[16-31] 值: %X 保留",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=07H CPUID ECX=0 EBX 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
fsgsb1		db "	EBX 字节[00]	FSGSBASE			支持RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE",0dh,0ah,0
itam		db "	EBX 字节[01]	IA32_TSC_ADJUST		MSR支持",0dh,0ah,0
sgx			db "	EBX 字节[02]	SGX		",0dh,0ah,0
bmi1		db "	EBX 字节[03]	BMI1		",0dh,0ah,0
hle			db "	EBX 字节[04]	HLE		",0dh,0ah,0
avx2		db "	EBX 字节[05]	AVX2		",0dh,0ah,0
feof		db "	EBX 字节[06]	FDP_EXCPTN_ONLY.x87	FPU升级,仅仅用在x87异常",0dh,0ah,0
smep		db "	EBX 字节[07]	SMEP				支持超级管理保护执行模式",0dh,0ah,0
bmi2		db "	EBX 字节[08]	BMI2",0dh,0ah,0
rms			db "	EBX 字节[09]	支持加强 REP MOVSB/STOSB",0dh,0ah,0
invp1		db "	EBX 字节[10]	INVPCID",0dh,0ah,0
rtm			db "	EBX 字节[11]	RTM		",0dh,0ah,0
rdt_m		db "	EBX 字节[12]	RDT-M				支持Intel 资源索引技术(RDT)",0dh,0ah,0
dfpu		db "	EBX 字节[13]	FPU 				CS 和 FPU DS 值",0dh,0ah,0
impe		db "	EBX 字节[14]	Intel 内存保扩展",0dh,0ah,0
rdt_a		db "	EBX 字节[15]	RDT-A				技持Intel 资源索引技术(RDT)",0dh,0ah,0
avx512f		db "	EBX 字节[16]	AVX512F",0dh,0ah,0
avx512dq	db "	EBX 字节[17]	AVX512DQ",0dh,0ah,0
rdseed1		db "	EBX 字节[18]	RDSEED",0dh,0ah,0
adx			db "	EBX 字节[19]	ADX		",0dh,0ah,0
smap		db "	EBX 字节[20]	SMAP		",0dh,0ah,0
avx512_i	db "	EBX 字节[21]	AVX512_IFMA",0dh,0ah,0
resebx22	db "	EBX 字节[22]	【保留】",0dh,0ah,0
clflu1		db "	EBX 字节[23]	CLFLUSHOPT",0dh,0ah,0
clwb1		db "	EBX 字节[24]	CLWB		",0dh,0ah,0
ipt			db "	EBX 字节[25]	Intel 处理器跟踪",0dh,0ah,0
avx512pf	db "	EBX 字节[26]	AVX512PF(仅Intel Xeon Phi)",0dh,0ah,0
avx512er	db "	EBX 字节[27]	AVX512ER(仅Intel Xeon Phi)",0dh,0ah,0
avx512cd	db "	EBX 字节[28]	AVX512CD",0dh,0ah,0
sha			db "	EBX 字节[29]	SHA		",0dh,0ah,0
avx512bw	db "	EBX 字节[30]	AVX512BW",0dh,0ah,0
avx512vl	db "	EBX 字节[31]	AVX512VL",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=07H CPUID ECX=0 ECX 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
pref1		db "	ECX 字节[00]	PREFETCHWT1",0dh,0ah,0
avx512_v	db "	ECX 字节[01]	AVX512_VBMI",0dh,0ah,0
umip		db "	ECX 字节[02]	UMIP		支持用户模式指令",0dh,0ah,0
pku			db "	ECX 字节[03]	PKU			支持用户模式页面保护键",0dh,0ah,0
ospke		db "	ECX 字节[04]	OSPKE		系统设置CR4.PKE打开保护键(配合RDPKRU/WRPKRU指令)",0dh,0ah,0
waitpkg		db "	ECX 字节[05]	WAITPKG		",0dh,0ah,0
avx512_vb	db "	ECX 字节[06]	AVX512_VBMI2		",0dh,0ah,0
cet_ss		db "	ECX 字节[07]	CET_SS		支持 CET 影子栈特性,用IA32_U_CET 和 IA32_S_CET MSR设置",0dh,0ah
			db "						加强支持MSR设置:IA32_INTERRUPT_SPP_TABLE_ADDR,",0dh,0ah
			db "						IA32_PL3_SSP,IA32_PL2_SSP,IA32_PL1_SSP,和IA32_PL0_SSP",0dh,0ah,0
gfni		db "	ECX 字节[08]	GFNI		",0dh,0ah,0
vaes		db "	ECX 字节[09]	VAES		",0dh,0ah,0
vpclmu1		db "	ECX 字节[10]	VPCLMULQDQ	",0dh,0ah,0
avx512_vn	db "	ECX 字节[11]	AVX512_VNNI	",0dh,0ah,0
avx512_bi	db "	ECX 字节[12]	AVX512_BITALG	",0dh,0ah,0
tme_en		db "	ECX 字节[13]	TME_EN		MSR支持:IA32_TME_CAPABILITY,IA32_TME_ACTIVATE,",0dh,0ah
			db "						IA32_TME_EXCLUDE_MASK 和 IA32_TME_EXCLUDE_BASE",0dh,0ah,0
avx512_vp1	db "	ECX 字节[14]	AVX512_VPOPCNTDQ",0dh,0ah,0
resecx15	db "	ECX 字节[15]	【保留】",0dh,0ah,0
la57		db "	ECX 字节[16]	LA57		支持57位地址和5级页面",0dh,0ah,0
gmbb		db "	ECX 字节[17-21]	支持64位指令BNDLDX和BNDSTX指令使用 MAWAU 值",0dh,0ah,0
rdpid1		db "	ECX 字节[22]	RDPID 和 IA32_TSC_AUX 可用",0dh,0ah,0
kl			db "	ECX 字节[23]	KL			支持锁键",0dh,0ah,0
resecx24	db "	ECX 字节[24]	【保留】",0dh,0ah,0
cldem		db "	ECX 字节[25]	CLDEMOTE	支持缓冲访问",0dh,0ah,0
resecx26	db "	ECX 字节[26]	【保留】",0dh,0ah,0
movdi		db "	ECX 字节[27]	MOVDIRI	",0dh,0ah,0
movd64		db "	ECX 字节[28]	MOVDIR64B	",0dh,0ah,0
enqcmd		db "	ECX 字节[29]	ENQCMD	",0dh,0ah,0
sgx_lc		db "	ECX 字节[30]	SGX_LC		支持SGX语言配置",0dh,0ah,0
pks			db "	ECX 字节[31]	PKS			支持超级管理模式页面的保护键",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=07H CPUID ECX=0 EDX 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
resedx00	db "	EDX 字节[00]	【保留】",0dh,0ah,0
resedx01	db "	EDX 字节[01]	【保留】",0dh,0ah,0
avx512_4v	db "	EDX 字节[02]	AVX512_4VNNIW(仅Intel Xeon Phi)",0dh,0ah,0
avx512_4f	db "	EDX 字节[03]	AVX512_4FMAPS(仅Intel Xeon Phi)",0dh,0ah,0
fsrm		db "	EDX 字节[04]	快速近		REP MOV",0dh,0ah,0
uintr		db "	EDX 字节[05]	UINTR		处理器支持用户中断",0dh,0ah,0
resedx06	db "	EDX 字节[06]	【保留】",0dh,0ah,0
resedx07	db "	EDX 字节[07]	【保留】",0dh,0ah,0
avx512_vp	db "	EDX 字节[08]	AVX512_VP2INTERSECT		",0dh,0ah,0
resedx09	db "	EDX 字节[09]	【保留】",0dh,0ah,0
md_cl		db "	EDX 字节[10]	MD_CLEAR	支持",0dh,0ah,0
resedx11_14	db "	EDX 字节[11-14]	【保留】",0dh,0ah,0
resedx12	db "	EDX 字节[12]	【保留】",0dh,0ah,0
resedx13	db "	EDX 字节[13]	【保留】",0dh,0ah,0
seri		db "	EDX 字节[14]	SERIALIZE	",0dh,0ah,0
hybrid		db "	EDX 字节[15]	Hybrid		处理器定义一个hybrid部分",0dh,0ah,0
tsxld		db "	EDX 字节[16-17]	TSXLDTRK	处理器支持Intel TSX 挂起读地址跟踪",0dh,0ah,0
resedx17	db "	EDX 字节[17]	【保留】",0dh,0ah,0
pconf1		db "	EDX 字节[18]	PCONFIG",0dh,0ah,0
resedx19	db "	EDX 字节[19]	【保留】",0dh,0ah,0
cet_ibt		db "	EDX 字节[20]	CET_IBT		支持CET跟踪特性,处理器定义IA32U_CET和IA32_S_CET 2:5和10:63位",0dh,0ah,0
resedx21_25	db "	EDX 字节[21-25]	【保留】",0dh,0ah,0
amx_bf16	db "	EDX 字节[22]	AMX-BF16	处理器支持计算16位浮点数",0dh,0ah,0
avx512_fp	db "	EDX 字节[23]	AVX512_FP16	",0dh,0ah,0
amx_tile	db "	EDX 字节[24]	AMX-TILE	处理器支持tile包",0dh,0ah,0
amx_int8	db "	EDX 字节[25]	AMX-INT8	处理器支持计算8位整数",0dh,0ah,0
ibib 		db "	EDX 字节[26]	IBPB		加强支持IBRS和IBPB,处理器设置位支持IA32_SPEC_CTRL MSR和IA32_PRED_CMD MSR,",0dh,0ah
			db "			随软件设置	IA32_SPEC_CTRL[0](IBSR)和IA32_PRED_CMD[0](IBPB)",0dh,0ah,0
stibp		db "	EDX 字节[27]	STIBP		加强支持单线程(STIBP),设置后支持 IA32_SPEC_CTRL MSR和",0dh,0ah
			db "			随软件设置	IA32_SPEC_CTRL[1](STIBP)",0dh,0ah,0
l1d_flush	db "	EDX 字节[28]	D_FLUSH		加强支持 L1D_FLUSH,处理器设置位支持 IA32_FLUSH_CMD MSR",0dh,0ah
			db "			随软件设置	IA32_FLUSH_CMD[0](L1D_FLUSH)",0dh,0ah,0
siac		db "	EDX 字节[29]	SIAC		加强支持 IA32_ARCH_CAPABILITIES MSR",0dh,0ah,0
sicc		db "	EDX 字节[30]	SICC		加强支持 IA32_CORE_CAPABILITIES MSR",0dh,0ah,0
sisc		db "	EDX 字节[31]	SISC		IA32_SPEC_CTRL MSR,随软件设置 IA32_SPEC_CTRL[2](SSBD)",0dh,0ah,0


reserved	db "保留",0dh,0ah,0
intelatom	db "Intel Atom",0dh,0ah,0
intelcore	db "Intel Core",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=07H CPUID ECX=1 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
c07error	db "CPUID 07函数 EAX EBX ECX EDX 索引值错误",0dh,0ah,0
a07a0_4		db "保留",0dh,0ah,0
a07a5		db "AVX512_BF16 主向量网络指令,IEEE方案支持BFLOAT16输入和覆盖指令",0dh,0ah,0
a07a6_31	db "保留",0dh,0ah,0

a07b		db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0
a07c		db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0
a07d		db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 主要高冲缓存访问信息函数
;    EAX=09H CPUID  信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ipdc		db "	EDX 字节[00]	IPDC		IA32_PLATFORM_DCA_CAP MSR 地址1f8h值为%X",0dh,0ah,0

a09a		db "字节[0:31]的值为IA32_PLATFORM_DCA_CAP MSR(地址 1F8H)",0dh,0ah,0
a09b		db "保留",0dh,0ah,0
a09c		db "保留",0dh,0ah,0
a09d		db "保留",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 主要高冲缓存访问信息函数
;    EAX=0AH CPUID  信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a0aa0_7		db  "包显示版本ID",0dh,0ah,0
a0aa8_15	db  "通常显示计数逻辑处理的数",0dh,0ah,0
a0aa16_23	db  "通常显示计数的宽字位",0dh,0ah,0
a0aa24_31	db  "EBX 向量包显示事件的长度,如果EBX[x]=0&&EAX[24:31]>x 包事件x支持",0dh,0ah,0

a0ab0		db  "内核循环事件不可用 当值为1或 EAX[24:31]<1",0dh,0ah,0
a0ab1		db  "指令执行事件不可用 当值为1或 EAX[24:31]<2",0dh,0ah,0
a0ab2		db  "参考循环事件不可用 当值为1或 EAX[24:31]<3",0dh,0ah,0
a0ab3		db  "过去级别高速缓存参考事件不可用 当值为1或 EAX[24:31]<4",0dh,0ah,0
a0ab4		db  "过去级别高速缓存错误事件不可用 当值为1或 EAX[24:31]<5",0dh,0ah,0
a0ab5		db  "加强指令执行事件不可用 当值为1或 EAX[24:31]<6",0dh,0ah,0
a0ab6		db  "加强媒体指令执行事件不可用 当值为1或 EAX[24:31]<7",0dh,0ah,0
a0ab7		db  "顶层下端插入事件不可用 当值为1或 EAX[24:31]<8",0dh,0ah,0
a0ab8_31	db  "保留 值=0",0dh,0ah,0

a0ac0_31	db  "支持修正计数屏敝,修正函数计数“i”就是1,(首个计数索引开始为0)逻辑加计数",0dh,0ah
			db	"修正计数支持FxCtr[i]_is_supported:=ECX[i]||(EDX[4:0]>i)",0dh,0ah,0

a0ad0_4		db  "从0配置修正函数加强计数开始数(如有版本ID)",0dh,0ah,0
a0ad5_12	db  "修正函数的字节宽加强计数",0dh,0ah,0
a0ad13_14	db  "保留 值=0",0dh,0ah,0
a0ad15		db  "任意线程描述",0dh,0ah,0
a0ad16_31	db  "保留 值=0",0dh,0ah,0

; 注意:
; CPUID 功能函数 1fh 支持 0bh 功能函数,Intel 在使用0bh功能函数前首先检查存在的1fh功能函数 
; 功能函数 0bh 输出一些初始值在ECX
; 输入ECX值 EDX 输出
; 输入ECX[0:7]等于输出ECX[0:7]的值
; 子功能索引0是SMT级别 高级别进入点高于下级
; 在子级别中返回级别类型不可用,ECX[8:15]为0时,EAX,EBX返回0
; 如果输入值在ECX返回不可用级别类型,ECX[8:15]为0时,ECX>n 其它输入值也会在ECX[15:8]返回0
;
;级别类型值 
;0:不可用
;1:SMT
;2:Core
;3-255:保留
;软件不用 EBX[0:15] 由系统的处理器支持,仅显示
;逻辑处理器可用到 BIOS/OS/应用 EBX[0:15]可能在软件和硬件设置里有不同的值

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    扩展技术联合函数
;    EAX=0BH CPUID  信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a0ba0_4		db  "在x2APIC ID右移的位数,所有的逻辑处理器共享当前级别和下一级别相同",0dh,0ah,0
a0ba5_31	db  "保留",0dh,0ah,0

a0bb0_15	db  "逻辑处理器在这级别类型上的数,这数由Intel系统处理",0dh,0ah,0
a0bb16_31	db  "保留",0dh,0ah,0

a0bc0_7		db  "级别数,输入值进ECX",0dh,0ah,0
a0bc8_15	db  "级别类型(软件将用这段EAX[0:4]到系统处理",0dh,0ah,0
a0bc16_31	db  "保留",0dh,0ah,0

a0bd0_31	db  "x2APIC ID 的当前逻辑处理",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    处理器扩展结构子功能函数
;    EAX=0DH CPUID ECX=0 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a0da0_31	db  " ",0dh,0ah,0
a0da0		db  "x87 状态",0dh,0ah,0
a0da1		db  "SSE 状态",0dh,0ah,0
a0da2		db  "AVX 状态",0dh,0ah,0
a0da3_4		db  "MPX 状态",0dh,0ah,0
a0da5_7		db  "AVX-512 状态",0dh,0ah,0
a0da8		db  "使用 IA32_XSS",0dh,0ah,0
a0da9		db  "PKRU 状态",0dh,0ah,0
a0da10_12	db  "保留",0dh,0ah,0
a0da13		db  "使用 IA32_XSS",0dh,0ah,0
a0da14_15	db  "保留",0dh,0ah,0
a0da16		db  "使用 IA32_XSS",0dh,0ah,0
a0da17_31	db  "保留",0dh,0ah,0

a0db0_31	db  "最大尺寸: %X  H (字节,从XSAVE/XRSTOR 保存的区域开始",0dh,0ah
			db  "正确打开XCR0特性,可能不同的一些ECX特性会结束,XCRO保存区不被开启",0dh,0ah,0

a0dc0_31	db  "最大尺寸: %X  H (字节,从XSAVE/XRSTOR 保存的区域开始",0dh,0ah
			db  "正确打开XCR0特性,所有的处理器特性支持,所有段值在XCRO",0dh,0ah,0

a0dd0_31	db  "报告这支持,在XCR0为32位,XCRO[n+32]能设为1,仅EDX[n]设1时.",0dh,0ah,0


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    处理器扩展结构子功能函数
;    EAX=0DH CPUID ECX=1 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;CPU 级别类型
letype		db "	处理器级别类型私有信息:",0dh,0ah,0h
letype1		db  "		0:功能不可用",0dh,0ah,0h
letype2		db  "		1:表面贴",0dh,0ah,0h
letype3		db  "		2:核心",0dh,0ah,0h
;letype4_	db  "		3-255:保留",0dh,0ah,0h

;新增类型
letype4		db	"		3:模组",0dh,0ah,0h
letype5		db  "		4:并程",0dh,0ah,0h
letype6		db	"		5:死程",0dh,0ah,0h
letype7		db  "		6-255:保留",0dh,0ah,0h

Bd00		db  "	传统的x87",0dh,0ah,0h
Bd01		db  "	128比特位SSE",0dh,0ah,0h
Bd02		db  "	256比特位AVX",0dh,0ah,0h
Bd04		db  "	MPX结构",0dh,0ah,0h
Bd07		db  "	AVX-512结构",0dh,0ah,0h
Bd08		db  "	使用IA32_XSS",0dh,0ah,0h
Bd09		db  "	PKRU结构",0dh,0ah,0h
Bd12		db  "	保留",0dh,0ah,0h
Bd14		db  "	使用IA32_XSS",0dh,0ah,0h
Bd15		db  "	保留",0dh,0ah,0h
Bd16		db  "	使用IA32_XSS",0dh,0ah,0h
Bd17		db  "	XTILECFG",0dh,0ah,0
Bd18		db  "	XTILEDATA",0dh,0ah,0
Bd31		db  "	保留",0dh,0ah,0h

a0d1a00		db  "	XSAVEOPT可用",0dh,0ah,0
a0d1a01		db  "	如果设置支持XRSTOR和XSAVEC的压缩形式",0dh,0ah,0
a0d1a02		db  "	如果设置当ECX=1时支持XGETBV",0dh,0ah,0
a0d1a03		db  "	如果设置支持XSAVES/SRSTORS和IA32_XSS",0dh,0ah,0
a0d1a04		db  "	如果设置支持扩展特性关闭(XFD)",0dh,0ah,0
a0d1a4_31	db  "	保留",0dh,0ah,0

a0d1b0_31	db  "	XSAVE 区域的尺寸,所有状态被XCR0|IA32_XSS开启",0dh,0ah,0

a0d1c0_7	db  "	使用XCR0",0dh,0ah,0
a0d1c08		db  "	PT状态",0dh,0ah,0
a0d1c09		db  "	使用XCR0",0dh,0ah,0
a0d1c10		db  "	保留",0dh,0ah,0
a0d1c11		db  "	CET用户状态",0dh,0ah,0
a0d1c12		db  "	CET超级用户状态",0dh,0ah,0
a0d1c13		db  "	HDC状态",0dh,0ah,0
a0d1c14		db  "	UINTR状态",0dh,0ah,0
a0d1c15		db  "	保留",0dh,0ah,0
a0d1c16		db  "	HWP状态",0dh,0ah,0
a0d1c17_31	db  "	保留",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;     处理器扩展结构子功能函数
;    EAX=0DH CPUID ECX=n n>1 信息 
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
a0dna0_31	db "指定的EBX字节尺寸,保存区为扩展状态特性区,可用的子功能函数索引n"
a0dnb0_31	db "开始段字节扩展状态保存在开始的XSAVE/XRSTOR区,",0dh,0ah
			db "中断子功能函数索引没有图值到注册XCR0的值",0dh,0ah,0
a0dnc0		db "n位设置,在IA32_XSS MSR支持,如果n插入XCR0支持,它将清除",0dh,0ah,0
a0dnc1		db "设置后,XSAVE域使用压缩格式,扩展状态地址在下64字节",0dh,0ah,0
a0dnc2_31	db "保留",0dh,0ah,0
a0dnd		db "如是子功能函数索引,返回0,n不可用,其它保留",0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    EAX=12H CPUID 信息
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

b12c0eax00	db  "	如果设置,SGX1支持,表示Intel SGX支持SGX1函数的集合",0dh,0ah,0
b12c0eax01	db  "	如果设置,SGX2支持,表示Intel SGX支持SGX2函数的集合",0dh,0ah,0
b12c0eax04	db  "	保留",0dh,0ah,0
b12c0eax05	db  "	如果设置,表示Intel SGX支持ENCLV指令级别 EINCVIRTCHILD,EDECVIRTCHILD和ESETCONTEXT",0dh,0ah,0
b12c0eax06	db  "	如果设置,表示Intel SGX支持ENCLV指令级别 ETRACKC,ERDINFO,ELDBC和ELDUC",0dh,0ah,0
b12c0eax31	db  "	保留",0dh,0ah,0

b12c0ebx	db  "	MISCSELECT,支持的扩展Intel SGX功能的位向量",0dh,0ah,0
b12c1		db  "	报告软件可以用ECREATE设置的SECS.ATTRIBUTES %b %b %b %b 的有效位",0dh,0ah,0

[section .text]
start:
	clre
	mov eax,0h
	cpuid
	call c0proc

c01:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,01h
	cpuid
	call c1proc	

c02:
	clre
    lea eax,afg
    push eax
    call printf
    pop eax

	clre
	mov eax,02h
	cpuid
	call c2proc

c03:
	clre
	mov eax,03h
	cpuid
	call c3proc

c04:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,04h
	cpuid
	call c4proc

c05:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,05h
	cpuid
	call c5proc

c06:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,06h
	cpuid
	call c6proc

c07:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,07h
	mov ecx,00h
	cpuid
	call c7proc
	
	clre
	mov eax,07h
	mov ecx,01h
	cpuid	
	call c7proc1
	
	clre
	mov eax,07h
	mov ecx,01h
	cpuid
	call c7proc2
	
;新的函数增加了ecx>=2模块

c09:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,09h
	cpuid
	call c9proc

c0a:	
	clre
	mov eax,0ah
	cpuid
	call c0aproc

c0b:	
	clre
	mov eax,0bh
	cpuid
	call c0bproc

c0d:	
	clre
	mov eax,0dh
	cpuid
	call c0dproc
	
;新子函数	
	clre
	mov eax,0bh
	mov ecx,01h
	cpuid
	call c0d1proc
	
	clre
	mov eax,0bh
	mov ecx,02h
	cpuid
	call c0d2proc
		
;新子函数增加 ecx>1	

c0f:	
	clre
	mov eax,0fh
	mov ecx,0h
	cpuid
	call c0fproc

	clre
	mov eax,0fh
	mov ecx,01h
	cpuid
	call c0f1proc
	
c10:	
	clre
	mov eax,10h
	mov ecx,0h
	cpuid
	call c10proc

	clre
	mov eax,10h
	mov ecx,1h
	cpuid
	call c101proc

	clre
	mov eax,10h
	mov ecx,2h
	cpuid
	call c102proc

	clre
	mov eax,10h
	mov ecx,3h
	cpuid
	call c103proc

c12:	
	clre
	mov eax,12h
	mov ecx,0h
	cpuid
	call c12proc

	clre
	mov eax,12h
	mov ecx,1h
	cpuid
	call c121proc

	clre
	mov eax,12h
	mov ecx,2h
	cpuid
	call c122proc

c14:	
	clre
	mov eax,14h
	mov ecx,0h
	cpuid
	call c14proc

	clre
	mov eax,14h
	mov ecx,1h
	cpuid
	call c141proc

c15:	
	clre
	mov eax,15h
	cpuid
	call c15proc

c16:	
	clre
	mov eax,16h
	mov ecx,0h
	cpuid
	call c16proc

c17:	
	clre
	mov eax,17h
	mov ecx,0h
	cpuid
	call c17proc
;新增
	clre
	mov eax,17h
	mov ecx,1h
	cpuid
	call c171proc
	
	clre
	mov eax,17h
	mov ecx,2h
	cpuid
	call c172proc
	
	clre
	mov eax,17h
	mov ecx,3h
	cpuid
	call c173proc
	
;新增 ECX > MaxSOCID_Index

c18:	
	clre
	mov eax,18h
	mov ecx,0h
	cpuid
	call c18proc
	
;新增 ECX>=1
	clre
	mov eax,18h
	mov ecx,1h
	cpuid
	call c181proc
	
;新增
;.....................
c19:
	clre
	mov eax,19h
	cpuid
	call c19proc

c1a:
	clre
	mov eax,1ah
	mov ecx,0h
	cpuid
	call c1aproc

;.....................
c1b:
	clre
	mov eax,1bh
	mov ecx,0h
	cpuid
	call c1bproc
; ECX >=0

c1d:
	clre
	mov eax,1dh
	mov ecx,0h
	cpuid
	call c1dproc

;新....................	
	clre
	mov eax,1dh
	mov ecx,1h
	cpuid
	call c1d1proc
;......................

c1e:
	clre
	mov eax,1eh
	mov ecx,0h
	cpuid
	call c1eproc

c1f:
	clre
	mov eax,1fh
	cpuid
	call c1fproc

c20:
	clre
	mov eax,20h
	mov ecx,0h
	cpuid
	call c20proc

c8000:
	clre
	lea eax,afg
    push eax
    call printf
    pop eax
    
	clre
	mov eax,80000000h
	cpuid
	call c8000proc

c8001:	
	clre
	mov eax,80000001h
	cpuid
	call c8001proc

c8002:	
	clre
	mov eax,80000002h
	cpuid
	call c8002proc

c8003:
	clre
	mov eax,80000003h
	cpuid
	call c8003proc

c8004:	
	clre
	mov eax,80000004h
	cpuid
	call c8004proc

c8005:	
	clre
	mov eax,80000005h
	cpuid
	call c8005proc

c8006:	
	clre
	mov eax,80000006h
	cpuid
	call c8006proc

c8007:	
	clre
	mov eax,80000007h
	cpuid
	call c8007proc

c8008:	
	clre
	mov eax,80000008h
	cpuid
	call c8008proc

chelp:
	call chelpproc

ccmd:
;>>>>>>>>>>>>>>>>>>>
;选择eax,ecx
	mov ecx,1
	mov eax,1
;<<<<<<<<<<<<<<<<<<<

	push ecx
	push eax
	lea eax,formeax
	push eax
	call printf
	pop eax
	pop eax
	pop ecx
	cpuid 

	call ccmdproc

exitP:	
	push 0
	call ExitProcess
	ret

c0proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form0
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	push edx
	push ecx
	push ebx
	push eax
	lea eax,cpueax
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	mov [text1],eax
	cmp eax,02h
	jz c0_1
	cmp eax,05h
	jz c0_2
	cmp eax,06h
	jz c0_3
	cmp eax,0ah
	jz c0_4
	cmp eax,0dh
	jz c0_5
c0_1:	
	mov eax,cpu1
	push eax
	jmp c0_6
c0_2:
	mov eax,cpu3
	push eax
	jmp c0_6
c0_3:	
	mov eax,cpu6
	push eax
	jmp c0_6	
c0_4:
	mov eax,cpu7
	push eax
	jmp c0_6
c0_5:
	mov eax,cpu10
	push eax
	jmp c0_6

c0_6:
	mov [text1+4],ebx
	mov [text1+8],edx
	mov [text1+12],ecx
	mov eax,0d0ah
	mov [text1+16],eax
	lea eax,ds:[text1+4]
	push eax
;	call printf
	call StdOut
; 隐藏了一个参 eax的值 在跳 c0_6之前
	call printf
;	call StdOut
	pop eax
	ret 

;笔记:此处花了不少时间
; 首先是 masm32.lib 和 nasm 不兼容
; masm32.lib 的库 链接时 在函数名前有一个"_"
;  Stdout ("string...")这个函数 还调用了 StrLen
;  Printf 函数来自 msvcrt.lib
; 第二是动了push 不动不行,因为c规则
; 第三是Golink 链接器 静态链接库最好放在动态库前面
; 第四是不会用 rep loopz
; 还有一些不用心的错误。手残党的"病"--打字调试有瘾
; 一直纠结在加1减1,下划线,无下划线,大写,小写
; 切记-------<九阴真经 上卷 第三篇 缩骨功>
; 因为是外练,可能<九阴真经> 完本是手抄本,有误
; 轻度走火入魔带练<蛤蟆功>因为是从欧阳克那里偷师
; 所以一直都有点偏,不敢见真正的西边武师太斗。
; 还有一个技巧,后来发展成为<倚天屠龙记>中的最高功夫
; 卷名 <乾坤大挪移> 共有十二级 进阶 第四级

; EAX=01H 返回
; EAX CPU 版本类型,家族,模式,单步ID
; EBX 0-7   字节,索引
;     8-15  字节,CLFUSH 行尺寸(值 8 = 1字节缓存行尺寸)
;     16-23 字节,物理包内的逻辑处理地址ID的最大数
;     24-31 字节,初始化APIC ID
; ECX  SSE3 SSE3扩展功能
;	   PCLMULQDQ 多比较
;      DTES64  64位DS区域
;      MONITOR 支持MONITOR/MWAIT
;      DS-CPL  CPL 调试记录
;      VMX   虚拟机扩展
;      SMX   保护模式扩展
;      EST   加强型Intel SeedStep 技术
;      TM2   终端监控2
;      SSSE3 SSSE3扩展
;      CNXT-ID L1目录ID
;      SDBG  调试
;      FMA  多存地址
;      CMPXCHG16B 
;      xTPR 升级控制
;      [第16位保留]
;      PDCM Perf/调试MSR
;      PCID 处理器定义
;      DCA  高速缓存 目录访问
;      SSE4_1
;      SSE4_2
;      x2APIC
;      MOVBE
;      POPCNT
;      TSC-Deadline 支持 APIC计时器在TSC deadline值上的 one-shot 操作
;      AES AESIN 扩展指令
;      XSAVE 支持 XSAVE/XRSTOR 外部处理指令 XSETBV/XGETBV和XCR0指令
;      OSXSAVE 支持CR4.0SXSAVE[bit 8]开启 用XSETBV/XGETBV访问XCR0管理XSAVE/XRSTOR
;      AVX
;      F16C
;      RDRAND
;      val = 0
; EDX  FPU-x87 FPU浮点运算器
;      VME     加强虚8086模式 包含CR4.VME控制特性,CR4.PVI为TSS保护模式虚拟中断,软中断除外,软件图片和EFLAGS.VIF,EFLAGS.VIP标志
;      DE      调试扩展 CR4.DE 控制I/O断点,选择访问DR4和DR5
;      PSE     页面扩展 大页面4M支持,包含CR4.PSE控制特性 选择保留CR3,PDEs,PTEs
;      TSC     时间计数 RDTSC 指令支持 包含CR4.TSD私有控制
;      MSR     RDMSR 和 WRMSR支持
;      PAE     物理地址扩展 32位 2M扩展4M
;      MCE     机器异常检查
;      CX8     CMPXCHG8B
;      APIC    APIC芯片 处理器的高级中断控制,物理地址环FFFE0000h到FFFE0FFFh
;      [第10位保留]
;      SEP     SYSENTER/SYSEXIT
;      MTRR    内存环寄存器组
;      PGE     PTE全局位 和 TLB有关
;      MCA     机器ARC检查  MCG_CAP特性
;      CMOV    移动比较指令 CPUID.FPU支持 FCOMI/FCMOV支持
;      PAT     页面属性表 和 MTRRs有关
;      PSE-36  页面尺寸扩展 4M页面地址,物理内存4G以上 13-20位页面目录进入,可以升到 40位
;      PSN     处理器序列数
;      CLFSH   CLFSH指令 CLFLUSH指令
;      [第20位保留]
;      DS      调试记录 和 BTS PEBS有关
;      ACPI    终端监示和时钟控制
;      MMX     MMX技术
;      FXSR    FXSAVE/FXRSTOR
;      SSE     SSE扩展
;      SSE2    
;      SS      Self Snoop
;      HTT     多线程
;      TM      终端监示
;      [第30位保留]
;      PBE     Pend. Brk.EN 使用FERR#/PBE#在STPCLK#内  IA32_MISC_ENABLE MSR开启
c1proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	push edx ;DX的值,外层
	
	push eax
	and eax,11000000000000b
	shl eax,18
	shr eax,12

	cmp al,00b
	jz  c1_0
	cmp al,01b
	jz  c1_1
	cmp al,10b
	jz  c1_2
	cmp al,11b
	jz  c1_3
	
	jmp  c1_4
c1_0:
	lea eax,cput1
	push eax
	jmp c1_4
c1_1:
	lea eax,cput2
	push eax
	jmp c1_4
c1_2:
	mov eax,cput3
	push eax
	jmp c1_4
c1_3:
	lea eax,cput4
	push eax
	jmp c1_4
c1_4:
	lea eax,a01text
	push eax
	call printf
	pop eax
	pop eax

	clc	
	
	pop eax
	
	push eax
	shl eax,28
	shr eax,28
	mov [Stepping_ID],ax
	pop eax

	push eax
	shl eax,24
	shr eax,28
	mov [Model_ID],ax
	pop eax
	
	push eax
	shl eax,20
	shr eax,28
	mov [Famlly_ID],ax
	pop eax
	
	push eax
	shl eax,16
	shr eax,28
	mov [Extended_Model_ID],ax
	pop eax
	
	push eax
	shl eax,12
	shr eax,24
	mov [Extended_Famlly_ID],ax
	pop eax
	
	and eax,0f00h
	cmp eax,0f00h
	jz c1_sub
	
	and  eax,0600h
	cmp eax,0600h

	jz c1_sub
	
	jmp c1_bid

c1_sub:
	xor eax,eax
	mov ax,[Stepping_ID]
	push eax
	mov ax,[Model_ID]
	push eax	
	mov ax,[Famlly_ID]
	push eax
	mov ax,[Extended_Model_ID]
	push eax	
	mov ax,[Extended_Famlly_ID]
	push eax
	lea eax,a01tex1
	push eax
	call printf
	pop eax
	pop eax
	pop eax
	pop eax
	pop eax
	pop eax
	
	clc
	
	jmp c1bx
	
c1_bid:
	xor eax,eax
	mov ax,[Stepping_ID]
	push eax
	mov ax,[Model_ID]
	push eax
	mov ax,[Famlly_ID]
	push eax
	lea eax,a01tex3
	push eax
	call printf
	pop eax
	pop eax
	pop eax
	pop eax
	
	clc
	
	jmp c1bx
	
;---------------------------------------
; 多余代码段,索引查找 CPU 类型
; 代码有效,没使用
;---------------------------------------
c1bx1:
	pusha
	xor eax,eax
	mov al,bl
	xor ebx,ebx
	mov bl,4
	mul bl
	
	mov ebx,eax
	mov eax,[ebx+cpubaddr]
	push eax
	call printf
	pop eax
	popa
; 代码结束
;----------------------------------------

c1bx:
	push ebx
	and ebx,0ffh
	push ebx
	lea eax,a01b0_7
	push eax
	call printf 
	pop eax
	pop ebx
	pop ebx

	push ebx
	and ebx,0ff00h
	shr ebx,8
	push ebx
	lea eax,a01b8_15
	push eax
	call printf 
	pop eax
	pop ebx
	pop ebx

	push ebx
	and ebx,0ff0000h
	shr ebx,16
	push ebx
	lea eax,a01b16_23
	push eax
	call printf 
	pop eax
	pop ebx
	pop ebx

	push ebx
	and ebx,0ff000000h
	shr ebx,24
	push ebx
	lea eax,a01b24_31
	push eax
	call printf 
	pop eax
	pop ebx
	pop ebx
	
c1p_1:
	shr ecx,1
	jc  c1_5
c1p_2:
	shr ecx,1
	jc  c1_6
c1p_3:
	shr ecx,1
	jc  c1_7
c1p_4:
	shr ecx,1
	jc  c1_8
c1p_5:
	shr ecx,1
	jc  c1_9
c1p_6:
	shr ecx,1
	jc  c1_10
c1p_7:
	shr ecx,1
	jc  c1_11
c1p_8:
	shr ecx,1
	jc  c1_12
c1p_9:
	shr ecx,1
	jc  c1_13
c1p_10:
	shr ecx,1
	jc  c1_14
c1p_11:
	shr ecx,1
	jc  c1_15
c1p_12:
	shr ecx,1
	jc  c1_16
c1p_13:
	shr ecx,1
	jc  c1_17
c1p_14:
	shr ecx,1
	jc  c1_18
c1p_15:
	shr ecx,1
	jc  c1_19
c1p_16:
	shr ecx,1
	jc  c1_20
c1p_17:
	shr ecx,1
	jc  c1_21
c1p_18:
	shr ecx,1
	jc  c1_22
c1p_19:
	shr ecx,1
	jc  c1_23
c1p_20:
	shr ecx,1
	jc  c1_24
c1p_21:
	shr ecx,1
	jc  c1_25
c1p_22:
	shr ecx,1
	jc  c1_26
c1p_23:
	shr ecx,1
	jc  c1_27
c1p_24:
	shr ecx,1
	jc  c1_28
c1p_25:
	shr ecx,1
	jc  c1_29
c1p_26:
	shr ecx,1
	jc  c1_30
c1p_27:
	shr ecx,1
	jc  c1_31
c1p_28:
	shr ecx,1
	jc  c1_32
c1p_29:
	shr ecx,1
	jc  c1_33
c1p_30:
	shr ecx,1
	jc  c1_34
c1p_31:
	shr ecx,1
	jc  c1_35
c1p_32:
; 最后一位值是0
	clc
	jmp c1d_1
c1_5:			;1
	push ecx
	mov eax,sse3
	push eax
	call printf
	pop eax		
	clc
	pop ecx
	jmp c1p_2
c1_6:			;2
	push ecx
	mov eax,pclm1
	push eax
	call printf
	pop eax	
	clc
	pop ecx
	jmp c1p_3
c1_7:			;3
	push ecx	
	mov eax,dtes64
	push eax
	call printf
	pop eax	
	clc
	pop ecx
	jmp c1p_4
c1_8:			;4
	push ecx
    mov eax,monit1
    call c7_p
    pop ecx
    jmp c1p_5
c1_9:			;5
	push ecx
    mov eax,ds_c
    call c7_p
    pop ecx
    jmp c1p_6
c1_10:			;6
	push ecx    
    mov eax,vmx
    call c7_p
    pop ecx
    jmp c1p_7
c1_11:			;7
	push ecx
    mov eax,smx
    call c7_p
    pop ecx
    jmp c1p_8
c1_12:			;8
	push ecx
    mov eax,est
    call c7_p
    pop ecx
    jmp c1p_9
c1_13:			;9
	push ecx
    mov eax,tm2
    call c7_p
    pop ecx
    jmp c1p_10
c1_14:			;10
	push ecx
    mov eax,ssse3
    call c7_p
    pop ecx
    jmp c1p_11
c1_15:			;11
	push ecx
    mov eax,cnxt_id
    call c7_p
    pop ecx
    jmp c1p_12
c1_16:			;12
	push ecx
    mov eax,sdbg
    call c7_p
    pop ecx
    jmp c1p_13
c1_17:			;13
	push ecx
    mov eax,fma
    call c7_p
    pop ecx
    jmp c1p_14
c1_18:			;14
	push ecx
    mov eax,cmpx1
    call c7_p
    pop ecx
    jmp c1p_15
c1_19:			;15
	push ecx
    mov eax,xtpr
    call c7_p
    pop ecx
    jmp c1p_16   
c1_20:			;16
;      [第16位保留]
	jmp c1p_17
c1_21:			;17
	push ecx
    mov eax,pdcm
    call c7_p
    pop ecx
    jmp c1p_18
c1_22:			;18
	push ecx
    mov eax,pcid
    call c7_p
    pop ecx
    jmp c1p_19
c1_23:			;19
	push ecx
    mov eax,dca
    call c7_p
    pop ecx
    jmp c1p_20
c1_24:			;20
	push ecx
    mov eax,sse4_1
    call c7_p
    pop ecx
    jmp c1p_21
c1_25:			;21
	push ecx
    mov eax,sse4_2
    call c7_p
    pop ecx
    jmp c1p_22
c1_26:			;22
	push ecx
    mov eax,x2apic
    call c7_p
    pop ecx
    jmp c1p_23
c1_27:			;23
	push ecx
    mov eax,movb1
    call c7_p
    pop ecx
    jmp c1p_24
c1_28:			;24
	push ecx
    mov eax,popc1
    call c7_p
    pop ecx
    jmp c1p_25
c1_29:			;25
	push ecx
    mov eax,tsc_d
    call c7_p
    pop ecx
    jmp c1p_26
c1_30:			;26
	push ecx
    mov eax,aes
    call c7_p
    pop ecx
    jmp c1p_27
c1_31:			;27
	push ecx
    mov eax,xsav1
    call c7_p
    pop ecx
    jmp c1p_28
c1_32:			;28
	push ecx
    mov eax,osxsave
    call c7_p
    pop ecx
    jmp c1p_29
c1_33:			;29
	push ecx
    mov eax,avx
    call c7_p
    pop ecx
    jmp c1p_30
c1_34:			;30
	push ecx
    mov eax,f16c
    call c7_p
    pop ecx
    jmp c1p_31
c1_35:			;31
	push ecx
    mov eax,rdran1
    call c7_p
    pop ecx
	jmp c1d_1
	
; END ECX   ====    BEGIN EDX
c1d_1:
	pop edx
	shr edx,1
	jc c1_36
c1d_2:
	shr edx,1
	jc c1_37
c1d_3:	
	shr edx,1
	jc c1_38
c1d_4:	
	shr edx,1
	jc c1_39
c1d_5:	
	shr edx,1	
	jc c1_40
c1d_6:	
	shr edx,1	
	jc c1_41
c1d_7:	
	shr edx,1	
	jc c1_42
c1d_8:	
	shr edx,1	
	jc c1_43
c1d_9:	
	shr edx,1	
	jc c1_44
c1d_10:	
	shr edx,1	
	jc c1_45
c1d_11:	
	shr edx,1	
	jc c1_46
c1d_12:	
	shr edx,1	
	jc c1_47
c1d_13:	
	shr edx,1	
	jc c1_48
c1d_14:	
	shr edx,1	
	jc c1_49
c1d_15:	
	shr edx,1	
	jc c1_50
c1d_16:	
	shr edx,1	
	jc c1_51
c1d_17:	
	shr edx,1	
	jc c1_52
c1d_18:	
	shr edx,1	
	jc c1_53
c1d_19:	
	shr edx,1	
	jc c1_54
c1d_20:	
	shr edx,1	
	jc c1_55
c1d_21:	
	shr edx,1	
	jc c1_56
c1d_22:	
	shr edx,1	
	jc c1_57
c1d_23:	
	shr edx,1	
	jc c1_58
c1d_24:	
	shr edx,1	
	jc c1_59
c1d_25:	
	shr edx,1	
	jc c1_60
c1d_26:	
	shr edx,1	
	jc c1_61
c1d_27:	
	shr edx,1	
	jc c1_62
c1d_28:	
	shr edx,1	
	jc c1_63
c1d_29:	
	shr edx,1	
	jc c1_64
c1d_30:	
	shr edx,1	
	jc c1_65
c1d_31:	
	shr edx,1	
	jc c1_66
c1d_32:	
	shr edx,1	
	jc c1_67
	jmp c1_e

; EDX =======================
c1_36:
	push edx
	mov eax,fpu
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_2
c1_37:
	push edx
	mov eax,vme
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_3
c1_38:
	push edx
	mov eax,de
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_4
c1_39:
	push edx
	mov eax,pse
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_5
c1_40:
	push edx
	mov eax,tsc
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_6
c1_41:
	push edx
	mov eax,msr
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_7
c1_42:
	push edx
	mov eax,pae
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_8
c1_43:
	push edx
	mov eax,mce
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_9
c1_44:
	push edx
	mov eax,cx8
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_10
c1_45:
	push edx
	mov eax,apic
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_11
c1_46:
;[第10位保留]
	jmp c1d_12
c1_47:
	push edx
	mov eax,sep
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_13
c1_48:
	push edx
	mov eax,mtrr
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_14
c1_49:
	push edx
	mov eax,pge
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_15
c1_50:
	push edx
	mov eax,mca
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_16
c1_51:
	push edx
	mov eax,cmov1
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_17
c1_52:
	push edx
	mov eax,pat
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_18
c1_53:
	push edx
	mov eax,pse_36
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_19
c1_54:
	push edx
	mov eax,psn
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_20
c1_55:
	push edx
	mov eax,clfsh
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_21
c1_56:
;[第20位保留]
	jmp c1d_22
c1_57:
	push edx
	mov eax,ds1
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_23
c1_58:
	push edx
	mov eax,acpi
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_24
c1_59:
	push edx
	mov eax,mmx
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_25
c1_60:
	push edx
	mov eax,fxsr
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_26
c1_61:
	push edx
	mov eax,sse
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_27
c1_62:
	push edx
	mov eax,sse2
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_28
c1_63:
	push edx
	mov eax,ss1
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_29
c1_64:
	push edx
	mov eax,htt
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_30
c1_65:
	push edx
	mov eax,tm
	push eax
	call printf
	pop eax	
	pop edx
	clc
	jmp c1d_31
c1_66:
;[第30位保留]
	jmp c1d_32
c1_67:
	push edx
	mov eax,pbe
	push eax
	call printf
	pop eax	
	pop edx
	clc
c1_e:
	ret
	
; EAX=02H 返回
;	Cache缓存和TLB信息
;
;
c2proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form2
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	cmp al,01h
	jz c2p_1
	jmp c2p_e	
c2p_1:
	pusha
	test eax,eax
	jnz c2_2

c2_1:
	mov eax,c2_note1
	jmp c2_3
c2_2:
	mov eax,c2_note2
c2_3:
	push eax
	call printf
	pop eax

	mov eax,note1
	push eax
	call printf
	pop eax	
	popa
	
	pusha 
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form
	push eax
	call printf
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	popa
	push eax
	push edx
	push ecx
	push ebx
	
	xor ecx,ecx
	mov ecx,3
	shr eax,8
	call c2_4
	
	pop ebx
	mov eax,ebx
	xor ecx,ecx
	mov ecx,4
	call c2_4
	
	pop ecx
	mov eax,ecx
	xor ecx,ecx
	mov ecx,4
	call c2_4
		
	pop edx
	mov eax,edx
	xor ecx,ecx
	mov ecx,4
	call c2_4

	pop eax

	ret
	
c2_4:	
	push eax
	push ecx	
	cmp al,00h
	jz c2_00
	cmp al,01h
	jz c2_01
	cmp al,02h
	jz c2_02
	cmp al,03h
	jz c2_03
	cmp al,04h
	jz c2_04
	cmp al,05h
	jz c2_05
	cmp al,06h
	jz c2_06
	cmp al,08h
	jz c2_08
	cmp al,09h
	jz c2_09
	cmp al,0ah
	jz c2_0a
	cmp al,0bh
	jz c2_0b
	cmp al,0ch
	jz c2_0c
	cmp al,0dh
	jz c2_0d
	cmp al,21h
	jz c2_21	
	cmp al,22h
	jz c2_22
	cmp al,23h
	jz c2_23
	cmp al,25h
	jz c2_25
	cmp al,29h
	jz c2_29
	cmp al,2ch
	jz c2_2c
	cmp al,30h
	jz c2_30
	cmp al,3ah
	jz c2_3a
	cmp al,3bh
	jz c2_3b	
	cmp al,3ch
	jz c2_3c	
	cmp al,3dh
	jz c2_3d	
	cmp al,3eh
	jz c2_3e
	cmp al,40h	
	jz c2_40
	cmp al,41h
	jz c2_41
	cmp al,42h
	jz c2_42
	cmp al,43h
	jz c2_43
	cmp al,44h
	jz c2_44
	cmp al,45h
	jz c2_45
	cmp al,46h
	jz c2_46
	cmp al,47h
	jz c2_47
	cmp al,49h
	jz c2_49
	cmp al,4ah
	jz c2_4a
	cmp al,4bh
	jz c2_4b
	cmp al,4ch
	jz c2_4c
	cmp al,4dh
	jz c2_4d
	cmp al,4eh
	jz c2_4e
	cmp al,50h
	jz c2_50
	cmp al,51h
	jz c2_51
	cmp al,52h
	jz c2_52
	cmp al,56h
	jz c2_56
	cmp al,57h
	jz c2_57
	cmp al,5bh
	jz c2_5b
	cmp al,5ch
	jz c2_5c
	cmp al,5dh
	jz c2_5d
	cmp al,60h
	jz c2_60
	cmp al,66h
	jz c2_66
	cmp al,67h
	jz c2_67
	cmp al,68h
	jz c2_68
	cmp al,70h
	jz c2_70
	cmp al,71h
	jz c2_71
	cmp al,72h
	jz c2_72
	cmp al,78h
	jz c2_78
	cmp al,79h
	jz c2_79
	cmp al,7ah
	jz c2_7a
	cmp al,7bh
	jz c2_7b
	cmp al,7ch
	jz c2_7c
	cmp al,7dh
	jz c2_7d
	cmp al,7fh
	jz c2_7f
	cmp al,82h
	jz c2_82
	cmp al,83h
	jz c2_83
	cmp al,84h
	jz c2_84
	cmp al,85h
	jz c2_85
	cmp al,87h
	jz c2_87
	cmp al,0b0h
	jz c2_b0
	cmp al,0b1h
	jz c2_b1
	cmp al,0b2h
	jz c2_b2	
	cmp al,0b3h
	jz c2_b3
	cmp al,0b4h
	jz c2_b4
	cmp al,0cah
	jz c2_ca
	cmp al,0d0h
	jz c2_d0
	cmp al,0d1h
	jz c2_d1
	cmp al,0d2h
	jz c2_d2
	cmp al,0d6h
	jz c2_d6
	cmp al,0d7h
	jz c2_d7
	cmp al,0d8h
	jz c2_d8
	cmp al,0dch
	jz c2_dc
	cmp al,0ddh
	jz c2_dd
	cmp al,0deh
	jz c2_de
	cmp al,0e2h
	jz c2_e2
	cmp al,0e3h
	jz c2_e3
	cmp al,0e4h
	jz c2_e4
	cmp al,0f0h
	jz c2_f0
	cmp al,0f1h
	jz c2_f1

;这里可以加上字符串“信息没公开”
	cmp cx,03h
	je c2_XA
	cmp cx,02h
	je c2_XB
	cmp cx,01h
	je c2_XC
	jmp c2_L

c2_00:
	mov ebx,tlbdsr00
	call c2p
	jmp c2_L
c2_01:
	mov ebx,tlbdsr01
	call c2p
	jmp c2_L
c2_02:
	mov ebx,tlbdsr02
	call c2p
	jmp c2_L
c2_03:
	mov ebx,tlbdsr03
	call c2p
	jmp c2_L
c2_04:
	mov ebx,tlbdsr04
	call c2p
	jmp c2_L
c2_05:
	mov ebx,tlbdsr05
	call c2p
	jmp c2_L
c2_06:
	mov ebx,tlbdsr06
	call c2p
	jmp c2_L
c2_08:
	mov ebx,tlbdsr08
	call c2p
	jmp c2_L
c2_09:
	mov ebx,tlbdsr09
	call c2p
	jmp c2_L
c2_0a:
	mov ebx,tlbdsr0A
	call c2p
	jmp c2_L
c2_0b:
	mov ebx,tlbdsr0B
	call c2p
	jmp c2_L
c2_0c:
	mov ebx,tlbdsr0C
	call c2p
	jmp c2_L
c2_0d:
	mov ebx,tlbdsr0D
	call c2p
	jmp c2_L
c2_0e:
	mov ebx,tlbdsr0E
	call c2p
	jmp c2_L
c2_1d:
	mov ebx,tlbdsr1D
	call c2p
	jmp c2_L
c2_21:
	mov ebx,tlbdsr21
	call c2p
	jmp c2_L
c2_22:
	mov ebx,tlbdsr22
	call c2p
	jmp c2_L
c2_23:
	mov ebx,tlbdsr23
	call c2p
	jmp c2_L
c2_24:
	mov ebx,tlbdsr24
	call c2p
	jmp c2_L
c2_25:
	mov ebx,tlbdsr25
	call c2p
	jmp c2_L
c2_29:
	mov ebx,tlbdsr29
	call c2p
	jmp c2_L
c2_2c:
	mov ebx,tlbdsr2C
	call c2p
	jmp c2_L
c2_30:
	mov ebx,tlbdsr30
	call c2p
	jmp c2_L
c2_3a:
	mov ebx,tlbdsr3A
	call c2p
	jmp c2_L
c2_3b:
	mov ebx,tlbdsr3B
	call c2p
	jmp c2_L
c2_3c:
	mov ebx,tlbdsr3C
	call c2p
	jmp c2_L
c2_3d:
	mov ebx,tlbdsr3D
	call c2p
	jmp c2_L	
c2_3e:
	mov ebx,tlbdsr3E
	call c2p
	jmp c2_L
c2_40:
	mov ebx,tlbdsr40
	call c2p
	jmp c2_L
c2_41:
	mov ebx,tlbdsr41
	call c2p
	jmp c2_L
c2_42:
	mov ebx,tlbdsr42
	call c2p
	jmp c2_L
c2_43:
	mov ebx,tlbdsr43
	call c2p
	jmp c2_L
c2_44:
	mov ebx,tlbdsr44
	call c2p
	jmp c2_L
c2_45:
	mov ebx,tlbdsr45
	call c2p
	jmp c2_L
c2_46:
	mov ebx,tlbdsr46
	call c2p
	jmp c2_L
c2_47:
	mov ebx,tlbdsr47
	call c2p
	jmp c2_L
c2_48:
	mov ebx,tlbdsr48
	call c2p
	jmp c2_L
c2_49:
	mov ebx,tlbdsr49
	call c2p
	jmp c2_L
c2_4a:
	mov ebx,tlbdsr4A
	call c2p
	jmp c2_L
c2_4b:
	mov ebx,tlbdsr4B
	call c2p
	jmp c2_L
c2_4c:
	mov ebx,tlbdsr4C
	call c2p
	jmp c2_L
c2_4d:
	mov ebx,tlbdsr4D
	call c2p
	jmp c2_L
c2_4e:
	mov ebx,tlbdsr4E
	call c2p
	jmp c2_L
c2_4f:
	mov ebx,tlbdsr4F
	call c2p
	jmp c2_L
c2_50:
	mov ebx,tlbdsr50
	call c2p
	jmp c2_L
c2_51:
	mov ebx,tlbdsr51
	call c2p
	jmp c2_L
c2_52:
	mov ebx,tlbdsr52
	call c2p
	jmp c2_L
c2_55:
	mov ebx,tlbdsr55
	call c2p
	jmp c2_L
c2_56:
	mov ebx,tlbdsr56
	call c2p
	jmp c2_L
c2_57:
	mov ebx,tlbdsr57
	call c2p
	jmp c2_L
c2_59:
	mov ebx,tlbdsr59
	call c2p
	jmp c2_L
c2_5a:
	mov ebx,tlbdsr5A
	call c2p
	jmp c2_L
c2_5b:
	mov ebx,tlbdsr5B
	call c2p
	jmp c2_L
c2_5c:
	mov ebx,tlbdsr5C
	call c2p
	jmp c2_L
c2_5d:
	mov ebx,tlbdsr5D
	call c2p
	jmp c2_L
c2_60:
	mov ebx,tlbdsr60
	call c2p
	jmp c2_L
c2_61:
	mov ebx,tlbdsr61
	call c2p
	jmp c2_L
c2_63:
	mov ebx,tlbdsr63
	call c2p
	jmp c2_L
c2_64:
	mov ebx,tlbdsr64
	call c2p
	jmp c2_L
c2_66:
	mov ebx,tlbdsr66
	call c2p
	jmp c2_L
c2_67:
	mov ebx,tlbdsr67
	call c2p
	jmp c2_L
c2_68:
	mov ebx,tlbdsr68
	call c2p
	jmp c2_L
c2_6a:
	mov ebx,tlbdsr6A
	call c2p
	jmp c2_L
c2_6b:
	mov ebx,tlbdsr6B
	call c2p
	jmp c2_L
c2_6c:
	mov ebx,tlbdsr6C
	call c2p
	jmp c2_L
c2_6d:
	mov ebx,tlbdsr6D
	call c2p
	jmp c2_L
c2_70:
	mov ebx,tlbdsr70
	call c2p
	jmp c2_L
c2_71:
	mov ebx,tlbdsr71
	call c2p
	jmp c2_L
c2_72:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_73:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_74:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_75:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_76:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_77:
	mov ebx,tlbdsr72
	call c2p
	jmp c2_L
c2_78:
	mov ebx,tlbdsr78
	call c2p
	jmp c2_L
c2_79:
	mov ebx,tlbdsr79
	call c2p
	jmp c2_L
c2_7a:
	mov ebx,tlbdsr7A
	call c2p
	jmp c2_L
c2_7b:
	mov ebx,tlbdsr7B
	call c2p
	jmp c2_L
c2_7c:
	mov ebx,tlbdsr7C
	call c2p
	jmp c2_L
c2_7d:
	mov ebx,tlbdsr7D
	call c2p
	jmp c2_L
c2_7f:
	mov ebx,tlbdsr7F
	call c2p
	jmp c2_L
c2_80:
	mov ebx,tlbdsr80
	call c2p
	jmp c2_L
c2_82:
	mov ebx,tlbdsr82
	call c2p
	jmp c2_L
c2_83:
	mov ebx,tlbdsr83
	call c2p
	jmp c2_L
c2_84:
	mov ebx,tlbdsr84
	call c2p
	jmp c2_L
c2_85:
	mov ebx,tlbdsr85
	call c2p
	jmp c2_L
c2_86:
	mov ebx,tlbdsr86
	call c2p
	jmp c2_L
c2_87:
	mov ebx,tlbdsr87
	call c2p
	jmp c2_L
c2_a0:
	mov ebx,tlbdsrA0
	call c2p
	jmp c2_L
c2_b0:
	mov ebx,tlbdsrB0
	call c2p
	jmp c2_L
c2_b1:
	mov ebx,tlbdsrB1
	call c2p
	jmp c2_L
c2_b2:
	mov ebx,tlbdsrB2
	call c2p
	jmp c2_L
c2_b3:
	mov ebx,tlbdsrB3
	call c2p
	jmp c2_L
c2_b4:
	mov ebx,tlbdsrB4
	call c2p
	jmp c2_L
c2_b5:
	mov ebx,tlbdsrB5
	call c2p
	jmp c2_L
c2_b6:
	mov ebx,tlbdsrB6
	call c2p
	jmp c2_L
c2_ba:
	mov ebx,tlbdsrBA
	call c2p
	jmp c2_L
c2_c0:
	mov ebx,tlbdsrC0
	call c2p
	jmp c2_L
c2_c1:
	mov ebx,tlbdsrC1
	call c2p
	jmp c2_L
c2_c2:
	mov ebx,tlbdsrC2
	call c2p
	jmp c2_L
c2_c3:
	mov ebx,tlbdsrC3
	call c2p
	jmp c2_L
c2_c4:
	mov ebx,tlbdsrC4
	call c2p
	jmp c2_L
c2_ca:
	mov ebx,tlbdsrCA
	call c2p
	jmp c2_L
c2_d0:
	mov ebx,tlbdsrD0
	call c2p
	jmp c2_L
c2_d1:
	mov ebx,tlbdsrD1
	call c2p
	jmp c2_L
c2_d2:
	mov ebx,tlbdsrD2
	call c2p
	jmp c2_L
c2_d6:
	mov ebx,tlbdsrD6
	call c2p
	jmp c2_L
c2_d7:
	mov ebx,tlbdsrD7
	call c2p
	jmp c2_L
c2_d8:
	mov ebx,tlbdsrD8
	call c2p
	jmp c2_L
c2_dc:
	mov ebx,tlbdsrDC
	call c2p
	jmp c2_L
c2_dd:
	mov ebx,tlbdsrDD
	call c2p
	jmp c2_L
c2_de:
	mov ebx,tlbdsrDE
	call c2p
	jmp c2_L
c2_e2:
	mov ebx,tlbdsrE2
	call c2p
	jmp c2_L
c2_e3:
	mov ebx,tlbdsrE3
	call c2p
	jmp c2_L
c2_e4:
	mov ebx,tlbdsrE4
	call c2p
	jmp c2_L
c2_ea:
	mov ebx,tlbdsrEA
	call c2p
	jmp c2_L
c2_eb:
	mov ebx,tlbdsrEB
	call c2p
	jmp c2_L
c2_ec:
	mov ebx,tlbdsrEC
	call c2p
	jmp c2_L
c2_f0:
	mov ebx,tlbdsrF0
	call c2p
	jmp c2_L
c2_f1:
	mov ebx,tlbdsrF1
	call c2p
	jmp c2_L
c2_fe:
	mov ebx,tlbdsrFE
	call c2p
	jmp c2_L
c2_ff:
	mov ebx,tlbdsrFF
	call c2p
	jmp c2_L
c2_XA:
	mov ebx,tlbdsrXA
	call c2p
	jmp c2_L
c2_XB:
	mov ebx,tlbdsrXB
	call c2p
	jmp c2_L
c2_XC:
	mov ebx,tlbdsrXC
	call c2p
	jmp c2_L
;******* printf 函数 ******
c2p:
	push ebx
	call printf
	pop ebx
	ret 

c2_L:
	pop ecx
	pop eax
	shr eax,8
	sub ecx,1
	jnz c2_4
	
    lea eax,afg
    push eax
    call printf
    pop eax
c2p_e:
	ret

; EAX=03H 返回
; EAX 保留
; EBX 保留
; ECX bit00-31: 96字节的序列数(可用在PIII处理器上,这值被寄存器保留)
; EDX bit32-63: 96字节的序列数(可用在PIII处理器上,这值被寄存器保留)
c3proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form3
	push eax
	call printf
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	push edx
	push ecx
	lea eax,cpusrn
	push eax
	call printf
	pop eax
	pop ecx
	pop edx
	ret
	
; EAX=04h 返回
;
; EAX bit 0-4 0=NULL缓存 1=数据缓存 2=指令缓存 3=段缓存 4-31:保留
;
c4proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form4
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

c4c1:
	clc
	shr eax,1
	jc c4p1
c4c2:
	clc
	shr eax,1
	jc c4p2
c4c3:
	clc
	shr eax,1
	jc c4p3
c4c4:
	clc
	shr eax,1
	jc c4p4
c4c5:
	clc
	push eax
	and eax,111b

	push eax
	lea eax,cachelevel
	push eax
	call printf
	pop eax
	pop eax
	
	pop eax
	
	clc
	shr eax,3
	jc c4p5

;	push eax
c4c8:
	clc
	shr eax,1
	jc c4p6
c4c9:
	clc
	shr eax,1
	jc c4p7
c4c10:
	clc
	shr eax,4
	jc c4p8
c4c11:
	clc
	shr eax,12
	jc c4p9
c4c12:
	clc
	shr eax,6
	jc c4p10

c4b1:
	jmp c4pb1
c4b2:
	jmp c4pb2
c4b3:
	jmp c4pb3
c4n1:
	jmp c4pn1	
	
c4d0:
;	and edx,1b
	jmp c4pd0
c4d10:

	jmp c4pd10
c4d1:

	jmp c4pd1
c4d2:
	and edx,100b
	jmp c4pd2
c4d3_31:
	and edx,11111111111111111111111111b
	jmp c4pd3_31
		
c4n:
	jmp c4c7end

c4p1:
	lea eax,cachet0
	push eax
	call printf
	pop eax
	jmp c4c2
c4p2:
	lea eax,cachet1
	push eax
	call printf
	pop eax
	jmp c4c3
c4p3:
	lea eax,cachet2
	push eax
	call printf
	pop eax
	jmp c4c4
c4p4:
	lea eax,cachet3
	push eax
	call printf
	pop eax
	jmp c4c5
c4p5:
;过程转移到c4c5
	jmp c4c8
c4p6:
	push eax
	lea eax,cachesleve
	push eax
	call printf
	pop eax
	pop eax
	jmp c4c9
c4p7:	
	push eax
	lea eax,cachefa
	push eax
	call printf
	pop eax
	pop eax
	jmp c4c10
c4p8:	
	push eax
	lea eax,cachere
	push eax
	call printf
	pop eax
	pop eax
	jmp c4c11
c4p9:	
	push eax
	lea eax,cachemaxl
	push eax
	call printf
	pop eax
	pop eax
	jmp c4c12
c4p10:	
	push eax
	lea eax,cachemaxp
	push eax
	call printf
	pop eax
	pop eax
	jmp c4b1

c4pb1:	
	push eax
	and ebx,111111111111b
	push eax
	lea eax,cacebx1
	push eax
	call printf
	pop eax
	pop ebx
	pop eax
	jmp c4b2
c4pb2:
	push ebx	
	push eax
	and ebx,1111111111000000000000b
	shr ebx,12
	push ebx
	lea eax,cacebx2
	push eax
	call printf
	pop eax
	pop ebx
	pop eax
	pop ebx
	jmp c4b3
c4pb3:
	push ebx
	push eax
	and ebx,11111111110000000000000000000000b
	shr ebx,22
	push ebx
	lea eax,cacebx3
	push eax
	call printf
	pop eax
	pop ebx
	pop eax
	pop ebx
	jmp c4n1

c4pn1:
	push eax
	push ecx
	lea eax,cacecx
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	jmp c4d0	
	
c4pd0:	
	push eax
	push ecx
	lea eax,cac0
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	jmp c4d10	

c4pd10:	
	push eax
	push ecx
	lea eax,cac10
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	
	and edx,10000000000b	
	jne c4dl2

	push eax
	push ecx
	lea eax,cac10_0
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	
	jmp c4d1	
  c4dl10:	
	push eax
	push ecx
	lea eax,cac10_1
	push eax
	call printf
	pop eax
	pop ecx
	pop eax	
	
	jmp c4d1		

c4pd1:	
	push eax
	push ecx
	lea eax,cac1
	push eax
	call printf
	pop eax
	pop ecx
	pop eax

	and edx,10b
	jne c4dl1
	
	push eax
	push ecx
	lea eax,cac1_0
	push eax
	call printf
	pop eax
	pop ecx
	pop eax	

	jmp c4d2
  c4dl1:	
	push eax
	push ecx
	lea eax,cac1_1
	push eax
	call printf
	pop eax
	pop ecx
	pop eax	
		
	jmp c4d2		
	
c4pd2:	
	push eax
	push ecx
	lea eax,cac2
	push eax
	call printf
	pop eax
	pop ecx
	pop eax

	and edx,100b
	jne c4dl2
	
	push eax
	push ecx
	lea eax,cac2_0
	push eax
	call printf
	pop eax
	pop ecx
	pop eax

	jmp c4d3_31
  c4dl2:	
	push eax
	push ecx
	lea eax,cac2_1
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	
	jmp c4d3_31		

c4pd3_31:	
	push eax
	push ecx
	lea eax,cac3_31
	push eax
	call printf
	pop eax
	pop ecx
	pop eax
	jmp c4n		
	

c4c7end:
	ret

; EAX=05H 
; 监控/等待 功能
; EAX  AX 小监控行尺寸(默认处理器监控)
; EBX  BX 大监控行尺寸(默认处理器监控)
; ECX  bit0:监控-等待指令扩展支持.(在EAX和EBX寄存器之前)
;      bit1:支持MWAIT的中断事件的中断支持,事件中断时关闭功能
;      bit02-31:保留
; EDX  bit00-03:C0 用于MWAIT 子C结构支持
;      bit04-07:C1 用于MWAIT 子C结构支持
;      bit08-11:C2 用于MWAIT 子C结构支持
;      bit12-15:C3 用于MWAIT 子C结构支持
;      bit16-19:C4 用于MWAIT 子C结构支持
;      bit20-23:C5 用于MWAIT 子C结构支持
;      bit24-27:C6 用于MWAIT 子C结构支持
;      bit28-31:C7 用于MWAIT 子C结构支持

c5proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form5
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
;;;;;;;;;;;;;;;;;;;
	push edx
	push ecx
	push ebx
	push eax
	push eax
	lea eax,a05mixmon
	push eax
	call printf
	pop eax 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
;;;;;;;;;;;;;;;;;;
	push edx
	push ecx
	push ebx
	push eax
	push ebx
	lea eax,a05maxmon
	push eax
	call printf
	pop eax 
	pop ebx
	pop eax
	pop ebx
	pop ecx
	pop edx
;;;;;;;;;;;;;;;;;;
	push ecx
	shr ecx,1
	jnc c05pd
	
	push edx
	push ecx
	push ebx
	push eax
	push eax
	lea eax,a05c0
	push eax
	call printf
	pop eax 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	pop ecx
;;;;;;;;;;;;;;;;;;	
	push ecx
	shr ecx,2
	jnc c05pd
	
	push edx
	push ecx
	push ebx
	push eax
	push eax
	lea eax,a05c1
	push eax
	call printf
	pop eax 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	pop ecx
;;;;;;;;;;;;;;;;;;	
	push ecx
	
	push edx
	push ecx
	push ebx
	push eax
	push eax
	lea eax,a05cx
	push eax
	call printf
	pop eax 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	pop ecx	
;;;;;;;;;;;;;;;;;;;	
c05pd:	
	push edx
	shl edx,28
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d0
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx
;-------------------	
	push edx
	shl edx,24
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d4
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx	
;-------------------
	push edx
	shl edx,20
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d8
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx	
;-------------------
	push edx
	shl edx,16
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d12
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx
;-------------------	
	push edx
	shl edx,12
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d16
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx	
;-------------------	
	push edx
	shl edx,08
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d20
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx	
;-------------------	
	push edx
	shl edx,04
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d24
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx
	
	pop edx	
;-------------------	
	push edx
	shl edx,00
	shr edx,28
	
	push edx
	push ecx
	push ebx
	push eax
	push edx
	lea eax,a05d28
	push eax
	call printf
	pop eax 
	pop edx
	pop eax
	pop ebx
	pop ecx
	pop edx

	pop edx	

	ret

c6proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form6
	push eax
	call printf 
	pop eax

	pop eax
	push eax 

c6_a0:
	clc	
	shr eax,1
	jc c6pa0

c6_a1:
	clc
	shr eax,1
	jc c6pa1
c6_a2:
	clc
	shr eax,1
	jc c6pa2
c6_a3:
	clc
	shr eax,1
	jc c6pa3
c6_a4:
	clc
	shr eax,1
	jc c6pa4
c6_a5:
	clc
	shr eax,1
	jc c6pa5
c6_a6:
	clc
	shr eax,1
	jc c6pa6
c6_a7:
	clc
	shr eax,1
	jc c6pa7
c6_a8:
	clc
	shr eax,1
	jc c6pa8
c6_a9:
	clc
	shr eax,1
	jc c6pa9
c6_a10:
	clc
	shr eax,1
	jc c6pa10
c6_a11:
	clc
	shr eax,1
	jc c6pa11
c6_a12:
	clc
	shr eax,1
	jc c6pa12
c6_a13:
	clc
	shr eax,1
	jc c6pa13
c6_a14:
	clc
	shr eax,1
	jc c6pa14
c6_a15:
	clc
	shr eax,1
	jc c6pa15
c6_a16:
	clc
	shr eax,1
	jc c6pa16
c6_a17:
	clc
	shr eax,1
	jc c6pa17
c6_a18:
	clc
	shr eax,1
	jc c6pa18
c6_a19:
	clc
	shr eax,1
	jc c6pa19
c6_a20:
	clc
	shr eax,1
	jc c6pa20
c6_a21_31:
	and eax,11111111111b
	jnz c6pa21_31

c6_b0_3:
	push ebx
	and ebx,1111b
	jnz c6pb0_3

c6_b4_31:
	pop ebx

	shr ebx,4
	and ebx,1111111111111111111111111111b
	jnz c6pb4_31

c6_c0:
	push ecx
	clc
	shr ecx,1
	jc c6pc0
c6_c1_2:
	and ecx,11b
	jnz c6pc1_2
c6_c3:
	pop ecx
	push ecx
	clc
	shr ecx,3
	jc c6pc3
c6_c4_31:
	pop ecx
	clc
	shr ecx,4
	jnz c6pc4_31	
c6_d0_7:
	push edx
	and edx,11111111b
	jnz c6pd0_7
c6_d7_0:
	pop edx
	push edx
	clc
	shr edx,1
	jc c6pd7_0
c6_d7_1:
	clc
	shr edx,1
	jc c6pd7_1
c6_d7_2_7:
	pop edx
	push edx
	clc
	and edx,11111110b
	shr edx,1
	jnz c6pd7_2_7
c6_d8_11:
	pop edx
	push edx
	clc
	and edx,111100000000b
	shr edx,8
	jnz c6pd8_11
c6_d16_31:
	pop edx
	clc
	and edx,0ffff0000h
	shr edx,16
	jnz c6pd16_31
	jmp c6_end
c6pa0:
	lea eax,a06a00
	call c6subproc
	jmp c6_a1
c6pa1:
	lea eax,a06a01
	call c6subproc
	jmp c6_a2
c6pa2:
	lea eax,a06a02
	call c6subproc
	jmp c6_a3
c6pa3:
	lea eax,a06a03
	call c6subproc
	jmp c6_a4
c6pa4:
	lea eax,a06a04
	call c6subproc
	jmp c6_a5
c6pa5:
	lea eax,a06a05
	call c6subproc
	jmp c6_a6
c6pa6:
	lea eax,a06a06
	call c6subproc
	jmp c6_a7
c6pa7:	
	lea eax,a06a07
	call c6subproc
	jmp c6_a8
c6pa8:
	lea eax,a06a08
	call c6subproc
	jmp c6_a9
c6pa9:
	lea eax,a06a09
	call c6subproc
	jmp c6_a10
c6pa10:
	lea eax,a06a10
	call c6subproc
	jmp c6_a11
c6pa11:
	lea eax,a06a11
	call c6subproc
	jmp c6_a12
c6pa12:
	lea eax,a06a12
	call c6subproc
	jmp c6_a13
c6pa13:
	lea eax,a06a13
	call c6subproc
	jmp c6_a14
c6pa14:
	lea eax,a06a14
	call c6subproc
	jmp c6_a15
c6pa15:
	lea eax,a06a15
	call c6subproc
	jmp c6_a16
c6pa16:
	lea eax,a06a16
	call c6subproc
	jmp c6_a17
c6pa17:
	lea eax,a06a17
	call c6subproc
	jmp c6_a18
c6pa18:
	lea eax,a06a18
	call c6subproc
	jmp c6_a19
c6pa19:
	lea eax,a06a19
	call c6subproc
	jmp c6_a20
c6pa20:
	lea eax,a06a20
	call c6subproc
	jmp c6_a21_31
c6pa21_31:
	push eax
	lea eax,a06a21_31
	push eax
	call printf
	pop eax
	pop eax
	jmp c6_b0_3

c6pb0_3:
	push ebx
	lea eax,a06b0_3
	push eax
	call printf
	pop eax
	pop ebx
	jmp c6_b4_31
c6pb4_31:
	push ebx
	lea eax,a06b4_31
	push eax
	call printf
	pop eax
	pop ebx
	jmp c6_c0

c6pc0:
	lea eax,a06c0
	call printf
	jmp c6_c1_2
c6pc1_2:
	push ecx
	lea eax,a06c1_2
	push eax
	call printf
	pop eax
	pop ecx
	jmp c6_c3
c6pc3:	
	lea eax,a06c3
	call c6subproc
	jmp c6_c4_31
c6pc4_31:
	push ecx	
	lea eax,a06c4_31
	push eax
	call printf
	pop eax
	pop ecx
	jmp c6_d0_7
	
c6pd0_7:
	push edx
	lea eax,a06d0_7
	push eax
	call printf
	pop eax
	pop edx
	jmp c6_d7_0
c6pd7_0:
	lea eax,a06d7_0
	call c6subproc
	jmp c6_d7_1
c6pd7_1:
	lea eax,a06d7_1
	call c6subproc
	jmp c6_d7_2_7
c6pd7_2_7:
	push edx
	lea eax,a06d7_2_7
	push eax
	call printf
	pop eax
	pop edx
	jmp c6_d8_11
c6pd8_11:
	push edx
	lea eax,a06d8_11
	push eax
	call printf
	pop eax
	pop edx
	jmp c6_d16_31
c6pd16_31:
	push edx
	lea eax,a06d16_31
	push eax
	call printf
	pop eax
	pop edx
	jmp c6_end

c6_end:

	pop eax
	pop ebx
	pop ecx
	pop edx

	ret

c6subproc:
	push eax
	call printf 
	pop eax
	ret

; EAX=07H ECX=0 返回
; 07子功能识别是特别的CPU指令集,和常规的CPU命令集不同,属于扩展功能
; 此功能进入时使用EAX和ECX寄存器

;	EBX=0				;不支持指令
						;FSGSBASE RDFSBASE/RDFSBASE/WRFSBASE/WRGSBASE
						;MSR 不支持 IA32_TSC_ADJUST
						;SGX  | BMI1 | HLE | AVX2 | FDP_EXCPTN_ONLY | SMEP 
						;BMI2 | 加强 REP MOVSB/STOSB | INVPCID | RTM | RDT-M
						;FPU CS and FPU DS | MPX | RDT-A | AVX512F | AVX512DQ
						;RDSEED | ADX | SMAP and CLAC/STAC | AVX51_IFMA | bit22 保留 
						;CLFLUSHOPT | CLWB | cpu trace | AVX512PF | AVX512ER 
						;AVX512CD | SHA | AVX512BW | AVX512VL 
;	ECX=0				;不支持指令
;   (例子)				;PREFETCHWT | AVX512_VBMI | UMIP | PKU 
						; OSPKE CR4.PKE=enable protection keys. and RDPKRU/WRPKRU
						;WAITPKG | AVX512_VBMI2 | CET_SS shadow stack 
						; MSR IA32_U_CET and IA32_S_CET. Enumerates MSR:
						; IA32_INTERRUPT_SPP_TABLE_ADDR, IA32_PL3_SSP, IA32_PL2_SSP
						; IA32_PL1_SSP,IA32_PL0_SSP.
						;GFNI | VAES | VPCLMULQDQ | AVX512_VNNI |AVX512_BITALG
						;TME_EN : IA32_TME_CAPABILITY,IA32_TME_ACTIVATE, note:new
						;         IA32_TME_EXCLUDE_MASK,IA32_TME_EXCLUDE_BASE
						;AVX512_VPOPCNTDQ | bit15 保留 | LA57 | bit 17-21:
						; MAWAU value 使用于 BNDLDX 和 BNDSTX 在 64bit 模式
						;RDPID, IA32_TSC_AUX | KL 键锁 | bit24 保留 | CLDEMOTE
						;bit26 保留 |  MOVDIRI | MOVDIR64B | bit29 保留 | SGX_LC | PKS
;	EDX=c9000400		;支持指令
;   (例子)				;bit10 MD_CLEAR | bit26 IBPB set MSR:IA32_PRED_CMD[0],
						;					    IBRS set MSR:IA32_SPEC_CTRL[0]
						;bit27 STIBP set MSR: IA32_SPEC_CTRL[1]
						;bit28 L1D_FLUSH set MSR:L1D_FLUSH IA32_FLUSH_CMD[0]
						;bit31 SSBD MSR: set IA32_SPEC_CTRL[2]
						;不支持指令
						;bit1 保留 | AVX512_4VNNIW | AVX512_4FMAPS note: Xeon Phi only
						;快速短 REP MOV | bit5-7 保留 | AVX512_VP2INTERSECT | bit9 保留
						;bit11-14 保留 | Hybrid 技术 = 1 | bit16-17 保留 | PCONFIG note: new | bit19 保留
						;CET_IBT set define bit 5:2 和 bit 63:10 MSR:IA32_U_CET,IA32_S_CET
						;bit21-25 保留 | bit29 MSR:IA32_ARCH_CAPABILITIES | MSR:IA32_CORE_CAPABILITIES
c7proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form7
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c7proc1:
	push ebx
	push ecx
	push edx
c7b_0:
	shr ebx,1
	jc  c7_b0
c7b_1:
	shr ebx,1
	jc  c7_b1
c7b_2:
	shr ebx,1
	jc  c7_b2
c7b_3:
	shr ebx,1
	jc  c7_b3
c7b_4:
	shr ebx,1
	jc  c7_b4
c7b_5:
	shr ebx,1
	jc  c7_b5
c7b_6:
	shr ebx,1
	jc  c7_b6
c7b_7:
	shr ebx,1
	jc  c7_b7
c7b_8:
	shr ebx,1
	jc  c7_b8
c7b_9:
	shr ebx,1
	jc  c7_b9
c7b_10:
	shr ebx,1
	jc  c7_b10
c7b_11:
	shr ebx,1
	jc  c7_b11
c7b_12:
	shr ebx,1
	jc  c7_b12
c7b_13:
	shr ebx,1
	jc  c7_b13
c7b_14:
	shr ebx,1
	jc  c7_b14
c7b_15:
	shr ebx,1
	jc  c7_b15
c7b_16:
	shr ebx,1
	jc  c7_b16
c7b_17:
	shr ebx,1
	jc  c7_b17
c7b_18:
	shr ebx,1
	jc  c7_b18
c7b_19:
	shr ebx,1
	jc  c7_b19
c7b_20:
	shr ebx,1
	jc  c7_b20
c7b_21:
	shr ebx,1
	jc  c7_b21
c7b_22:
	shr ebx,1
	jc  c7_b22
c7b_23:
	shr ebx,1
	jc  c7_b23
c7b_24:
	shr ebx,1
	jc  c7_b24
c7b_25:
	shr ebx,1
	jc  c7_b25
c7b_26:
	shr ebx,1
	jc  c7_b26
c7b_27:
	shr ebx,1
	jc  c7_b27
c7b_28:
	shr ebx,1
	jc  c7_b28
c7b_29:
	shr ebx,1
	jc  c7_b29
c7b_30:
	shr ebx,1
	jc  c7_b30
c7b_31:
	shr ebx,1
	jc  c7_b31

	jmp c7_be

c7_b0:			;1
	push ebx
	mov eax,fsgsb1
    call c7_p
	pop ebx
	jmp c7b_1
c7_b1:			;2
	push ebx
	mov eax,itam
    call c7_p
	pop ebx
	jmp c7b_2
c7_b2:			;3
	push ebx	
	mov eax,sgx
    call c7_p
	pop ebx
	jmp c7b_3
c7_b3:			;4
	push ebx
    mov eax,bmi1
    call c7_p
    pop ebx
    jmp c7b_4
c7_b4:			;5
	push ebx
    mov eax,hle
    call c7_p
    pop ebx
    jmp c7b_5
c7_b5:			;6
	push ebx    
    mov eax,avx2
    call c7_p
    pop ebx
    jmp c7b_6
c7_b6:			;7
	push ebx
    mov eax,feof
    call c7_p
    pop ebx
    jmp c7b_7
c7_b7:			;8
	push ebx
    mov eax,smep
    call c7_p
    pop ebx
    jmp c7b_8
c7_b8:			;9
	push ebx
    mov eax,bmi2
    call c7_p
    pop ebx
    jmp c7b_9
c7_b9:			;10
	push ebx
    mov eax,rms
    call c7_p
    pop ebx
    jmp c7b_10
c7_b10:			;11
	push ebx
    mov eax,rms
    call c7_p
    pop ebx
    jmp c7b_11
c7_b11:			;12
	push ebx
    mov eax,invp1
    call c7_p
    pop ebx
    jmp c7b_12
c7_b12:			;13
	push ebx
    mov eax,rtm
    call c7_p
    pop ebx
    jmp c7b_13
c7_b13:			;14
	push ebx
    mov eax,rdt_m
    call c7_p
    pop ebx
    jmp c7b_14
c7_b14:			;15
	push ebx
    mov eax,dfpu
    call c7_p
    pop ebx
    jmp c7b_15   
c7_b15:			;16
	push ebx
    mov eax,impe
    call c7_p
    pop ebx
	jmp c7b_16
c7_b16:			;17
	push ebx
    mov eax,rdt_a
    call c7_p
    pop ebx
    jmp c7b_17
c7_b17:			;18
	push ebx
    mov eax,avx512f
    call c7_p
    pop ebx
    jmp c7b_18
c7_b18:			;19
	push ebx
    mov eax,avx512dq
    call c7_p
    pop ebx
    jmp c7b_19
c7_b19:			;20
	push ebx
    mov eax,rdseed1
    call c7_p
    pop ebx
    jmp c7b_20
c7_b20:			;21
	push ebx
    mov eax,adx
    call c7_p
    pop ebx
    jmp c7b_21
c7_b21:			;22
	push ebx
    mov eax,smap
    call c7_p
    pop ebx
    jmp c7b_22
c7_b22:			;23
	push ebx
    mov eax,avx512_i
    call c7_p
    pop ebx
    jmp c7b_23
c7_b23:			;24
	push ebx
    mov eax,resebx22
    call c7_p
    pop ebx
    jmp c7b_24
c7_b24:			;25
	push ebx
    mov eax,clflu1
    call c7_p
    pop ebx
    jmp c7b_25
c7_b25:			;26
	push ebx
    mov eax,clwb1
    call c7_p
    pop ebx
    jmp c7b_26
c7_b26:			;27
	push ebx
    mov eax,ipt
    call c7_p
    pop ebx
    jmp c7b_27
c7_b27:			;28
	push ebx
    mov eax,avx512pf
    call c7_p
    pop ebx
    jmp c7b_28
c7_b28:			;29
	push ebx
    mov eax,avx512er
    call c7_p
    pop ebx
    jmp c7b_29
c7_b29:			;30
	push ebx
    mov eax,avx512cd
    call c7_p
    pop ebx
    jmp c7b_30
c7_b30:			;31
	push ebx
    mov eax,sha
    call c7_p
    pop ebx
    jmp c7b_31
c7_b31:			;32
	push ebx
    mov eax,avx512bw
    call c7_p    
    pop ebx
c7_be:
    pop edx
    pop ecx
    pop ebx

c7c_0:
	push ebx
	push ecx
	push edx 
	shr ecx,1
	jc  c7_c0
c7c_1:
	shr ecx,1
	jc  c7_c1
c7c_2:
	shr ecx,1
	jc  c7_c2
c7c_3:
	shr ecx,1
	jc  c7_c3
c7c_4:
	shr ecx,1
	jc  c7_c4
c7c_5:
	shr ecx,1
	jc  c7_c5
c7c_6:
	shr ecx,1
	jc  c7_c6
c7c_7:
	shr ecx,1
	jc  c7_c7
c7c_8:
	shr ecx,1
	jc  c7_c8
c7c_9:
	shr ecx,1
	jc  c7_c9
c7c_10:
	shr ecx,1
	jc  c7_c10
c7c_11:
	shr ecx,1
	jc  c7_c11
c7c_12:
	shr ecx,1
	jc  c7_c12
c7c_13:
	shr ecx,1
	jc  c7_c13
c7c_14:
	shr ecx,1
	jc  c7_c14
c7c_15:
	shr ecx,1
	jc  c7_c15
c7c_16:
	shr ecx,1
	jc  c7_c16
c7c_17:
	shr ecx,1
	jc  c7_c17
c7c_18:
	shr ecx,1
	jc  c7_c18
c7c_19:
	shr ecx,1
	jc  c7_c19
c7c_20:
	shr ecx,1
	jc  c7_c20
c7c_21:
	shr ecx,1
	jc  c7_c21
c7c_22:
	shr ecx,1
	jc  c7_c22
c7c_23:
	shr ecx,1
	jc  c7_c23
c7c_24:
	shr ecx,1
	jc  c7_c24
c7c_25:
	shr ecx,1
	jc  c7_c25
c7c_26:
	shr ecx,1
	jc  c7_c26
c7c_27:
	shr ecx,1
	jc  c7_c27
c7c_28:
	shr ecx,1
	jc  c7_c28
c7c_29:
	shr ecx,1
	jc  c7_c29
c7c_30:
	shr ecx,1
	jc  c7_c30
c7c_31:
	shr ecx,1
	jc  c7_c31

	jmp c7_ce

c7_c0:			;1
	push ecx
	mov eax,pref1
    call c7_p
	pop ecx
	jmp c7c_0
c7_c1:			;2
	push ecx
	mov eax,avx512_v
    call c7_p
	pop ecx
	jmp c7c_2
c7_c2:			;3
	push ecx	
	mov eax,umip
    call c7_p
	pop ecx
	jmp c7c_3
c7_c3:			;4
	push ecx
    mov eax,pku
    call c7_p
    pop ecx
    jmp c7c_4
c7_c4:			;5
	push ecx
    mov eax,ospke
    call c7_p
    pop ecx
    jmp c7c_5
c7_c5:			;6
	push ecx    
    mov eax,waitpkg
    call c7_p
    pop ecx
    jmp c7c_6
c7_c6:			;7
	push ecx
    mov eax,avx512_vb
    call c7_p
    pop ecx
    jmp c7c_7
c7_c7:			;8
	push ecx
    mov eax,cet_ss
    call c7_p
    pop ecx
    jmp c7c_8
c7_c8:			;9
	push ecx
    mov eax,gfni
    call c7_p
    pop ecx
    jmp c7c_9
c7_c9:			;10
	push ecx
    mov eax,vaes
    call c7_p
    pop ecx
    jmp c7c_10
c7_c10:			;11
	push ecx
    mov eax,vpclmu1
    call c7_p
    pop ecx
    jmp c7c_11
c7_c11:			;12
	push ecx
    mov eax,avx512_vn
    call c7_p
    pop ecx
    jmp c7c_12
c7_c12:			;13
	push ecx
    mov eax,avx512_bi
    call c7_p
    pop ecx
    jmp c7c_13
c7_c13:			;14
	push ecx
    mov eax,tme_en
    call c7_p
    pop ecx
    jmp c7c_14
c7_c14:			;15
	push ecx
    mov eax,avx512_vp1
    call c7_p
    pop ecx
    jmp c7c_15   
c7_c15:			;16
	push ecx
    mov eax,resecx15
    call c7_p
    pop ecx
	jmp c7c_16
c7_c16:			;17
	push ecx
    mov eax,la57
    call c7_p
    pop ecx
    jmp c7c_17
c7_c17:			;18
	push ecx
    mov eax,gmbb
    call c7_p
    pop ecx
    jmp c7c_18
c7_c18:			;19
	push ecx
    mov eax,gmbb
    call c7_p
    pop ecx
    jmp c7c_19
c7_c19:			;20
	push ecx
    mov eax,gmbb
    call c7_p
    pop ecx
    jmp c7c_20
c7_c20:			;21
	push ecx
    mov eax,gmbb
    call c7_p
    pop ecx
    jmp c7c_21
c7_c21:			;22
	push ecx
    mov eax,gmbb
    call c7_p
    pop ecx
    jmp c7c_22
c7_c22:			;23
	push ecx
    mov eax,rdpid1
    call c7_p
    pop ecx
    jmp c7c_23
c7_c23:			;24
	push ecx
    mov eax,kl
    call c7_p
    pop ecx
    jmp c7c_24
c7_c24:			;25
	push ecx
    mov eax,resecx24
    call c7_p
    pop ecx
    jmp c7c_25
c7_c25:			;26
	push ecx
    mov eax,cldem
    call c7_p
    pop ecx
    jmp c7c_26
c7_c26:			;27
	push ecx
    mov eax,resecx26
    call c7_p
    pop ecx
    jmp c7c_27
c7_c27:			;28
	push ecx
    mov eax,movdi
    call c7_p
    pop ecx
    jmp c7c_28
c7_c28:			;29
	push ecx
    mov eax,movd64
    call c7_p
    pop ecx
    jmp c7c_29
c7_c29:			;30
	push ecx
    mov eax,enqcmd
    call c7_p
    pop ecx
    jmp c7c_30
c7_c30:			;31
	push ecx
    mov eax,sgx_lc
    call c7_p
    pop ecx
    jmp c7c_31
c7_c31:			;32
	push ecx
    mov eax,pks
    call c7_p
    pop ecx
c7_ce:
    pop edx
    pop ecx
    pop ebx

c7d_0:
	push ebx
	push ecx
	push edx 
	shr edx,1
	jc  c7_d0
c7d_1:
	shr edx,1
	jc  c7_d1
c7d_2:
	shr edx,1
	jc  c7_d2
c7d_3:
	shr edx,1
	jc  c7_d3
c7d_4:
	shr edx,1
	jc  c7_d4
c7d_5:
	shr edx,1
	jc  c7_d5
c7d_6:
	shr edx,1
	jc  c7_d6
c7d_7:
	shr edx,1
	jc  c7_d7
c7d_8:
	shr edx,1
	jc  c7_d8
c7d_9:
	shr edx,1
	jc  c7_d9
c7d_10:
	shr edx,1
	jc  c7_d10
c7d_11:
	shr edx,1
	jc  c7_d11
c7d_12:
	shr edx,1
	jc  c7_d12
c7d_13:
	shr edx,1
	jc  c7_d13
c7d_14:
	shr edx,1
	jc  c7_d14
c7d_15:
	shr edx,1
	jc  c7_d15
c7d_16:
	shr edx,1
	jc  c7_d16
c7d_17:
	shr edx,1
	jc  c7_d17
c7d_18:
	shr edx,1
	jc  c7_d18
c7d_19:
	shr edx,1
	jc  c7_d19
c7d_20:
	shr edx,1
	jc  c7_d20
c7d_21:
	shr edx,1
	jc  c7_d21
c7d_22:
	shr edx,1
	jc  c7_d22
c7d_23:
	shr edx,1
	jc  c7_d23
c7d_24:
	shr edx,1
	jc  c7_d24
c7d_25:
	shr edx,1
	jc  c7_d25
c7d_26:
	shr edx,1
	jc  c7_d26
c7d_27:
	shr edx,1
	jc  c7_d27
c7d_28:
	shr edx,1
	jc  c7_d28
c7d_29:
	shr edx,1
	jc  c7_d29
c7d_30:
	shr edx,1
	jc  c7_d30
c7d_31:
	shr edx,1
	jc  c7_d31

	jmp c7_de

c7_d0:			;1
	push edx
	mov eax,resedx00
    call c7_p
	pop edx
	jmp c7d_1
c7_d1:			;2
	push edx
	mov eax,resedx01
    call c7_p
	pop edx
	jmp c7d_2
c7_d2:			;3
	push edx	
	mov eax,avx512_4v
    call c7_p
	pop edx
	jmp c7d_3
c7_d3:			;4
	push edx
    mov eax,avx512_4f
    call c7_p
    pop edx
    jmp c7d_4
c7_d4:			;5
	push edx
    mov eax,fsrm
    call c7_p
    pop edx
    jmp c7d_5
c7_d5:			;6
	push edx    
    mov eax,uintr
    call c7_p
    pop edx
    jmp c7d_6
c7_d6:			;7
	push edx
    mov eax,resedx06
    call c7_p
    pop edx
    jmp c7d_7
c7_d7:			;8
	push edx
    mov eax,resedx07
    call c7_p
    pop edx
    jmp c7d_8
c7_d8:			;9
	push edx
    mov eax,avx512_vp
    call c7_p
    pop edx
    jmp c7d_9
c7_d9:			;10
	push edx
    mov eax,resedx09
    call c7_p
    pop edx
    jmp c7d_10
c7_d10:			;11
	push edx
    mov eax,md_cl
    call c7_p
    pop edx
    jmp c7d_11
c7_d11:			;12
	push edx
    mov eax,resedx11_14
    call c7_p
    pop edx
    jmp c7d_12
c7_d12:			;13
	push edx
    mov eax,resedx12
    call c7_p
    pop edx
    jmp c7d_13
c7_d13:			;14
	push edx
    mov eax,resedx13
    call c7_p
    pop edx
    jmp c7d_14
c7_d14:			;15
	push edx
    mov eax,seri
    call c7_p
    pop edx
    jmp c7d_15   
c7_d15:			;16
	push edx
    mov eax,hybrid
    call c7_p
    pop edx
	jmp c7d_16
c7_d16:			;17
	push edx
    mov eax,tsxld
    call c7_p
    pop edx
    jmp c7d_17
c7_d17:			;18
	push edx
    mov eax,resedx17
    call c7_p
    pop edx
    jmp c7d_18
c7_d18:			;19
	push edx
    mov eax,pconf1
    call c7_p
    pop edx
    jmp c7d_19
c7_d19:			;20
	push edx
    mov eax,resedx19
    call c7_p
    pop edx
    jmp c7d_20
c7_d20:			;21
	push edx
    mov eax,cet_ibt
    call c7_p
    pop edx
    jmp c7d_21
c7_d21:			;22
	push edx
    mov eax,resedx21_25
    call c7_p
    pop edx
    jmp c7d_22
c7_d22:			;23
	push edx
    mov eax,amx_bf16
    call c7_p
    pop edx
    jmp c7d_23
c7_d23:			;24
	push edx
    mov eax,avx512_fp
    call c7_p
    pop edx
    jmp c7d_24
c7_d24:			;25
	push edx
    mov eax,amx_tile
    call c7_p
    pop edx
    jmp c7d_25
c7_d25:			;26
	push edx
    mov eax,amx_int8
    call c7_p
    pop edx
    jmp c7d_26
c7_d26:			;27
	push edx
    mov eax,ibib
    call c7_p
    pop edx
    jmp c7d_27
c7_d27:			;28
	push edx
    mov eax,stibp
    call c7_p
    pop edx
    jmp c7d_28
c7_d28:			;29
	push edx
    mov eax,l1d_flush
    call c7_p
    pop edx
    jmp c7d_29
c7_d29:			;30
	push edx
    mov eax,siac
    call c7_p
    pop edx
    jmp c7d_30
c7_d30:			;31
	push edx
    mov eax,sicc
    call c7_p
    pop edx
    jmp c7d_31
c7_d31:			;32
	push edx
    mov eax,sisc
    call c7_p
    pop edx

c7_de:
    pop edx
    pop ecx
    pop ebx
	ret    
c7_p:
    push eax
    call printf
    pop eax
    clc
    ret  

; EAX=07H ECX=0 返回
;=================================
; 当CPUID 运行前 ECX=1时
; EAX=0 子功能索引, EAX=1 错误
; EBX=0 子功能索引, EBX=1 错误
; ECX=0 子功能索引, EAX=1 错误
; EDX=0 子功能索引, EAX=1 错误
;=================================
c7proc2:	;CPUID 运行前 ECX=1
	; 功能索引 返回EAX值
	; EAX     0-4位保留
	;         5位 AVX512_BF16 支持 BFLOAT16 从IEEE 信号端 输入和覆盖结构
	;         6-31位保留
	push edx
	push ecx
	push ebx
	push eax

	cmp eax,1h
	je c7cx1
	cmp ebx,1h
	je c7cx1

c7cx0:
	lea eax,form71
	jmp c7cxd
c7cx1:
	lea eax,c07error
c7cxd:	
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

;	shr eax,6
;	jnc c7p_1
;	or eax,100000b
;	test eax,eax
;	jne c7p_1
;c7p_1:
	ret

c9proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form9
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	push eax
	lea eax,ipdc
	push eax
	call printf
	pop eax
	pop eax
	ret

c0aproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,forma
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c0bproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formb
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c0dproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formd
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c0d1proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formd1
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx

	shr edx,8
	mov al,dl
	cmp al,0
	jz c0d1t1
	cmp al,1
	jz c0d1t2
	cmp al,2
	jz c0d1t3
	cmp al,3
	jg c0d1t4
c0d1t1:
	mov eax,letype1
	push eax
	jmp c0d1p
c0d1t2:
	mov eax,letype2
	push eax
	jmp c0d1p
c0d1t3:
	mov eax,letype3
	push eax
	jmp c0d1p
c0d1t4:
	mov eax,letype4
	push eax
	jmp c0d1p
c0d1p:
	mov eax,letype
	push eax
	call printf
	pop eax
	pop eax
	push eax
	call printf
	pop eax

	ret

c0d2proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formd2
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c0fproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formf
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c0f1proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,formf1
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c10proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form10
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c101proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form101
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c102proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form102
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c103proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form103
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c12proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form12
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c121proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form121
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c122proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form122
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c14proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form14
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c141proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form141
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret	

c15proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form15
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c16proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form16
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

; EAX=17h,ECX 为 MaxSOCID索引
c17proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form17
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c171proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form171
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c172proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form172
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c173proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form173
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c18proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form18
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c181proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form181
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c19proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form19
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret	

;增加的新功能 EAX=1ah,ECX=0
;Hybrid处理器主模式类型识别
c1aproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1a
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret	

	push eax
	shr eax,24d
	cmp al,10h
	jnz c1a1p
	jmp c1a_1
c1a1p:
	cmp al,20h
	jnz c1a2p
	jmp c1a_2
c1a2p:
	cmp al,30h
	jnz c1a3p
	jmp c1a_3
c1a3p:
	cmp al,40h
	jne c1a_e
	jmp c1a_4
c1a_1:
	lea eax,reserved
	jmp c1a_p
c1a_2:
	lea eax,intelatom
	jmp c1a_p
c1a_3:
	lea eax,reserved
	jmp c1a_p	
c1a_4:
	lea eax,intelcore
	jmp c1a_p
c1a_p:
	push eax
	call printf
	pop eax

c1a_e:
	pop eax
	ret

c1bproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1b
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c1dproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1d
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c1d1proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1d1
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c1eproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1e
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c1fproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form1f
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c20proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form20
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8000proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form800
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8001proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form801
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8002proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form802
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8003proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form803
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8004proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form804
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8005proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form805
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8006proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form806
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8007proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form807
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

c8008proc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form808
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

chelpproc:
	call getchar
	call ClearScreen
	lea eax,helpinfo
	push eax
	call printf
	pop eax	
	ret

ccmdproc:
	push edx
	push ecx
	push ebx
	push eax
	lea eax,form
	push eax
	call printf 
	pop eax
	pop eax
	pop ebx
	pop ecx
	pop edx
	ret

	mov eax,0h
	call ExitProcess
分享给朋友:

相关文章

关于ch341驱动,联动3D打印机USB串口通讯.

关于ch341驱动,联动3D打印机USB串口通讯.

手上有个3D打印机,搬家的原因,好久没用.天气热了,打印温度很适合,正好可以使用.又过了一年.发现linux 版本内核已经升级,和原来的系统不一样了. 按照3D打印机的说明,和寻找它的程序,原来的方法...

linux mint 20 下编译最新内核所添加的文件。

linux mint 20 下编译最新内核所添加的文件。

linux mint 20 下编译最新内核文件所需要的两个文件包。sudo apt-get install libncurses5-devsudo apt-get install libssl-dev...

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

以前的DOS游戏《仙剑奇侠传》是炙制人口的一个很容易上手的游戏。这个游戏流行了很多年。很多人在玩过多年以后,重温旧梦,回味游戏之中的情感。这个游戏再版了很多次了。现在linux 下也可以直接玩这个游戏...

关于编译器不愿意说的那些事。

关于编译器不愿意说的那些事。

计算机发展了好多年。当中也不泛有很多对程序的爱好。很多人不是专业水平,也不是在算法类中特别出众,就是喜欢而已。好像认为自己就只那个水平,或者为一些调试不通过发愁。可以说,实际上都不是你的错,是编译器的...

谈谈引导程序的想法。

谈谈引导程序的想法。

当个人电脑一出现就有了磁盘系统,不管是软盘,光盘,硬盘,计算机要应用操作系统就要引导,引导程序一段代码。这引导代码很小,在第一个磁盘的扇区上,平时没什么人注意它。这段代码损坏一个字节,都会造成计算机瘫...

nasm 汇编命令2021年2月后增补。

nasm 汇编命令2021年2月后增补。

;=========================================================== ;nasm 增补新汇编命令集 ; ;引用方式  ;把icpup.inc...