Смекни!
smekni.com

Монітор використання ресурсів комп'ютера (стр. 3 из 3)

; свободных кластеров

RET

DISC ENDP

Q10SCR PROC NEAR; Процедура прокрутки экрана

; AX установлен при вызове

MOV BH,31; Цвет (07 для ч/б)

SUB CX,CX

MOV DX,184FH

INT 10H; прокрутка экрана

RET

Q10SCR ENDP

Q20CURS PROC NEAR; Процедура установки курсора

MOV AH,02

SUB BH,BH

MOV DH,ROW

MOV DL,COL

INT 10H; Установка курсора

RET

Q20CURS ENDP

MEMORY2 PROC; Процедура анализирования и вывода размера памяти

MOV COL,2

MOV ROW,6

CALL Q20CURS; Установка курсора

LEA DX,MEMMS; Вывод сообщения о памяти

MOV AH,09H

INT 21H

MOV COL,30

MOV ROW,6

CALL Q20CURS; Установка курсора

mov al,15h; Установка для чтения из CMOS

out 70h,al; младшего байта размера памяти

nop

xor ax,ax

in al,71h; Чтение из CMOS размера памяти

mov bx,ax

mov al,16h; Установка для чтения из CMOS

out 70h,al; старшего байта размера памяти

nop

xor ax,ax

in al,71h; Чтение из CMOS размера памяти

shl ax,8

add bx,ax

mov dx,bx

call dec16out; Перевод размера памяти в строку и его вывод

MOV COL,2

MOV ROW,7

CALL Q20CURS; Установка курсора

LEA DX,MEMMS1; Вывод сообщения о расширенной памяти

MOV AH,09H

INT 21H

MOV COL,30

MOV ROW,7

CALL Q20CURS; Установка курсора

mov al,17h; Установка для чтения из CMOS

out 70h,al; младшего байта размера расширенной памяти

nop

xor ax,ax

in al,71h; Чтение из CMOS размера расширенной памяти

mov bx,ax

mov al,18h; Установка для чтения из CMOS

out 70h,al; старшего байта размера расширенной памяти

nop

xor ax,ax

in al,71h; Чтение из CMOS размера расширенной памяти

shl ax,8

add bx,ax

mov dx,bx

call dec16out; Перевод расширенного размера памяти в строку

; и его вывод

RET

MEMORY2 ENDP

dec16out proc near; Процедура перевода 16-битного кода в строку

; DX-число для перевода

dec16out0:

push ds; сохраняем используемые регистры в стеке

push di

push dx

push cx

push ax

; помещение символьных цифр во временный буфер

mov cx,0

mov di, offset cs: tbuff; адрес временного буфера

dec16out1:

push cx; сохранить cx

mov ax,dx

mov dx,0

mov cx,10

div cx; деление на 10

xchg ax,dx; получение остатка

add al,30h; перевод цифры в символ

mov cs: [di],al; поместить символ в буфер

inc di; переход к следующему символу

pop cx; восстановить cx

inc cx; увеличить количество цифр

cmp dx,0; проверка частного на 0

jnz dec16out1; если не равно, продолжать выделение цифр

dec16out2:

dec di; вывод символов буфера в обратном порядке

mov al,cs: [di]

call stdout; Вызов процедуры вывода символа на экран

loop dec16out2

pop ax; восстанавливаем сохраненные регистры из стека

pop cx

pop dx

pop di

pop ds

ret

dec16out endp

stdout proc near; Процедура вывода символа на экран

push dx

mov dl,al;

mov ah,2; функция вывода символа на экран

int 21h; вывод символа

pop dx

ret

tbuff db 255 dup ('$')

stdout endp

CODESG ENDS

END BEGIN