.


:




:

































 

 

 

 


1. ( Alt+Left Shift)




( Alt+Left Shift)

 

INTTAB SEGMENT AT 0H;

ORG 9H*4; int 9h

KBADDR LABEL DWORD;

INITTAB ENDS

;__________________________________________________

ROMAREA SEGMENT AT 400H; BIOS

ORG 17H;

KBFLAG DB?; Alt+Left Shift

ROMAREA ENDS

;__________________________________________________

CSEG SEGMENT PARA

ASSUME CS:CSEG

ORG 100H

BEGIN: JMP INITZE

KBSAVE DD?; int 9h BIOS

MAIN PROC NEAR

...

CALL KBSAVE;

ASSUME DS:ROMAREA

MOV AX, ROMAREA; DS

MOV DS, AX;

MOV AL, KBFLAG

CMP AL, 00001010B; Alt+LeftShift ?

JNE EXIT;

...

EXIT:

 

IRET

MAIN ENDP

INITZE PROC

ASSUME DS:INTTAB

PUSH DS

MOV AX, INTTAB

MOV DS,AX

CLI;

;

MOV AX, WORD PTR KBADDR

MOV WORD PTR KBSAVE, AX

MOV AX, WORD PTR KBADDR+2

MOV WORD PTR KBSAVE+2, AX

MOV WORD PTR KBADDR, OFFSET MAIN

MOV WORD PTR KBADDR+2, CS

STI;

MOV DX, OFFSET INITZE;

INT 27H

INITZE ENDP

CSEG ENDS

END BEGIN

 

31h 21h 27h. 31h, , , Al DOS. DX , , (16 ).

, MS-DOS INT 21h, . BIOS, , DOS SS:SP DOS. , DOS, , , . , .

BIOS . , 5, 8, 9, 0Bh, 0Ch, 0Dh, 0Eh, 10h, 13h, 14h, 16h, 17h.

3.2

, , . .

3.3 ճ

, .

3.4

3.4.1 .

3.4.2 .3.1.

3.5

3.5.1 .

3.5.2 .

3.5.3 .

3.5.4 , .

3.5.5 .

 






:


: 2015-09-20; !; : 522 |


:

:

, - , ; , - .
==> ...

1275 - | 1309 -


© 2015-2024 lektsii.org - -

: 0.01 .