Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:СПО (Лупин) / Лабы / Asm / LAB8
.TXT ‹ Ў®а в®а п а Ў®в N 8
ЋЇҐа жЁЁ б д ©« ¬Ё ў D O S
–Ґ«м а Ў®вл: €§г票Ґ ®б®ўле д ©«®ўле ®ЇҐа жЁ©, ®аЈ Ё§ жЁп
Ї®б«Ґ¤®ў ⥫쮣® Ё ЇаאַЈ® ¤®бвгЇ Є д ©« ¬.
Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
Љ Є Ё§ўҐбв®, ¤«п 㤮Ўбвў а Ў®вл б Ў®«миЁ¬ Є®«ЁзҐбвў®¬ а §-
®а®¤ле д ©«®ў ў DOS ЁбЇ®«м§гҐвбп ¤аҐў®ўЁ¤ п бвагЄвга Є в «®-
Ј®ў. Љ в «®Ј ЇаҐ¤бв ў®пҐв б®Ў®© д ©« ®Ўлз® ®в®бЁвҐ«м® ҐЎ®«м-
и®Ј® а §¬Ґа , ў Є®в®а®¬ ᮤҐа¦Ёвбп ЇҐаҐзҐм ўбҐе Ї®¤Є в «®Ј®ў
б«Ґ¤го饣® га®ўп Ё д ©«®ў, ўе®¤пйЁе ў ¤ л© Є в «®Ј. Љ ¦¤®¬г
Ї®¤Є в «®Јг Ё«Ё д ©«г ®вў®¤Ёвбп ®¤ § ЇЁбм а §¬Ґа®¬ 32 Ў ©в, ў
Є®в®аго DOS § ®бЁв Ёд®а¬ жЁо ® д ©«Ґ: Ё¬п, з «мл© ¤аҐб
¤ЁбЄҐ (®¬Ґа Є« бвҐа ), ¤ в Ё ўаҐ¬п б®§¤ Ёп, ¤«Ё ў Ў ©в е,
в Є¦Ґ Ў®а е а ЄвҐаЁбвЁЄ д ©« , §лў Ґ¬ле ҐЈ® ваЁЎгв ¬Ё. Ља®¬Ґ
§ ЇЁбҐ©, ®в®бпйЁебп Є Ё¦Ґ«Ґ¦ йЁ¬ Є в «®Ј ¬ Ё д ©« ¬, Є ¦¤л© Є -
в «®Ј ᮤҐа¦Ёв ҐйҐ ¤ўҐ § ЇЁбЁ: ® ᥡҐ б ¬®¬ Ё ® தЁвҐ«мбЄ®¬ Є -
в «®ЈҐ.
ЂваЁЎгвл д ©« (ў ⮬ зЁб«Ґ д ©« Є в «®Ј ) еа пвбп ў бЇҐ-
жЁ «м® ®вўҐ¤Ґ®¬ ¤«п Ёе Ў ©вҐ ваЁЎгв®ў Ё Ё¬Ґов б«Ґ¤гойЁҐ § -
票п:
01h - д ©« в®«мЄ® ¤«п з⥨п, ¬®¤ЁдЁЄ жЁп Ё«Ё г¤ «ҐЁҐ д ©«
§ ЇаҐй Ґвбп DOS;
02h - бЄалвл© д ©« (Ґ § ¬Ґз Ґ¬л© Є®¬ ¤®© DIR Ё ҐЄ®в®ал¬Ё
дгЄжЁп¬Ё DOS);
04h - бЁбвҐ¬л© д ©« (®Ўлз® б Їа®Ја ¬¬ ¬Ё б ¬®© DOS);
08h - § ЇЁбм ® д ©«Ґ ЇаҐ¤бв ў«пҐв б®Ў®© ¬ҐвЄг ⮬ . ’ Є п § -
ЇЁбм (®¤ ўҐбм ⮬) ¬®¦Ґв бгйҐбвў®ў вм в®«мЄ® ў Є®а-
Ґў®¬ Є в «®ЈҐ;
10h - д ©« ЇаҐ¤бв ў«пҐв б®Ў®© Є в «®Ј;
20h - д ©« Ї®б«Ґ б®§¤ Ёп Ё«Ё ¬®¤ЁдЁЄ жЁЁ Ґ Ўл« аеЁўЁа®ў Ё,
б«Ґ¤®ў ⥫м®, 㦤 Ґвбп ў аеЁў жЁЁ ( ваЁЎгв аеЁў жЁЁ).
ЏаЁ б®§¤ ЁЁ ®ў®Ј® д ©« DOS б ¬ ®влбЄЁў Ґв ¤ЁбЄҐ бў®-
Ў®¤®Ґ ¬Ґбв® Ё § з Ґв ҐЈ® ®ў®¬г д ©«г, б®§¤ ў п Ё § Ї®«пп
ᮮ⢥вбвўгойго н⮬г д ©«г § ЇЁбм ў Є в «®ЈҐ. •®вп ¬ЁЁ¬ «м®©
Ї®ажЁҐ© Ёд®а¬ жЁЁ, ЇҐаҐ¤ ў Ґ¬®© Є®ва®««Ґа®¬ ¤ЁбЄ ў Їа®жҐббҐ
§ ЇЁбЁ Ё«Ё з⥨п д ©« , пў«пҐвбп ᥪв®а (512 Ў ©в) (Їа®Ја ¬¬л
BIOS а Ў®в ов б ᥪв®а ¬Ё), д ©«®ў п бЁб⥬ § з Ґв ¬Ґбв®
¤ЁбЄҐ 楫묨 Є« бвҐа ¬Ё. ђ §¬Ґа Є« бвҐа ЈЁЎЄ®¬ ¤ЁбЄҐ б®бв ў-
«пҐв 2 ᥪв®а (1 ЄЎ ©в); ¦ҐбвЄ®¬ ¤ЁбЄҐ ў Є« бвҐа ¬®Јгв ўе®-
¤Ёвм 4-8 ᥪв®а®ў. ’ ЄЁ¬ ®Ўа §®¬, ¬ЁЁ¬ «мл© дЁ§ЁзҐбЄЁ© а §¬Ґа
д ©« , ¤ ¦Ґ Ґб«Ё ¤ лҐ ў Ґ¬ § Ё¬ ов «Ёим ҐбЄ®«мЄ® Ў ©в, б®б-
в ў«пҐв 1 Є« бвҐа. Ћ¤ Є® ў § ЇЁбЁ Є в «®Ј гЄ §лў Ґвбп Ґ дЁ§Ё-
зҐбЄ п, «®ЈЁзҐбЄ п ¤«Ё д ©« , в® Ґбвм ®Ў'Ґ¬ ᮤҐа¦ йЁебп ў
Ґ¬ ¤ ле ў Ў ©в е.
Џа®жҐ¤га ®Ўа йҐЁп Є д ©«г ў ®ЎйҐ¬ б«гз Ґ а бЇ ¤ Ґвбп
б«Ґ¤гойЁҐ ®ЇҐа жЁЁ:
- б®§¤ ЁҐ д ©« б § ¤ л¬ Ё¬ҐҐ¬ ў гЄ § ®¬ Є в «®ЈҐ Ё«Ё
®вЄалвЁҐ д ©« , Ґб«Ё ® Ўл« б®§¤ а ҐҐ;
- § ЇЁбм ў д ©« Ё«Ё з⥨Ґ Ё§ д ©« ўбҐЈ® ᮤҐа¦Ё¬®Ј®, «ЁЎ® ҐЈ®
з бвЁ;
- § ЄалвЁҐ д ©« .
Ља®¬Ґ ЇҐаҐзЁб«Ґле, Ё¬ҐҐвбп ҐйҐ жҐ«л© ап¤ ўбЇ®¬®Ј ⥫мле
®ЇҐа жЁ©:
- г¤ «ҐЁҐ д ©« ;
- Ї®«г票Ґ Ё«Ё гбв ®ўЄ ҐЈ® ваЁЎгв®ў;
- Ї®«г票Ґ Ё«Ё Ё§¬ҐҐЁҐ ¤ вл Ё ўаҐ¬ҐЁ б®§¤ Ёп д ©« ;
- Ї®ЁбЄ д ©« б § ¤ л¬ Ё¬ҐҐ¬.
‘гйҐбвўгҐв 2 бЇ®б®Ў ўлЇ®«ҐЁп ®ЇҐа жЁ© б д ©« ¬Ё:
- б ЁбЇ®«м§®ў ЁҐ¬ Ў«®Є®ў гЇа ў«ҐЁп д ©« ¬Ё ( FCB, File Control
Block);
- б ЁбЇ®«м§®ў ЁҐ¬ ¤ҐбЄаЁЇв®а®ў д ©«®ў (handle).
Ѓ«®Є гЇа ў«ҐЁп д ©« ¬Ё ЇаҐ¤бв ў«пҐв б®Ў®© 37-Ў ©вго в Ў«Ё-
жг, ᮤҐа¦ йго Ёд®а¬ жЁо ® д ©«Ґ: Ё¬п Ё а биЁаҐЁҐ д ©« , ҐЈ®
а §¬Ґа, ¤«Ёг § ЇЁбҐ© ў д ©«Ґ, ®¬Ґа ⥪г饩 § ЇЁбЁ Ё в.¤. ќв
в Ў«Ёж а §¬Ґй Ґвбп ў Ї ¬пвЁ, ®вў®¤Ё¬®© Їа®Ја ¬¬Ґ. „«п ўлЇ®«ҐЁп
Є Є®©-«ЁЎ® ®ЇҐа жЁЁ б д ©«®¬, Ґ®Ўе®¤Ё¬® § Ї®«Ёвм FCB ᮮ⢥вбв-
ўго饩 Ёд®а¬ жЁҐ© ( ЇаЁ¬Ґа, Ё¬ҐҐ¬ ®вЄалў Ґ¬®Ј® д ©« ) Ё ўл§-
ў вм вॡ㥬го дгЄжЁо.
€бЇ®«м§®ў ЁҐ FCB Ўл«® е а ЄвҐа® ¤«п ЇҐаўле ўҐабЁ© DOS (¤®
2.0). FCB - бвагЄвгал Ё ᮮ⢥вбвўгойЁҐ дгЄжЁЁ DOS Ґ Ї®¤¤Ґа¦Ё-
ў о⠤ॢ®ўЁ¤ле Є в «®Ј®ў, Ё Ї®н⮬㠮Ё ¬®Јгв а Ў®в вм в®«мЄ® б
д ©« ¬Ё Ё§ ⥪г饣® Є в «®Ј ⥪г饣® ¤ЁбЄ . ‘ Ёе Ї®¬®ймо, ҐбвҐб-
⢥®, Ґ«м§п б®§¤ ў вм Ё«Ё г¤ «пвм б ¬Ё Є в «®ЈЁ. ‚ бв®п饥
ўаҐ¬п дгЄжЁЁ FCB ЁбЇ®«м§говбп ।Є®.
„агЈ®© бЇ®б®Ў ®ЇҐа жЁ© б д ©« ¬Ё ЇаҐ¤Ї®« Ј Ґв ЁбЇ®«м§®ў ЁҐ
¤ҐбЄаЁЇв®а®ў (д ©«®ўле Ё¤ҐЄб®ў, д ©«®ўле ®ЇЁб ⥫Ґ©), Є®в®алҐ
ЇаҐ¤бв ў«пов б®Ў®© ®¬Ґа бЁб⥬ле ®Ў« б⥩, а бЇ®« Ј Ґ¬ле ў
®ЇҐа вЁў®© Ї ¬пвЁ Ё § ЄаҐЇ«пҐ¬ле § ®вЄалў Ґ¬л¬Ё д ©« ¬Ё. ЋЎа -
饨Ґ Є д ©«г ( в Є¦Ґ Є бв ¤ а⮬㠯ҐаЁдҐаЁ©®¬г гбва®©бвўг -
вҐа¬Ё «г, ЇаЁвҐаг Ё в.¤.) ®бгйҐбвў«пҐвбп Ї® ®¬Ґаг ¤ҐбЄаЁЇв®а ,
Ё¤ҐвЁдЁжЁагойЁ© ¤ л© д ©« Ё«Ё гбва®©бвў®. „ҐбЄаЁЇв®а § з -
Ґвбп д ©«г бЁб⥬®© ЇаЁ ҐЈ® ®вЄалвЁЁ Ё ®бў®Ў®¦¤ Ґвбп ЇаЁ § ЄалвЁЁ
д ©« .
„«п ®Ў«ҐЈзҐЁп ®аЁҐв жЁЁ ў ¬®Ј®зЁб«Ґле дгЄжЁпе DOS,
®бгйҐбвў«пойЁе ®ЇҐа жЁЁ ¤ д ©« ¬Ё, Ёе 㤮Ў® а §ЎЁвм б¬лб«®-
ўлҐ ЈагЇЇл.
1. ‘®§¤ ЁҐ, ®вЄалвЁҐ Ё § ЄалвЁҐ д ©« :
3‘h - б®§¤ вм д ©«;
3Dh - ®вЄалвм д ©«;
3Eh - § Єалвм д ©«;
41h - г¤ «Ёвм д ©«.
2. ‡ ЇЁбм Ё з⥨Ґ ¤ ле:
42h - гбв ®ўЁвм гЄ § ⥫м;
3Fh - зЁв вм Ё§ д ©« Ё«Ё гбва®©бвў ;
40h - § ЇЁб вм ў д ©« Ё«Ё гбва®©бвў®.
3. €§¬ҐҐЁҐ е а ЄвҐаЁбвЁЄ д ©« :
43h - Ї®«гзЁвм Ё«Ё гбв ®ўЁвм ваЁЎгвл д ©« ;
56h - ЇҐаҐЁ¬Ґ®ў вм д ©«;
57h - Ї®«гзЁвм Ё«Ё гбв ®ўЁвм ¤ вг Ё ўаҐ¬п б®§¤ Ёп
д ©« .
”гЄжЁп 3‘h Ї®§ў®«пҐв б®§¤ вм д ©« б § ¤ ®© бЇҐжЁдЁЄ жЁҐ©.
‘ЇҐжЁдЁЄ жЁп д ©« , в.Ґ. Їгвм Є Ґ¬г ў¬ҐбвҐ б Ё¬ҐҐ¬ д ©« Ё а б-
иЁаҐЁҐ¬ гЄ §лў Ґвбп ў ўЁ¤Ґ бЁ¬ў®«м®© бва®ЄЁ, § ўҐаи о饩бп ¤ў®-
Ёзл¬ г«Ґ¬ ("бва®ЄЁ ASCIIZ"). Ђ¤аҐб нв®© бва®ЄЁ § ®бЁвбп ў аҐ-
ЈЁбвл DS:DX. ‚ ॣЁбвॠ‘X § ¤ Ґвбп Є®¤ ваЁЎгв®ў б®§¤ ў Ґ¬®Ј®
д ©« :
0 - ®вбгвбвўЁҐ ваЁЎгв®ў;
1 - в®«мЄ® ¤«п з⥨п;
2 - бЄалвл©;
4 - бЁб⥬л©;
8 - ¬ҐвЄ ⮬ ;
20h - ваЁЎгв аеЁў .
ЏаЁ Ё§¬ҐҐЁЁ ваЁЎгв®ў д ©« ў ॣЁбвॠAL ¤® § ¤ вм аҐ-
¦Ё¬ ¤®бвгЇ 1.
‚ ॣЁбвॠAX ў®§ўа й Ґвбп ¤ҐбЄаЁЇв®а б®§¤ ®Ј® д ©« , Є®-
в®ал¬ ¬®¦® ў ¤ «мҐ©иҐ¬ Ї®«м§®ў вмбп ¤«п § ЇЁбЁ ў д ©« Ё«Ё звҐ-
Ёп Ё§ ҐЈ® (б¬. ЇаЁ¬Ґа).
…б«Ё д ©« б § ¤ ®© бЇҐжЁдЁЄ жЁҐ© 㦥 бгйҐбвўгҐв, в® дгЄ-
жЁп 3‘h гЁз⮦ Ґв Ё¬ҐойЁ©бп д ©« Ё б®§¤ Ґв ®ўл© б ⥬ ¦Ґ Ё¬ҐҐ¬.
”гЄжЁп 3DH Ї®§ў®«пҐв ®вЄалвм 㦥 Ё¬ҐойЁ©бп д ©«. ‚ ॣЁбв-
а е DS:DX § ¤ Ґвбп бЇҐжЁдЁЄ жЁп д ©« (Їгвм Ё Ё¬п д ©« б а биЁ-
२Ґ¬) ў ўЁ¤Ґ бва®ЄЁ ASCIIZ; ў ॣЁбвॠAL - ०Ё¬ ¤®бвгЇ ( 0,1
Ё«Ё 2). ‚ ¤ «мҐ©иҐ¬ § ЇЁбм ў д ©« Ё з⥨Ґ Ё§ ҐЈ® ®бгйҐбвў«пҐв-
бп б Ї®¬®ймо ¤ҐбЄаЁЇв®а , ў®§ўа й Ґ¬®Ј® дгЄжЁҐ© ў ॣЁбвॠAX.
„«п Є ¦¤®Ј® ®вЄалв®Ј® д ©« DOS б®§¤ Ґв Ё Ї®¤¤Ґа¦Ёў Ґв гЄ -
§ ⥫м, Є®в®ал© ЇаҐ¤бв ў«пҐв б®Ў®© ®в®бЁвҐ«мл© ®¬Ґа Ў ©в ў
д ©«Ґ, зЁ п ®в Є®в®а®Ј® Ўг¤гв ўлЇ®«пвмбп § ЇЁбм Ё«Ё з⥨Ґ
¤ ле. “Є § ⥫м в®«мЄ® зв® ®вЄалв®Ј® Ё«Ё б®§¤ ®Ј® д ©« Ї®§Ё-
жЁ®ЁагҐвбп бЁб⥬®© з «® д ©« , дгЄжЁЁ звҐЁп Ё«Ё § ЇЁбЁ
ᬥй ов ҐЈ® зЁб«® Їа®зЁв ле Ё«Ё § ЇЁб ле Ў ©в. ’ ЄЁ¬ ®Ўа -
§®¬, Ї®ўв®а®Ґ ЁбЇ®«м§®ў ЁҐ дгЄжЁЁ звҐЁп Ё«Ё § ЇЁбЁ ॠ«Ё§гҐв
Ї®б«Ґ¤®ў ⥫мл© ¤®бвгЇ Є д ©«г. „«п ®аЈ Ё§ жЁЁ ЇаאַЈ® ¤®бвгЇ
Є Їа®Ё§ў®«м®¬г ¬Ґбвг д ©« ЇаҐ¤гᬮвॠдгЄжЁп 42h, Ї®§ў®«по-
й п § ¤ вм Ї®«®¦ҐЁҐ гЄ § вҐ«п ®в®бЁвҐ«м® з « д ©« (¤«п
нв®Ј® ¤® § ¤ вм AL = 0), Є®ж д ©« (AL = 2) Ё«Ё ⥪г饣® Ї®-
«®¦ҐЁп гЄ § ⥫п (AL = 1). ‘ ¬® § 票Ґ ᬥ饨п гЄ § ⥫п (б®
§ Є®¬) § ®бЁвбп ў ॣЁбвал CX (бв аи п Ї®«®ўЁ ) Ё DX (¬« ¤и п).
”гЄжЁЁ 3Fh Ё 40h ЁбЇ®«м§говбп ¤«п звҐЁп Ё§ д ©« Ё«Ё гбв-
а®©бвў (дгЄжЁп 3Fh) Ё § ЇЁбЁ ў д ©« Ё«Ё гбва®©бвў® (дгЄжЁп
40h). ЏҐаҐ¤ ўл§®ў®¬ дгЄжЁЁ ў ॣЁбва BX Ї®¬Ґй Ґвбп ¤ҐбЄаЁЇв®а, ў
ॣЁбва CX - зЁб«® зЁв Ґ¬ле Ё«Ё § ЇЁблў Ґ¬ле Ў ©в, ў ॣЁбвал
DS:DX - ¤аҐб ЎгдҐа ў Їа®Ја ¬¬Ґ Ї®«м§®ў ⥫п:
.........
MOV CH, 80 ; бв®«мЄ® зЁв вм
MOV DX, offset bufin ;бо¤
.........
; Ї®«п ¤ ле
.........
bufin db 80 dup (' ') ; ЎгдҐа ўў®¤
„«Ё ⥪бв®ў®© бва®ЄЁ string ®ЇаҐ¤Ґ«пҐвбп Є Є:
stringlen equ $ - string
ЏаЁ ўлў®¤Ґ Їа®зЁв ле ¤ ле нЄа ЁбЇ®«м§гҐвбп
дгЄжЁп § ЇЁбЁ 40h. ‚ ॣЁбва BX ¤®«¦Ґ Ўлвм § ЇЁб ¤ҐбЄаЁЇв®а
бв ¤ ав®Ј® ўлў®¤ : stdout, ў ॣЁбва DX - ®вЄг¤ ўлў®¤Ёвм
(offset bufin).
‡ ¤ ЁҐ а Ў®вг
Џ®¤Ј®в®ўЁвм Ё ®в« ¤Ёвм б«Ґ¤гойЁҐ Їа®Ја ¬¬л:
1. ‘®§¤ Ёп д ©« б Ё¬ҐҐ¬ XXXXXX.LAB, Ј¤Ґ XXXXXX - ў и д ¬Ё«Ёп.
2. ‡ ЇЁб вм ў д ©« бва®Єг: - д ¬Ё«Ёп, ЈагЇЇ , ®¬Ґа.
3. Џа®зЁв вм д ©« Ё ўлўҐб⨠ᮤҐа¦Ё¬®Ґ нЄа .
4. €§¬ҐЁвм ваЁЎгвл д ©« - ᤥ« вм ҐЈ® бЄалвл¬.
5. ‚ ०Ё¬Ґ Їаאַ© ¤аҐб жЁЁ § ЇЁб вм ў д ©« ¬Ґбв® н«Ґ¬Ґв 5
жЁдаг 8.
6. Џа®зЁв вм Ё§ д ©« н«Ґ¬Ґвл б ®¬Ґа ¬Ё 3 - 10 Ё ўлўҐбвЁ Ёе
нЄа .
ЏаЁ¬Ґа
; ‘®§¤ ЁҐ д ©«
; ЋЇаҐ¤Ґ«ҐЁп
cr equ 0Dh ;‚®§ўаўв Є аҐвЄЁ
lf equ 0Ah ;ЏҐаҐў®¤ бва®ЄЁ
text segment 'code'
assume CS:text,DS:data
myproc proc
mov AX,data
mov DS,AX
; ‘®§¤ ¤Ё¬ д ©«
mov AH,3Ch ;”гЄжЁп б®§¤ Ёп д ©«
mov CX,0 ;ЃҐ§ ваЁЎгв®ў
mov DX,offset fname ;Ђ¤аҐб Ё¬ҐЁ д ©«
int 21h
mov handle,AX ;‘®еа Ё¬ ¤ҐбЄаЁЇв®а д ©«
; ‡ ЇЁиҐ¬ бва®Єг ў д ©«
mov AH,40h ;”гЄжЁп § ЇЁбЁ
mov BX,handle ;„ҐбЄаЁЇв®а
mov CX,stringln ;„«Ё бв®аЄЁ
mov DX,offset string ;Ђ¤аҐб бва®ЄЁ
int 21h
; ‡ Єа®Ґ¬ д ©« (Ґв Ґ®Ўе®¤Ё¬®бвЁ, Ґб«Ё д ©« Ґ ¤® зЁв вм
; Ї®ўв®а®)
mov AH,3Eh ;”гЄжЁп § ЄалвЁп
mov BX,handle ;„ЁбЄаЁЇв®а
int 21h
; ‡ ўҐаиЁ¬ Їа®Ја ¬¬г
outprog: mov AX,4C00h ;”гЄжЁп § ўҐа襨п, Є®¤
int 21h
myproc endp
text ends
; Џ®«п ¤ ле
data segment
string db '’ҐЄбв',cr,lf ;‘ва®Є ¤«п § ЇЁбЁ ў д ©«
stringln equ $-string ;…Ґ ¤«Ё
handle dw ? ;џзҐ©Є ¤«п ¤ҐбЄаЁЇв®а
fname db 'MYFILE.001',0 ;€¬п д ©« ў
;д®а¬ ⥠ASCIIZ
data ends
stack segment para stack 'STACK'
db 128 dup (?)
stack ends
end myproc
ЋЇҐа жЁЁ б д ©« ¬Ё ў D O S
–Ґ«м а Ў®вл: €§г票Ґ ®б®ўле д ©«®ўле ®ЇҐа жЁ©, ®аЈ Ё§ жЁп
Ї®б«Ґ¤®ў ⥫쮣® Ё ЇаאַЈ® ¤®бвгЇ Є д ©« ¬.
Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
Љ Є Ё§ўҐбв®, ¤«п 㤮Ўбвў а Ў®вл б Ў®«миЁ¬ Є®«ЁзҐбвў®¬ а §-
®а®¤ле д ©«®ў ў DOS ЁбЇ®«м§гҐвбп ¤аҐў®ўЁ¤ п бвагЄвга Є в «®-
Ј®ў. Љ в «®Ј ЇаҐ¤бв ў®пҐв б®Ў®© д ©« ®Ўлз® ®в®бЁвҐ«м® ҐЎ®«м-
и®Ј® а §¬Ґа , ў Є®в®а®¬ ᮤҐа¦Ёвбп ЇҐаҐзҐм ўбҐе Ї®¤Є в «®Ј®ў
б«Ґ¤го饣® га®ўп Ё д ©«®ў, ўе®¤пйЁе ў ¤ л© Є в «®Ј. Љ ¦¤®¬г
Ї®¤Є в «®Јг Ё«Ё д ©«г ®вў®¤Ёвбп ®¤ § ЇЁбм а §¬Ґа®¬ 32 Ў ©в, ў
Є®в®аго DOS § ®бЁв Ёд®а¬ жЁо ® д ©«Ґ: Ё¬п, з «мл© ¤аҐб
¤ЁбЄҐ (®¬Ґа Є« бвҐа ), ¤ в Ё ўаҐ¬п б®§¤ Ёп, ¤«Ё ў Ў ©в е,
в Є¦Ґ Ў®а е а ЄвҐаЁбвЁЄ д ©« , §лў Ґ¬ле ҐЈ® ваЁЎгв ¬Ё. Ља®¬Ґ
§ ЇЁбҐ©, ®в®бпйЁебп Є Ё¦Ґ«Ґ¦ йЁ¬ Є в «®Ј ¬ Ё д ©« ¬, Є ¦¤л© Є -
в «®Ј ᮤҐа¦Ёв ҐйҐ ¤ўҐ § ЇЁбЁ: ® ᥡҐ б ¬®¬ Ё ® தЁвҐ«мбЄ®¬ Є -
в «®ЈҐ.
ЂваЁЎгвл д ©« (ў ⮬ зЁб«Ґ д ©« Є в «®Ј ) еа пвбп ў бЇҐ-
жЁ «м® ®вўҐ¤Ґ®¬ ¤«п Ёе Ў ©вҐ ваЁЎгв®ў Ё Ё¬Ґов б«Ґ¤гойЁҐ § -
票п:
01h - д ©« в®«мЄ® ¤«п з⥨п, ¬®¤ЁдЁЄ жЁп Ё«Ё г¤ «ҐЁҐ д ©«
§ ЇаҐй Ґвбп DOS;
02h - бЄалвл© д ©« (Ґ § ¬Ґз Ґ¬л© Є®¬ ¤®© DIR Ё ҐЄ®в®ал¬Ё
дгЄжЁп¬Ё DOS);
04h - бЁбвҐ¬л© д ©« (®Ўлз® б Їа®Ја ¬¬ ¬Ё б ¬®© DOS);
08h - § ЇЁбм ® д ©«Ґ ЇаҐ¤бв ў«пҐв б®Ў®© ¬ҐвЄг ⮬ . ’ Є п § -
ЇЁбм (®¤ ўҐбм ⮬) ¬®¦Ґв бгйҐбвў®ў вм в®«мЄ® ў Є®а-
Ґў®¬ Є в «®ЈҐ;
10h - д ©« ЇаҐ¤бв ў«пҐв б®Ў®© Є в «®Ј;
20h - д ©« Ї®б«Ґ б®§¤ Ёп Ё«Ё ¬®¤ЁдЁЄ жЁЁ Ґ Ўл« аеЁўЁа®ў Ё,
б«Ґ¤®ў ⥫м®, 㦤 Ґвбп ў аеЁў жЁЁ ( ваЁЎгв аеЁў жЁЁ).
ЏаЁ б®§¤ ЁЁ ®ў®Ј® д ©« DOS б ¬ ®влбЄЁў Ґв ¤ЁбЄҐ бў®-
Ў®¤®Ґ ¬Ґбв® Ё § з Ґв ҐЈ® ®ў®¬г д ©«г, б®§¤ ў п Ё § Ї®«пп
ᮮ⢥вбвўгойго н⮬г д ©«г § ЇЁбм ў Є в «®ЈҐ. •®вп ¬ЁЁ¬ «м®©
Ї®ажЁҐ© Ёд®а¬ жЁЁ, ЇҐаҐ¤ ў Ґ¬®© Є®ва®««Ґа®¬ ¤ЁбЄ ў Їа®жҐббҐ
§ ЇЁбЁ Ё«Ё з⥨п д ©« , пў«пҐвбп ᥪв®а (512 Ў ©в) (Їа®Ја ¬¬л
BIOS а Ў®в ов б ᥪв®а ¬Ё), д ©«®ў п бЁб⥬ § з Ґв ¬Ґбв®
¤ЁбЄҐ 楫묨 Є« бвҐа ¬Ё. ђ §¬Ґа Є« бвҐа ЈЁЎЄ®¬ ¤ЁбЄҐ б®бв ў-
«пҐв 2 ᥪв®а (1 ЄЎ ©в); ¦ҐбвЄ®¬ ¤ЁбЄҐ ў Є« бвҐа ¬®Јгв ўе®-
¤Ёвм 4-8 ᥪв®а®ў. ’ ЄЁ¬ ®Ўа §®¬, ¬ЁЁ¬ «мл© дЁ§ЁзҐбЄЁ© а §¬Ґа
д ©« , ¤ ¦Ґ Ґб«Ё ¤ лҐ ў Ґ¬ § Ё¬ ов «Ёим ҐбЄ®«мЄ® Ў ©в, б®б-
в ў«пҐв 1 Є« бвҐа. Ћ¤ Є® ў § ЇЁбЁ Є в «®Ј гЄ §лў Ґвбп Ґ дЁ§Ё-
зҐбЄ п, «®ЈЁзҐбЄ п ¤«Ё д ©« , в® Ґбвм ®Ў'Ґ¬ ᮤҐа¦ йЁебп ў
Ґ¬ ¤ ле ў Ў ©в е.
Џа®жҐ¤га ®Ўа йҐЁп Є д ©«г ў ®ЎйҐ¬ б«гз Ґ а бЇ ¤ Ґвбп
б«Ґ¤гойЁҐ ®ЇҐа жЁЁ:
- б®§¤ ЁҐ д ©« б § ¤ л¬ Ё¬ҐҐ¬ ў гЄ § ®¬ Є в «®ЈҐ Ё«Ё
®вЄалвЁҐ д ©« , Ґб«Ё ® Ўл« б®§¤ а ҐҐ;
- § ЇЁбм ў д ©« Ё«Ё з⥨Ґ Ё§ д ©« ўбҐЈ® ᮤҐа¦Ё¬®Ј®, «ЁЎ® ҐЈ®
з бвЁ;
- § ЄалвЁҐ д ©« .
Ља®¬Ґ ЇҐаҐзЁб«Ґле, Ё¬ҐҐвбп ҐйҐ жҐ«л© ап¤ ўбЇ®¬®Ј ⥫мле
®ЇҐа жЁ©:
- г¤ «ҐЁҐ д ©« ;
- Ї®«г票Ґ Ё«Ё гбв ®ўЄ ҐЈ® ваЁЎгв®ў;
- Ї®«г票Ґ Ё«Ё Ё§¬ҐҐЁҐ ¤ вл Ё ўаҐ¬ҐЁ б®§¤ Ёп д ©« ;
- Ї®ЁбЄ д ©« б § ¤ л¬ Ё¬ҐҐ¬.
‘гйҐбвўгҐв 2 бЇ®б®Ў ўлЇ®«ҐЁп ®ЇҐа жЁ© б д ©« ¬Ё:
- б ЁбЇ®«м§®ў ЁҐ¬ Ў«®Є®ў гЇа ў«ҐЁп д ©« ¬Ё ( FCB, File Control
Block);
- б ЁбЇ®«м§®ў ЁҐ¬ ¤ҐбЄаЁЇв®а®ў д ©«®ў (handle).
Ѓ«®Є гЇа ў«ҐЁп д ©« ¬Ё ЇаҐ¤бв ў«пҐв б®Ў®© 37-Ў ©вго в Ў«Ё-
жг, ᮤҐа¦ йго Ёд®а¬ жЁо ® д ©«Ґ: Ё¬п Ё а биЁаҐЁҐ д ©« , ҐЈ®
а §¬Ґа, ¤«Ёг § ЇЁбҐ© ў д ©«Ґ, ®¬Ґа ⥪г饩 § ЇЁбЁ Ё в.¤. ќв
в Ў«Ёж а §¬Ґй Ґвбп ў Ї ¬пвЁ, ®вў®¤Ё¬®© Їа®Ја ¬¬Ґ. „«п ўлЇ®«ҐЁп
Є Є®©-«ЁЎ® ®ЇҐа жЁЁ б д ©«®¬, Ґ®Ўе®¤Ё¬® § Ї®«Ёвм FCB ᮮ⢥вбв-
ўго饩 Ёд®а¬ жЁҐ© ( ЇаЁ¬Ґа, Ё¬ҐҐ¬ ®вЄалў Ґ¬®Ј® д ©« ) Ё ўл§-
ў вм вॡ㥬го дгЄжЁо.
€бЇ®«м§®ў ЁҐ FCB Ўл«® е а ЄвҐа® ¤«п ЇҐаўле ўҐабЁ© DOS (¤®
2.0). FCB - бвагЄвгал Ё ᮮ⢥вбвўгойЁҐ дгЄжЁЁ DOS Ґ Ї®¤¤Ґа¦Ё-
ў о⠤ॢ®ўЁ¤ле Є в «®Ј®ў, Ё Ї®н⮬㠮Ё ¬®Јгв а Ў®в вм в®«мЄ® б
д ©« ¬Ё Ё§ ⥪г饣® Є в «®Ј ⥪г饣® ¤ЁбЄ . ‘ Ёе Ї®¬®ймо, ҐбвҐб-
⢥®, Ґ«м§п б®§¤ ў вм Ё«Ё г¤ «пвм б ¬Ё Є в «®ЈЁ. ‚ бв®п饥
ўаҐ¬п дгЄжЁЁ FCB ЁбЇ®«м§говбп ।Є®.
„агЈ®© бЇ®б®Ў ®ЇҐа жЁ© б д ©« ¬Ё ЇаҐ¤Ї®« Ј Ґв ЁбЇ®«м§®ў ЁҐ
¤ҐбЄаЁЇв®а®ў (д ©«®ўле Ё¤ҐЄб®ў, д ©«®ўле ®ЇЁб ⥫Ґ©), Є®в®алҐ
ЇаҐ¤бв ў«пов б®Ў®© ®¬Ґа бЁб⥬ле ®Ў« б⥩, а бЇ®« Ј Ґ¬ле ў
®ЇҐа вЁў®© Ї ¬пвЁ Ё § ЄаҐЇ«пҐ¬ле § ®вЄалў Ґ¬л¬Ё д ©« ¬Ё. ЋЎа -
饨Ґ Є д ©«г ( в Є¦Ґ Є бв ¤ а⮬㠯ҐаЁдҐаЁ©®¬г гбва®©бвўг -
вҐа¬Ё «г, ЇаЁвҐаг Ё в.¤.) ®бгйҐбвў«пҐвбп Ї® ®¬Ґаг ¤ҐбЄаЁЇв®а ,
Ё¤ҐвЁдЁжЁагойЁ© ¤ л© д ©« Ё«Ё гбва®©бвў®. „ҐбЄаЁЇв®а § з -
Ґвбп д ©«г бЁб⥬®© ЇаЁ ҐЈ® ®вЄалвЁЁ Ё ®бў®Ў®¦¤ Ґвбп ЇаЁ § ЄалвЁЁ
д ©« .
„«п ®Ў«ҐЈзҐЁп ®аЁҐв жЁЁ ў ¬®Ј®зЁб«Ґле дгЄжЁпе DOS,
®бгйҐбвў«пойЁе ®ЇҐа жЁЁ ¤ д ©« ¬Ё, Ёе 㤮Ў® а §ЎЁвм б¬лб«®-
ўлҐ ЈагЇЇл.
1. ‘®§¤ ЁҐ, ®вЄалвЁҐ Ё § ЄалвЁҐ д ©« :
3‘h - б®§¤ вм д ©«;
3Dh - ®вЄалвм д ©«;
3Eh - § Єалвм д ©«;
41h - г¤ «Ёвм д ©«.
2. ‡ ЇЁбм Ё з⥨Ґ ¤ ле:
42h - гбв ®ўЁвм гЄ § ⥫м;
3Fh - зЁв вм Ё§ д ©« Ё«Ё гбва®©бвў ;
40h - § ЇЁб вм ў д ©« Ё«Ё гбва®©бвў®.
3. €§¬ҐҐЁҐ е а ЄвҐаЁбвЁЄ д ©« :
43h - Ї®«гзЁвм Ё«Ё гбв ®ўЁвм ваЁЎгвл д ©« ;
56h - ЇҐаҐЁ¬Ґ®ў вм д ©«;
57h - Ї®«гзЁвм Ё«Ё гбв ®ўЁвм ¤ вг Ё ўаҐ¬п б®§¤ Ёп
д ©« .
”гЄжЁп 3‘h Ї®§ў®«пҐв б®§¤ вм д ©« б § ¤ ®© бЇҐжЁдЁЄ жЁҐ©.
‘ЇҐжЁдЁЄ жЁп д ©« , в.Ґ. Їгвм Є Ґ¬г ў¬ҐбвҐ б Ё¬ҐҐ¬ д ©« Ё а б-
иЁаҐЁҐ¬ гЄ §лў Ґвбп ў ўЁ¤Ґ бЁ¬ў®«м®© бва®ЄЁ, § ўҐаи о饩бп ¤ў®-
Ёзл¬ г«Ґ¬ ("бва®ЄЁ ASCIIZ"). Ђ¤аҐб нв®© бва®ЄЁ § ®бЁвбп ў аҐ-
ЈЁбвл DS:DX. ‚ ॣЁбвॠ‘X § ¤ Ґвбп Є®¤ ваЁЎгв®ў б®§¤ ў Ґ¬®Ј®
д ©« :
0 - ®вбгвбвўЁҐ ваЁЎгв®ў;
1 - в®«мЄ® ¤«п з⥨п;
2 - бЄалвл©;
4 - бЁб⥬л©;
8 - ¬ҐвЄ ⮬ ;
20h - ваЁЎгв аеЁў .
ЏаЁ Ё§¬ҐҐЁЁ ваЁЎгв®ў д ©« ў ॣЁбвॠAL ¤® § ¤ вм аҐ-
¦Ё¬ ¤®бвгЇ 1.
‚ ॣЁбвॠAX ў®§ўа й Ґвбп ¤ҐбЄаЁЇв®а б®§¤ ®Ј® д ©« , Є®-
в®ал¬ ¬®¦® ў ¤ «мҐ©иҐ¬ Ї®«м§®ў вмбп ¤«п § ЇЁбЁ ў д ©« Ё«Ё звҐ-
Ёп Ё§ ҐЈ® (б¬. ЇаЁ¬Ґа).
…б«Ё д ©« б § ¤ ®© бЇҐжЁдЁЄ жЁҐ© 㦥 бгйҐбвўгҐв, в® дгЄ-
жЁп 3‘h гЁз⮦ Ґв Ё¬ҐойЁ©бп д ©« Ё б®§¤ Ґв ®ўл© б ⥬ ¦Ґ Ё¬ҐҐ¬.
”гЄжЁп 3DH Ї®§ў®«пҐв ®вЄалвм 㦥 Ё¬ҐойЁ©бп д ©«. ‚ ॣЁбв-
а е DS:DX § ¤ Ґвбп бЇҐжЁдЁЄ жЁп д ©« (Їгвм Ё Ё¬п д ©« б а биЁ-
२Ґ¬) ў ўЁ¤Ґ бва®ЄЁ ASCIIZ; ў ॣЁбвॠAL - ०Ё¬ ¤®бвгЇ ( 0,1
Ё«Ё 2). ‚ ¤ «мҐ©иҐ¬ § ЇЁбм ў д ©« Ё з⥨Ґ Ё§ ҐЈ® ®бгйҐбвў«пҐв-
бп б Ї®¬®ймо ¤ҐбЄаЁЇв®а , ў®§ўа й Ґ¬®Ј® дгЄжЁҐ© ў ॣЁбвॠAX.
„«п Є ¦¤®Ј® ®вЄалв®Ј® д ©« DOS б®§¤ Ґв Ё Ї®¤¤Ґа¦Ёў Ґв гЄ -
§ ⥫м, Є®в®ал© ЇаҐ¤бв ў«пҐв б®Ў®© ®в®бЁвҐ«мл© ®¬Ґа Ў ©в ў
д ©«Ґ, зЁ п ®в Є®в®а®Ј® Ўг¤гв ўлЇ®«пвмбп § ЇЁбм Ё«Ё з⥨Ґ
¤ ле. “Є § ⥫м в®«мЄ® зв® ®вЄалв®Ј® Ё«Ё б®§¤ ®Ј® д ©« Ї®§Ё-
жЁ®ЁагҐвбп бЁб⥬®© з «® д ©« , дгЄжЁЁ звҐЁп Ё«Ё § ЇЁбЁ
ᬥй ов ҐЈ® зЁб«® Їа®зЁв ле Ё«Ё § ЇЁб ле Ў ©в. ’ ЄЁ¬ ®Ўа -
§®¬, Ї®ўв®а®Ґ ЁбЇ®«м§®ў ЁҐ дгЄжЁЁ звҐЁп Ё«Ё § ЇЁбЁ ॠ«Ё§гҐв
Ї®б«Ґ¤®ў ⥫мл© ¤®бвгЇ Є д ©«г. „«п ®аЈ Ё§ жЁЁ ЇаאַЈ® ¤®бвгЇ
Є Їа®Ё§ў®«м®¬г ¬Ґбвг д ©« ЇаҐ¤гᬮвॠдгЄжЁп 42h, Ї®§ў®«по-
й п § ¤ вм Ї®«®¦ҐЁҐ гЄ § вҐ«п ®в®бЁвҐ«м® з « д ©« (¤«п
нв®Ј® ¤® § ¤ вм AL = 0), Є®ж д ©« (AL = 2) Ё«Ё ⥪г饣® Ї®-
«®¦ҐЁп гЄ § ⥫п (AL = 1). ‘ ¬® § 票Ґ ᬥ饨п гЄ § ⥫п (б®
§ Є®¬) § ®бЁвбп ў ॣЁбвал CX (бв аи п Ї®«®ўЁ ) Ё DX (¬« ¤и п).
”гЄжЁЁ 3Fh Ё 40h ЁбЇ®«м§говбп ¤«п звҐЁп Ё§ д ©« Ё«Ё гбв-
а®©бвў (дгЄжЁп 3Fh) Ё § ЇЁбЁ ў д ©« Ё«Ё гбва®©бвў® (дгЄжЁп
40h). ЏҐаҐ¤ ўл§®ў®¬ дгЄжЁЁ ў ॣЁбва BX Ї®¬Ґй Ґвбп ¤ҐбЄаЁЇв®а, ў
ॣЁбва CX - зЁб«® зЁв Ґ¬ле Ё«Ё § ЇЁблў Ґ¬ле Ў ©в, ў ॣЁбвал
DS:DX - ¤аҐб ЎгдҐа ў Їа®Ја ¬¬Ґ Ї®«м§®ў ⥫п:
.........
MOV CH, 80 ; бв®«мЄ® зЁв вм
MOV DX, offset bufin ;бо¤
.........
; Ї®«п ¤ ле
.........
bufin db 80 dup (' ') ; ЎгдҐа ўў®¤
„«Ё ⥪бв®ў®© бва®ЄЁ string ®ЇаҐ¤Ґ«пҐвбп Є Є:
stringlen equ $ - string
ЏаЁ ўлў®¤Ґ Їа®зЁв ле ¤ ле нЄа ЁбЇ®«м§гҐвбп
дгЄжЁп § ЇЁбЁ 40h. ‚ ॣЁбва BX ¤®«¦Ґ Ўлвм § ЇЁб ¤ҐбЄаЁЇв®а
бв ¤ ав®Ј® ўлў®¤ : stdout, ў ॣЁбва DX - ®вЄг¤ ўлў®¤Ёвм
(offset bufin).
‡ ¤ ЁҐ а Ў®вг
Џ®¤Ј®в®ўЁвм Ё ®в« ¤Ёвм б«Ґ¤гойЁҐ Їа®Ја ¬¬л:
1. ‘®§¤ Ёп д ©« б Ё¬ҐҐ¬ XXXXXX.LAB, Ј¤Ґ XXXXXX - ў и д ¬Ё«Ёп.
2. ‡ ЇЁб вм ў д ©« бва®Єг: - д ¬Ё«Ёп, ЈагЇЇ , ®¬Ґа.
3. Џа®зЁв вм д ©« Ё ўлўҐб⨠ᮤҐа¦Ё¬®Ґ нЄа .
4. €§¬ҐЁвм ваЁЎгвл д ©« - ᤥ« вм ҐЈ® бЄалвл¬.
5. ‚ ०Ё¬Ґ Їаאַ© ¤аҐб жЁЁ § ЇЁб вм ў д ©« ¬Ґбв® н«Ґ¬Ґв 5
жЁдаг 8.
6. Џа®зЁв вм Ё§ д ©« н«Ґ¬Ґвл б ®¬Ґа ¬Ё 3 - 10 Ё ўлўҐбвЁ Ёе
нЄа .
ЏаЁ¬Ґа
; ‘®§¤ ЁҐ д ©«
; ЋЇаҐ¤Ґ«ҐЁп
cr equ 0Dh ;‚®§ўаўв Є аҐвЄЁ
lf equ 0Ah ;ЏҐаҐў®¤ бва®ЄЁ
text segment 'code'
assume CS:text,DS:data
myproc proc
mov AX,data
mov DS,AX
; ‘®§¤ ¤Ё¬ д ©«
mov AH,3Ch ;”гЄжЁп б®§¤ Ёп д ©«
mov CX,0 ;ЃҐ§ ваЁЎгв®ў
mov DX,offset fname ;Ђ¤аҐб Ё¬ҐЁ д ©«
int 21h
mov handle,AX ;‘®еа Ё¬ ¤ҐбЄаЁЇв®а д ©«
; ‡ ЇЁиҐ¬ бва®Єг ў д ©«
mov AH,40h ;”гЄжЁп § ЇЁбЁ
mov BX,handle ;„ҐбЄаЁЇв®а
mov CX,stringln ;„«Ё бв®аЄЁ
mov DX,offset string ;Ђ¤аҐб бва®ЄЁ
int 21h
; ‡ Єа®Ґ¬ д ©« (Ґв Ґ®Ўе®¤Ё¬®бвЁ, Ґб«Ё д ©« Ґ ¤® зЁв вм
; Ї®ўв®а®)
mov AH,3Eh ;”гЄжЁп § ЄалвЁп
mov BX,handle ;„ЁбЄаЁЇв®а
int 21h
; ‡ ўҐаиЁ¬ Їа®Ја ¬¬г
outprog: mov AX,4C00h ;”гЄжЁп § ўҐа襨п, Є®¤
int 21h
myproc endp
text ends
; Џ®«п ¤ ле
data segment
string db '’ҐЄбв',cr,lf ;‘ва®Є ¤«п § ЇЁбЁ ў д ©«
stringln equ $-string ;…Ґ ¤«Ё
handle dw ? ;џзҐ©Є ¤«п ¤ҐбЄаЁЇв®а
fname db 'MYFILE.001',0 ;€¬п д ©« ў
;д®а¬ ⥠ASCIIZ
data ends
stack segment para stack 'STACK'
db 128 dup (?)
stack ends
end myproc
