egment para CODE
ASSUME CS: CODSEG, DS: DATSEG, SS: STSEG, ES: DATSEG
BEGIN:
. 386
; установка сегментних регістрів
mov ax, DATSEG
mov ds, ax
mov es, ax
mov ax, STSEG
mov ss, ax
; ---- ВИСНОВОК титульній сторінці
mov ax, 3
int 10h
mov ah, 09
lea dx, STR1
int 21h
xor ah, ah
int 16h
;---------- ВИСНОВОК ФОНУ --------_ C: call clear_scr_R:
; ---- МЕНЮ ПРОГРАМИ
call menu_out
call menu_str_out
call getchar
jmp menu_r
_:
; перевірка на можливість визначення процесора
call check_cpuid
call clear_scr
; визначення тактової частоти
lea bp, FREQ_WAIT
mov cx, FREQ_WAIT_LEN
call str_out
mov ROW, 0
call get_cpu_freq
:
; ********* Висновок основної інформації про процесор **********
lea bp, DSTR2
mov cx, 80
call str_out
mov COLUMN, 0
lea bp, DSTR1
mov cx, 80
call str_out
inc ROW
lea bp, COMMON_INFO_STR
mov cx, COMMON_INFO_STR_LEN
call str_out
call vendor_out; фірма - виробник
call common_info_out; назва, модифікація, модель, сімейство
call freq_out; частота
call check_ext; набір розширень: fpu, mmx, sse, sse2, 3D Now!
; висновок підказки
mov ROW, 23
mov COLUMN, 0
lea bp, DSTR1
mov cx, 80
call str_out
inc ROW
lea bp, COMM_MESS
mov cx, COMM_MESS_LEN
call str_out
_ key:
call getchar
jmp Read_key
;---------------------------------------------------------------
; Макроси
;--------------------------------------------------------------- macro
DB 0fh, 31h; команда RDTSC - читання лічильника тактів
;--------------------------------------------------------------- macro
DB 0Fh, 0A2h; інструкція cpuid (ідентифікація процесора)
;---------------------------------------------------------------
; Процедури
;---------------------------------------------------------------
;---------------------------------------------------------------
; Висновок тактової частоти процесора
;--------------------------------------------------------------- _out proc
mov eax, FREQ
lea di, FREQ_STR
add di, FREQ_MESS_LEN
xor edx, edx; Переклад частоти в ГГц (ділимо на 1000000)
mov ebx, 1000000
div ebx
push edx
call reg_dec_out
mov al, ,
mov [di], al
inc di
pop edx
mov eax, edx
xor edx, edx
mov ebx, 1000
div ebx
call reg_dec_out
lea bp, FREQ_STR
mov cx, 27
call str_out
ret_out endp
;---------------------------------------------------------------
; Висновок фірми-ви...