mov ax,0b800h
mov es,ax
lea bx,msg
mov di,0
mn1:
mov al,[bx]
cmp al,'$'
je exit
mov es:[di],al
inc di
inc bx
mov es:[di],word ptr 0F0h
inc di
jmp mn1
exit:
cmp sec,20
jne time
mov al,0
out 21h,al
mov ax,0h
int 16h
push ds
mov dx, ipsave_8
mov ax, cssave_8
mov ds, ax
mov ah, 25h
mov al, 8h
int 21h
pop ds
push ds
mov dx, ipsave_60
mov ax, cssave_60
mov ds, ax
mov ah, 25h
mov al, 60h
int 21h
pop ds
mov ah,4ch
int 21h
main ENDP
int_8 proc FAR
push ax
push es
mov ax, dseg
mov es,ax
mov ax,word ptr es:cnt
inc ax
cmp ax,18
jne m0
int 60h
mov ax,0
m0:
mov word ptr es:cnt,ax
pop es
pop ax
mov ax,dseg
mov es,ax
jmp dword ptr es:adr_int8
int_8 ENDP
int_60 proc FAR
push ax
push es
mov ax, dseg
mov es,ax
mov es:flag,1
mov ax,word ptr es:sec
inc ax
cmp ax,60
jne ms
mov ax,0
mov word ptr es:sec,ax
jmp mm
ms:
mov word ptr es:sec,ax
jmp m_ex
mm:
mov ax,word ptr es:min
inc ax
cmp ax,60
jne mm_m
mov ax,0
mov word ptr es:min,ax
jmp mh
mm_m:
mov word ptr es:min,ax
jmp m_ex
mh:
mov ax,word ptr es:hour
inc ax
cmp ax,24
jne mh_h
mov ax,0
mov word ptr es:hour,ax
jmp m_ex
mh_h:
mov word ptr es:hour,ax
m_ex:
pop es
pop ax
mov al,20h
out 20h,al
iret
int_60 ENDP
cseg ENDS
END start
В течение 20 секунд программа не реагирует на действия пользователя, лишь выводит в левом верхнем углу экрана счетчик прошедшего с момента старта времени. Те клавиши, которые пользователь нажимает в процессе выполнения программы, записываются в буфер и после размаскирования клавиатуры поступают на исполнение. В частности, при нажатии на Ctrl+Alt+Delete компьютер перезагрузится.
Программа 8. В основной программе замените функцию 25h прерывания DOS 21h установки вектора прерывания эквивалентной процедурой на ассемблере. Позаботьтесь о том, чтобы во время смены вектора аппаратного прерывания не произошло другое аппаратное прерывание.
imask25.asm
sseg SEGMENT STACK
db 64 dup (?)
sseg ENDS
dseg SEGMENT PARA PUBLIC 'DATA'
cnt dw 0h
sec dw 0h
min dw 0h
hour dw 0h
flag dw 0h
adr_int8:
ipsave_8 dw 0h
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.