Берилганларни кўчириш процедуралари. Бу Move процедураси бўлиб, у ўз моҳияти бўйича машина буйруғи даражасидаги амалдир.
Ёзилиши.
Move (Var Sourse, Dest, Nbytes : Word);
Процедура учта параметрга эга бўлиб, оператив хотирадаги Nbytes – байт ўлчамидаги берилганларни кўчириш учун хизмат қилади. Sourse – ихтиёрий турдаги ўзгаувчи бўлиб, кўчириладиган хотира бўлагининг адреси (унинг биринчи байти), Dest – хотирадаги кўчириш жойи (биринчи байти).
Мисол.
1) А массив бошига В массив нусхасини олиш учун Move(B,A, SizeOf(B)) кўринишидаги мурожаатни ёзишимиз керак.
2) А массивдаги 1000 хақиқий қийматни 1-ўриндан бошлаб 100 та ўринга ўнгга силжитиш керак бўлсин.
Бунинг учун
оддий ҳолда - For i:1000 Downto 1 Do A[i100] : A[i];
Move орқали - Move (A[1], A[100], 1000*SizeOf(Real));
Бу ерда нусха олиш йўналиши Move томонидан автоматик тарзда аниқланади.
Назорат саволлари
Буйруқ сатрини қайта ишловчи программалар қандай хотирага юкланади (ишлатилади)?
Хотирага мурожаат массивлари билан жадвал катталик элементларига мурожаат ўртасида ўхшашлик ва фарқ?
Move процедураси ёрдамида кўчиришда берилганларнинг тури аҳамиятлими?
§ 3.25. MS DOS узилишлари билан ишлаш. Субпроцессорли ва резидент программалар.
Программа ишлаш жарёнида у томонидан маълум бир амалларни бажариш учун системавий чақирувлар қилиниши мумкин. Масалан, клавиатурадан маълумот олиш, диск юритувчига мурожаат, белгини дисплей экранига ёки қоғозга чиқариш. Бундай чақирувлар амалга ошириш учун узилишлар механизмидан фойдаланилади. Бу механизмнинг моҳияти шундаки, программанинг ишлаши дарҳол қайта ишланиши зарур бўлган ҳолатни юзага келганлигини билдирувчи сигнал билан қисқа вақтга узилишини (тўхтатилишини) англатади. Ҳар бир узилиш ўз номерларига эга бўлиб, унга юзага келган ҳолатга хизмат қилувчи қисм-программа мос келади. Ҳар бир узилиш бир нечта функцияларни ўз ичига олиши мумкин.
ТП муҳитида узилишлар билан ишлаш воситалари мавжуд. Унда MS-DOS система функцияларини чақириш узилишлар ёрдамида амалга оширилади. ҳар бир узилиш чақирилганда бир қанча функциялар тўпламидан фойдаланишга имкон бўлади. Мисол учун 16Н номерли узилиш клавиатурани бошқаришда, 25Н дискдан ўқиш ва ҳакозо ишларни бажаради. Булар орасида 21Н узилишлари алоҳида роль ўйнайди, OC ни ҳосил қилувчи ўнлаб функцияларга мурожаат қилишга имкон бўлади. Машина кодини билмаган ҳолда ҳам ТП дан DOS модули функциялари ёрдамида MS-DOS функцияларига мурожаат қилиш мумкин.
Бу функциялар рўйхати қуйидагилар.
GETINTVEC (N: byte;Var Adress: Pointer)- тартиб номери N бўлган узилиш адреси.
SETINTVEC (N: byte;Adress: Pointer)- DOS га янги узилиш программаини N номери билан ёзади, эски адресни Adress кўрсатган жойга жойлаштиради.
Intr (N:byte ,Var R: registers)-N-номерли программа узилишни R параметрлари билан активлаштиради.
MS-DOS (Var R: registers )-21Н номерли узилишни чақириш.
Узилишларга қиймат бериш ва натижавий қийматларни олиш регистрлар орқали амалга оширлади.
Қуйида 8086** процессор регистрлари рўйхати келтирилади.
Сегмент регистрлари.
CS– кодлар сегменти регистри.
DS– берилганлар сегменти регистри.
SS – стек сегменти регистри.
ES – қўшимча сегмент регистри.
Умумий регистрлар.
АX – сумматор, AHҒAL.
BX – база регистри, BHҒBL.
CX – саноқ регистри, CHҒCL.
DX – берилганлар регистри, DHҒDL.
Бошқа регистрлар.
SP, BP–стек билан ишлашда, адресларни вақтинча сақлаш учун ишлатилади.
SI, DI–индекс регистрлари, қўшиш ва айириш амалларида ишлатилади.
IP – буйруқ силжишини сақлаш регистри.
Байроқ регистри – ҳолатларни аниқлашда ишлатилади.
Турбо-Паскаль муҳитида Registers тури аниқланган бўлиб, унинг кўриниши.
Type
Registers Record
Case Integer Of
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flag:Word);
1: (AL, AH, Bl, BH, CL, CH, DL, DH : Byte);
End;
Узилишдаги функциялар маълум бир регистрлардан кирувчи қийматлар учун ишлатилади. Одатда R.AH - функция номерини, R.AL ва бошқа регистрлар чиқиш қийматлари учун ишлатилади (R.AL –функция қандай бажарилганлигини билдиради (0 – муваффақиятли).
Узилишлар билан ишлашга мисоллар.
Курсорни матн экранининг (35,10) нуқтасига кўчириш.
…R.AH : 2;
R.DH :10;
R.DL:35;
Intr(10H, R);
...
Do'stlaringiz bilan baham: |