. , , . 16- , DOS, 4AH 21H. ES , : ;--- DOS MOV AH,4AH ; MOV BX,0FFFFH ; INT 21H ;BX AT 88H 15H , - . , 1 . - 512 640 , - . AX. . 64K 64- . 6 , , , B000:0000 (, , A000:0000) , F000:0000 (, , C000:0000). ;--- : CLI ; MOV AX,CS ; AND AX,0FFFH ; 4 MOV ES,AX ; ES MOV DI,0 ;DI MOV CX,10 ; 10 MOV BL,'X' ; 'X' NEXT: MOV DL,ES:[0] ; MOV ES:[0],BL ; 'X' MOV DH,ES:[0] ; MOV ES:[0],DL ; CMP DH,'X' ; , ? JNE GO_AHEAD ; , INC DI ; GO_AHEAD: MOV AX,ES ; ADD AX,1000H ; 64K MOV ES,AX ; ES LOOP NEXT ; STI ;  2. . , . - . - , , . , , . - - . , , , . , (CS:IP) , . CS:IP - . . IRET ( ), , , CS:IP , - . , . , - , . - , . . , DOS BIOS - . , - . , - , , . . . IP, - CS. 1024 - , 256 . - . 0 0000:0000, 1 - 0000:0004, 2 - 0000:0008 .. , - 0000:0020, 8H (- ), A5FE00F0. , IP:CS, 4- F000:FEA5. , 8H. . 1-2 - 21H. 1.2.1 8259. IBM PC Intel 8259. , . 8 - , AT, 16, - IRQ0 IRQ7 ( IRQ0 IRQ15), . 0. 8 AT 8259; IRQ2 IRQ3. 0-7 8H 0FH; AT 8-15 70H 77H. - : . IRQ 0 1 2 / 8 ( AT) 9 IRQ2 ( AT) 10 11 12 13 . ( AT) 14 ( AT) 15 3 COM1 (COM2 AT) 4 COM2 ( PCjr, COM1 AT) 5 (LPT2 AT) 6 7 LPT1 [2.1.0] , , . [3.1.0] - ; , , - ( ). 8259 , - . (IRR) , . - . (ISR). - . , , (IMR), . - 21H [1.2.2] 20H [1.2.3]. 1.2.2 / . , [1.2.1]. ; - , ( ) . . , - . , , . . , . , / - . . ( 9) . 0, , . 1, . , 1, CLI. - STI. - . 18.2 - , , . , . - , STI, . , CLI STI, , . 21H, (IMR). 8259 AT (IRQ8-15) A1H. , , . . - . , - . ;--- 6- MOV AL,01000000B ; 6 OUT 21H,AL ; . MOV AL,0 ; OUT 21H,AL ; IMR 1.2.3 . - . -, , , , , - , . , , . , , , [1.3.4]. INT 80H WRITE_VERTICALLY ( - , , - ). - . . BIOS , , ( IRET). , . . [2.1.0], 18.2 - . , , . - , . - Ctrl-Break [3.2.8], PrtSC [3.2.9] [7.2.5]. [6.3.1] [7.1.8] - / . , , - , - . [1.2.4] - , - . . 25H 21H . . (CS), (IP). , , DS, DX ( ). - AL . RET, IRET. (IRET , , RET . , IRET, .) , 25H - , , , . ;--- PUSH DS ; DS MOV DX,OFFSET ROUT ; DX MOV AX,SEG ROUT ; MOV DS,AX ; DS MOV AH,25H ; MOV AL,60H ; INT 21H ; POP DS ; DS ;--- ROUT PROC FAR PUSH AX ; . . POP AX ; MOV AL,20H ; OUT 20H,AL ; IRET ROUT ENDP 2 : MOV AL,20H OUT 20H,AL , (20H) . - , 8259 - , , . , Ctrl-Alt-Del . , , , 1CH, - [2.1.7]. , - . - , . 35 21H , ES, BX. , , , 25H ( ) . : ;--- : KEEP_CS DW 0 ; KEEP_IP DW 0 ; ;--- MOV AH,25H ; MOV AL,1CH ; INT 21H ; ES, BX MOV KEEP_IP,BX ; MOV KEEP_CS,ES ; ; --- CLI PUSH DS ;DS MOV DX,KEEP_IP ; MOV AX,KEEP_CS ; MOV DS,AX ; MOV AH,25H ; MOV AL,1CH ; INT 21H ; POP DS ; DS STI , . , , DS - ( ). , Ctrl-Break , , Ctrl-Break [3.2.8]. . MS DOS . 4. , 16H ES:BX: ;--- 16H SUB AX,AX ; ES MOV ES,AX ; MOV DI,16H ; DI SHL DI,1 ; 2 SHL DI,1 ; 2 MOV BX,ES:[DI] ; BX MOV AX,ES:[DI]+2 ; ES MOV ES,AX ; , DOS. - DOS. 1.2.4 . , - . , ( ). , - 0 16H BIOS [3.1.3]. DOS BIOS . - 16H, , , , , . , BIOS DOS , - BIOS , DOS . , / - , DOS BIOS. , 16H, - 16H. 16H - , , 60H. 60H, - 16H; - 16H, , - 16H, - , , 16H. , , , - 60H. . 1-3 . - : 1. , 60H. 2. 16H 60H. 3. 16H, . 4. , [1.3.4].  3. . , , . - . - . ("") ( , ). . DOS COMMAND.COM, - COPY DIR. : .EXE .COM. 64K, , DOS . - COM , . COM - . , , - (PSP). - 100H , DOS ; PSP - / [5.3.5]. EXE DS ES PSP. COM CS PSP. , MS DOS 3.0 , PSP. 62H 21H; , BX . , PSP, , DOS, . - RET , - ( IP) PSP, . [1.3.4] [1.3.6]. PSP: 0H DW DOS 2H DW 4H DW 6H DD DOS AH DD (IP,CS) EH DD Ctrl-Break (IP,CS) 12H DD 16H 22 2CH DW 2EH 46 5CH 16 1 ( FCB) 6CH 20 2 ( FCB) 80H 128 DTA / 1.3.1 . MS DOS , , COMMAND.COM - , - . . - , . : ZSEG SEGMENT ; ZSEG ENDS IBM PC ZSEG , . - . MOV AX,ZSEG AX . , , . , . MS DOS - 640K . - , , , - (64K). , DOS . - . MS DOS , . , . DOS , DOS, , [1.3.4] [1.3.2]. , ( ) - . , , DOS 16- - , . 5 - : 0 ASCII 90 - , ASCII 77. 1-2 0 3-4 16- DOS . - . - DOS , , , .., . 1-4. - DOS, - . , DOS . MS DOS , 48H 4AH 21H. 48H , 49H - . ("SETBLOCK") - , ; . . . - . . 21H 16- , . , ( 0 ). , 16. , , BX 16- (), . - , , AX , . : 7 8 9 7 8, - 7 9, . , 1024 . BX 16- - , AX:0 (.. 0 , AX). , - . AX ES. DOS - . ;--- 1024 MOV AH,48H ; MOV BX,64 ; 64 INT 21H ; JC ERROR ; MOV BLOCK_SEG,AX; . ;--- MOV AX,BLOCK_SEG ; MOV ES,AX ; ES MOV AH,49H ; INT 21H ; , 4AH. ES - PSP, .. , . ES . SETBLOCK ( ES ), - . BX 16- . "" . IBM PC , , , - "ZSEG". - . - , , - , . - ES DS ; COM CS , EXE . ;--- (ES ) MOV BX,ZSEG ; # + 1 MOV AX,ES ; # SUB BX,AX ; MOV AH,4AH ; INT 21H ; JC MEMORY_ERROR ; ;--- ZSEG SEGMENT ZSEG ENDS 1.3.2 . MS DOS EXEC ( 4BH 21H), . "", - "". . 3.0 SHELL. . SHELL _. , . _ , COMMAND.COM . MS DOS, , - EXIT. SHELL. - , . - , , . . . 4BH , , - : 1. , . 2. . 3. , , - . 4. SS SP . MS DOS - , . , . [1.3.1] SETBLOCK. , BX 16- , 4AH AH 21H, , . , ES:BX 14- , - : DW DD DD FCB DD FCB - , - , MS DOS . - , - CONFIG.SYS. , VERIFY = ON. , ASCII 0, .. - ASCII 0. (.. 16 - ). , , , 2-- . , , "- ". ASCII 0 2 . 4 . " " - - , . - DOS EDITOR A:CHAPTER1\ NOTES.MS. A . EXEC, - , . , , <> (ASCII 13). 8 (FCB). FCB , . , 8 ASCII 0. [5.3.5] , FCB. MS DOS 2.0, - FCB FCB, (file handler), , FCB ( [5.3.5]). , , . . DS:DX EXEC. - ASCIIZ, .. , , ASCII 0. , B:\NEWDATA\FILER.EXE<NUL>, <NUL> - ASCII 0. , . - , , , . - . DS , , - MOV AX,DSEG MOV DS,AX. SS SP , 0 AL, " " (EXEC [1.3.5]). 4AH AH 21H. - , "" - . MS DOS , . [7.2.5] . , , AX 1 - , 2 - , 5 - , 8 - , 10 - 11 - . - , . . , , . - , () - SS SP. ;--- FILENAME DB 'A:TRIAL.EXE',0 ; TRIAL.EXE PARAMETERS DW 7DUP(0) ; KEEP_SS DW 0 ; SS KEEP_SP DW 0 ; SP ;--- MOV BX,ZSEG ; # MOV AX,ES ; # SUB BX,AX ; MOV AH,4AH ; INT 21H ; ;--- MOV AX,SEG PARAMETERS ; ES - MOV ES,AX ; MOV BX,OFFSET PARAMETERS ; BX - ;--- SS SP MOV KEEP_SS,SS ; SS MOV KEEP_SP,SP ; SP ;--- MOV DX,OFFSET FILENAME ; - DX MOV AX,SEG FILENAME ; - DS MOV DS,AX ; ;--- MOV AH,4BH ; EXEC MOV AL,0 ; " " INT 21H ; ;---, MOV AX,DSEG ; DS MOV DS,AX ; MOV SS,KEEP_SS ; SS MOV SP,KEEP_SP ; SP ;--- ZSEG SEGMENT ;. [1.3.1] ZSEG ENDS 1.3.3 . DOS, DIR CHKDSK. , COMMAND.COM. , . . 3.0 COMMAND.COM SHELL. SHELL [1.3.2]. COMMAND.COM - , SHELL, MS DOS. DOS, . EXIT. . , [1.3.2] . , , , ASCII 13. COMMAND.COM /C (. " " MS DOS). , - COMMAND.COM, . A:, COMMAND.COM