15
3. Умумий вазифадаги буйруқлар.
3.1.
MOV буйруғи. Бу буйруқ ёрдамида регистр ва хотра ячейкаси ёки иккита
регистр ўртасида байт ёки сўзни узатиш мумкин. Бундан ташқари, яна тўғридан- тўғри
қийматни регистр ёки хотира ячейкасига жўнатиш мумкин. Буйруқнинг кўриниши
қуйидагича:
MOV қабул қилувчи, узатувчи
Мисоллар:
MOV AX, TAB ; хотирадан регистрга жўнатиш
MOV RESULT,AX ; регистрдан хотирага жҳнатиш
MOV ES: [BX], AX ; сегмент регистрини алмаштириш
MOV DS, AX
; 16 битли регистлар ўртасида жўнатиш
MOV BL, AL ; 8 битли регистрлар ўртасида жўнатиш
MOV CL, - 30
; ўзгармас регистрга жўнатиш
MOV DEST, 25 H ; ўзгармасни хотирага жўнатиш.
Бу буйруқ билан қуйидаги ишларни бажариш мумкин эмас:
1. Хотиранинг бир ячекасида турган берилганни тўғридан тўғри
иккинчи ячейкага
жўнатиш мумкин эмас. Бунинг учун уни аввл умумий регистрга жўнатиш, сўнгра умумий
регистрдан хотиранинг керакли жойига жўнатиш мумкин:
Яъни MOV AX, RES
MOV Y, AX
2. Худди биринчи банддагига ўхшаб адресланувчи операндни сегмент регистрига
тўғридан-тўғри жўнатиш мумкин эмас. Бунинг учун 1-банддагига ўхшаб иш тутиш керак.
Яъни, MOV AX, DATA_SEG
MOV DS, AX
Одатда бу каби буйруқлар ASSUME буйруғига мос келади ва ассемблерга
берилганлар сегменти қаерда жойлашганини кўрсатади.
3. қийматни тўғридан-тўғри бир сегмент регистридан
иккинчи сегмент регистрига
жўнатиш мумкин эмас. Бунинг учун умумий регистрдан фойдаланиш керак.
Масалан, DS
регистри худди ES регистри кўрсатаётган сегментни кўрсатиш керак бўлса, қуйидагича
иш тутилади:
MOV AX, ES
MOV DS, AX
4. Узатиш буйруғида қабул қилувчи сифатида CS регистрини ишлатиш мумкин эмас.
3.2.
PUSH ва POP буйруқлари. Одатда бу буйруқлар программанинг ишлаш
жараёнида берилганларни (регистрларда ва хотира ячекасида жойлашган қийматларн)
вақтинчалик сақлаш учун хизмат қилади.
Масалан, фараз қилайлик,
сизга баъзи бир
ишларни бажариш пайтида AX регистрининг қийматини сақлаб туриш зарур бўлсин.
Бунинг учун қуйидаги буйруқни ишлатамиз:
PUSH узатувчи : бизнинг мисолимизда AX регистри;
PUSH буйруғи ёрдамида регистрнинг қиймати ёки 16 битли сўз кўринишидаги
хотира ячейкасининг қиймати
стек бошига жойланади.
POP буйруғи бўлса,
стек бошидан сўз жойни эгалловчи қийматни олиб, регистр
ёки
хотира ячекасига жойлашади, яъни POP қабул қилувчи; бизнинг мисолимизда AX
регистри.
Мисоллар: PUSH SI; умумий регистр ёки сегмент.
PUSH DS; регистрни сақлаш.
PUSH CS;
CS ни сақлаш.
PUSH DELTA; хотира ячейкасининг қийматини
PUSH TAB [BX] [DI] сақлаш.
16
Шуни унитмаслик керакки, программада ҳар бир ишлатилган PUSH буйруғига
мос келувчи POP буйруғи бўлиши керак.
Масалан:
PUSH AX ; AX ни стек бошига ёзиш.
.......... ; AX ни ўзгартирувчи бошқа.
........... ; буйруқлар кетма-кетлиги
POP AX ; стек бошидан AX га ўқиш.
Стек боши деб, стек кўрсатгичи SP да адреси сақланаётган
стек сегментидаги
ячейка тушунилади. Стек хотиранинг кичик адреслари (0 ячейкаси) га қараб
ўсиб боради,
шунинг учун стекка биринчи жойлаштирилаётган сўз стекнинг энг катта адресли
ячейкасида сақланади (ёзилади), кейингиси ундан икки байт кичигига ва х.к. ёзилади.
3.3.
XCHG алмаштириш буйруғи. Бу буйруқ ёрдамида иккита регистр ёки
регистр ва хотира ячейкаси ўртасида қийматлар ўзаро алмаштирилади. Лекин бу буйруқ
сегмент регистрлари қийматларини алмаштиришда ишлатилмайди.
Мисоллар: XCHG AX, BX ; икки регистр қийматини
XCHG AL, BH ; алмаштириш (сўз ёки байтларда)
XCHG WORLD_LOC, DX ; хотира ячейкаси ва регистрларнинг
XCHG DL, BYTE_LOC ; қийматларини алмаштириш.
4. Киритиш-чиқариш буйруқлари. Киритиш- чиқариш буйруқлари системанинг
периферик ташқи қурилмалари билан ўзаро алоқаси учун ишлатилади. Улар қуйидаги
кўринишда бўлади:
IN
аккумулятор, порт
OUT порт, аккумулятор
Бунда аккумулятор сифатида –сўзлар билан ишланганда AX регистри, байтларда
бўлса, AL регистридан фойдаланилади. Порт операнди сифатида 0 дан 255 гача бўлган
ва 256 қурилмага
мос келувчи, ўнлик қиймат бўлиши мумкин. Порт операнди сифатида
DX регистрини ишлатиш мумкин. Бунда у порт номерини ўзгартириш имконини беради,
масалан, керак бўлганда бир хил берилганларни ҳар хил портларга узатиш мумкин.
Мисоллар:
IN AL, 200 ; 200 портдан байтни ўқиш
IN AL, PORT_ VAL ; ўзгармас кўрсатаётган портдан байтни ўқиш
OUT 3OH, AX ; 30Н портга сўзни чиқариш
OUT DX, AX ; сўзни чиқариш.
Қуйида СЎМ учун тузилган прграммани (1-программа) СЎМ/ҚВ учун ҳисоблаш
самарадорлиги ошириш нуқтаи назаридан ўзгартирилган варианти келтирилган
(2-программа).