IBM PC 58059. 8 , , 16 ( IRQ0 ( ). IRQ0 IRQ7 - 8H - 0FH, IRQ8 - IRQ15 70H - 77H.
. 6). IBM PC (, ..), - ( ..).
IRQ0 ( ). IRQ0 IRQ7 - 8H - 0FH, IRQ8 - IRQ15 70H - 77H.
. 6
(IRQ) | |
COM1 | |
COM2 | |
LPT1 | |
CMOS | |
- | |
10-12 | |
- : 20 21.
. 1. Turbo Pascal :
Begin
{ .3,4}
Repeat
Repeat
Until Keypressed; { }
Ch:=ReadKey; { }
Case Ch of
...{ }
End; {Case}
Until Ch=E; { E}
{ .3,4}
End.
Crt.
. 2. Turbo Pascal MS DOS. DOS . , , . , ( ) . Dos - :
Type
Registers=record
Case integer of
0: (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags: Word); {16- . }
1: (AL,AH,BL,BH,CL,CH,DL,DH); {8- . }
End; {Case}
End;
16- 8- .
DOS - :
Intr - :
Intr(< : Byte>,<: Registers>);
MSDOS - 33 ($21):
MSDOS(<: Registers>).
|
|
$21 DOS (85 ). MSDOS Intr $21.
:
Uses dos;
Var r: Registers;
Begin
r.AH:=$30; { AH $21}
MSDOS(r); { $21} {Intr($21,r)}
Writeln ( DOS:, r.AL,.,r.AH);
End.
.3. :
;
Pointer;
, ;
, .2 ;
.
- . Interrupt (), :
Procedure ProcInt (Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
Begin
{ }
End;
Interrupt . , .
. - 12. - , .
. Dos .
GetIntVec - :
GetIntVec (< : Byte>,< : Pointer>);
SetIntVec - :
SetIntVec (< : Byte>,< : Pointer>;
Addr, :
SetIntVec($61,Addr(ProcInt));
.4. , 18,2 . , .. .
BIOS $1C, , . $1C , . , (. .3.).
( ) -. / . 0,055. , 1, , 18 . , ( ), ( , ..).
|
|
.5. , .. . Pascal Mem, MemW MemL. Mem Byte; MemW Word; MemL Longint. , . Word; , . . :
S:= Mem [$0000:$FFFF];
MemW [$4000:$0001]:=3578;
, , Addr, Pointer. Pointer . Pointer Seg(X) Ofs(X ), Word (, ).
1. ?
2. ?
3. ?
4. TP7.0, MSDOS.
5. .
6. .
7. ?
8. 8086 ?
9. 8086 ?
10. ?
11. IBM PC?
2