⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpumsr.asm

📁 利用 DB 00Fh, 0A2h利用
💻 ASM
字号:
        .MODEL  SMALL
        .386p

;============================================================================
        .CODE                           ;Code segment

        ORG	100h
Begin:
	jmp	Entry

;----------------------------------------------------------------------------
;prefix0	equ	' '
prefix0	equ	'.'

cpuinfo	db	'>>>>>> Intel CPU MSR information <<<<<<',0dh,0ah,0dh,0ah,0dh,0ah,'$'
bq_m	db	'bq2040 Regeisters:',0dh,0ah
f01_m	db	'RemainingCapacityAlarm.......$'
f01_d	db	'?????mAh',0dh,0ah
f02_m	db	'RemainingTimeAlarm...........$'
f02_d	db	'?????minutes',0dh,0ah
f03_m	db	'BatteryMode..................$'
f03_d	db	'????h     {"CPUID" 69xh=>Banias;6Dxh=>Dothan}',0dh,0ah,0dh,0ah,'$'
f04_d	db	'????????h{Freq_ID}',0dh,0ah,0dh,0ah,'$'
f05_d	db	'????????h {"PLATFORM_ID(EDX)" bit[26:25]:L2 Cache Size;00b=>1M/B,2M/D;01b=>512K/            B,1M/D;10b=>512K/B,1M/D}',0dh,0ah,0dh,0ah,'$'
f06_d	db	'????????h {"PLATFORM_ID(EAX)" bit[26:25]:L2 Cache Size;00b=>1M/B,2M/D;01b=>512K/            B,1M/D;10b=>512K/B,1M/D}',0dh,0ah,0dh,0ah,'$'
inbuff	dword	255 DUP(0)
myarray	dword	50 dup(?)
byterd	dword	?
f07_d	db	'input the msr address (must key_in 4 byte):',0dh, 0ah, 0dh, 0ah,'$'


comment %
f04_m	db	'AtRate.......................$'
f04_d	db	'?????mA',0dh,0ah
f05_m	db	'AtRateTimeToFull.............$'
f05_d	db	'?????minutes',0dh,0ah
f06_m	db	'AtRateTimeToEmpty............$'
f06_d	db	'?????minutes',0dh,0ah

%

Entry:
;=>CPU information.
	mov	ah, 09h
	lea	dx, cpuinfo
	int	21h

;=>CPU ID.
	mov	eax, 1
	DB	00Fh, 0A2h
	mov	dx, ax

	mov	al, dh
	lea	di, f03_d
	call	Hex2ascii
	mov	al, dl
	lea	di, f03_d+2
	call	Hex2ascii
	mov	ah, 09h
	lea	dx, f03_d
	int	21h


;=>Platform ID.
	mov	ah, 09h
	lea	dx, f07_d
	int	21h


	mov	ah, 3fh
	mov	bx, 0
	mov	cx, 255
	mov	dx, offset inbuff
	int	21h
	mov	eax, inbuff

	and	eax, 0000ffffh
	push	ax
	shr	al, 4
	cmp	al, 3h
	je	three_al
four_al:
	pop	ax
	and	al, 0fh
	add	al, 9h
	jmp	forah
three_al:
	pop	ax
	and	al, 0fh	
forah:
	push	ax
	shr	ah,4
	cmp	ah, 3h
	je	three_ah

four_ah:
	pop	ax
	and	ah, 0fh
	add	ah, 9h
	jmp	next
three_ah:
	pop	ax
	and	ah, 0fh	

next:

	shl	ah, 4
	or	ah,al
	shr	ax, 8
	rol	al, 4
	mov	ebx,eax

	mov	eax, inbuff
	shr	eax, 16

	cmp	ax, 0a0dh	
	je	keep_doing

	
	push	ax
	shr	al, 4
	cmp	al, 3h
	je	three_al2
four_al2:
	pop	ax
	and	al, 0fh
	add	al, 9h
	jmp	forah2
three_al2:
	pop	ax
	and	al, 0fh	
forah2:
	push	ax
	shr	ah,4
	cmp	ah, 3h
	je	three_ah2

four_ah2:
	pop	ax
	and	ah, 0fh
	add	ah, 9h
	jmp	next2
three_ah2:
	pop	ax
	and	ah, 0fh	

next2:

	shl	ah, 4
	or	ah,al
	shr	ax, 8
	rol	al, 4
	
	shl	eax, 8
	or	eax, ebx
	
	rol	ax, 8
	jmp	after_do

		
keep_doing:
	mov	eax, ebx
	
after_do:
	mov	edx, eax
	mov	ecx, eax
	DB	00Fh, 032h


	push	eax

	mov	al, dh
	lea	di, f05_d+4
	call	Hex2ascii
	mov	al, dl
	lea	di, f05_d+6
	call	Hex2ascii
	shr	edx, 16
	mov	al, dh
	lea	di, f05_d
	call	Hex2ascii
	mov	al, dl
	lea	di, f05_d+2
	call	Hex2ascii
	mov	ah, 09h
	lea	dx, f05_d
	int	21h

	pop	eax
	mov	edx, eax
	mov	al, dh
	lea	di, f06_d+4
	call	Hex2ascii
	mov	al, dl
	lea	di, f06_d+6
	call	Hex2ascii
	shr	edx, 16
	mov	al, dh
	lea	di, f06_d
	call	Hex2ascii
	mov	al, dl
	lea	di, f06_d+2
	call	Hex2ascii
	mov	ah, 09h
	lea	dx, f06_d
	int	21h

	mov	ah, 4Ch
	int 	21h
	jmp	$

Hex2ascii       proc            ; Entry:al=Hex, Return:[di]..[di+1]=ASCII
	pusha
        mov     ah, 0
        mov     cl, 10h
        div     cl              ; ax / cl = al ... ah
        add     al, '0'
        cmp     al, '9'
        jna     @f
        add     al, 07h
@@:
        stosb
        add     ah, '0'
        cmp     ah, '9'
        jna     @f
        add     ah, 07h
@@:
        xchg    ah, al
        stosb
	popa
        ret
Hex2ascii       endp

        END     Begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -