При этом:
• Номер прерывания – 08h
• Способ перехвата – прямым доступом к вектору прерывания
• Способ отображения – инверсия атрибутов символов всего экрана
Программа не работает, ничего не происходит после запуска! Подскажите плиз почему?
Программа:
model small
stack 100h
.286
.data
save dw 0
cveta db 0001b,0010b,0011b,0100b,0101b,0110b,0111b,1000b,1001b,1010b,1011b,1100b,1101b,11
10b,1111b
.code
my_proc proc
pusha
mov ax,0B800h
mov es,ax
mov di,0
mov cx,2000
m1:
mov ax,es:[di]
and ah,11110000b
cmp bx,15
jbe m2
mov bx,0
m2:
add ah,cveta[bx]
mov es:[di],ax
add di,2
loop m1
popa
pop es
pop ds
pushf
call cs:[save]
iret
my_proc endp
start:
mov ax,@data
mov ds,ax
push ds
mov ax,0
mov es,ax
push es
cli
mov ah,35h
mov al,09h
int 21h
mov ax,es:[bx]
mov word ptr cs:[save],ax
mov ax,es:[bx+2]
mov word ptr cs:[save+2],ax
mov ah,25h
mov al,09h
mov dx,offset my_proc
mov ax,cs
mov ds,ax
int 21h
sti
cli
mov ah,25h
mov dx,word ptr cs:[save]
mov ds,word ptr cs:[save+2]
int 21h
sti
mov ax,4C00h
int 21h
end start