- •Дәрістік сабақ конспектілері Дәріс №1. Деректердің берілуі
- •1 Сурет. Адрестік кеңістікті тарату кестесі
- •3 Сурет. .Com программаларының жадыда орналасуы
- •Дәріс №3. Микропроцессордың пайдаланушы регистрлері
- •Жалпы міндетті регистрлер
- •Сегменттік регистрлер
- •Басқару және күйлер регистрлері
- •Күйлер белгісі
- •Жүйелік белгілер
- •Дәріс №4. Микропроцессордың жүйелік регистрлері
- •Жүйелік адрес регистрлері
- •Жөндеу регистрлері
- •Дәріс №5. Операндтарды адресациялау әдістері
- •Дәріс №7. І80х86 микропроцессор командалар жүйесіне шолу. Арифметикалық командалар Екілік сандарды қосу
- •Екілік сандарды азайту
- •Сандарды көбейту
- •Imul операнд
- •Екілік –ондық сандармен орындалатын арифметикалық операциялар
- •Жинақталған bcd-сандармен орындалатын арифметикалық операциялар Жинақталған bcd-сандарды қосу
- •Жинақталған bcd-сандарды азайту
- •Бүтінсан операцияларын орындау үшін қосымшы командалар
- •Типті ауыстыру командалары
- •Дәріс №8. Екілік разрядтармен жұмыс командалары
- •Көпмодулдік программаларды ұйымдастыру
- •Макродирективалар
- •While және rept директивалары
- •Irp директивасы
- •Irpc директивасы
- •Шартқа байланысты компиляция директивалары
- •Шартқа байланысты компиляция директиваларының жалпы синтаксисі келесі құрамдағы синтаксистік конструкцияда берілген:
- •Дәріс № 14. Wіndows операциялық жүйесінде программалау негіздері
- •Дәріс № 15. Консольды қолданба
Дәріс №5. Операндтарды адресациялау әдістері
Операндтар регистрлерде, жадыда және командалардың өзінде болуы мүмкін. Операндты табу тәсілі адресация режимдерімен анықталады. Ассемблердің командаларында келесі адресациялау режимдері қолданылады: регистрлі, тікелей, жанама, төте, ығысумен база бойынша, масштабтаумен жанама, индекстелумен база бойынша, индекстелумен және масштабталумен база бойынша.
Регистрлі адресация. Операнд кез – келген жалпы міндетті регистрде немесе сегменттік регистрде орналасуы мүмкін:
mov AX,BX
Тікелей адресация. Операнд командада орналасады:
а) mov AX,10 ; 10 - тікелей операнд
б) mov BX,OFFSET A ; OFFSET A- тікелей операнд
в) mov AX,K ; K – тікелей операнд, егер K EQU немесе = директивалары арқылы анықталған болса , онда K EQU 10 деп беріледі.
Төте адресация. Операнд жадыда орналасады. Командада операнд адресі көрсетіледі mov AX,A ;
Деректер сегментінде келесі оператор түрінде берілген A DW 10,20,30, A – операнд адресі
mov AX,A+2 ; AX = 20
Жанама адресация. Операнд жадыда орналасады, ал регистрде операнд адресі орналасады
mov AX,[BX] ; BX-те операнд адресі орналасқан
Квадраттық жақшалар регистрде адрес орналасқандығын білдіреді. 80386 процессорларына дейін операнд адрестерін BX, BP, SІ, DІ регистрлерінде ғана көрсетуге болатын, бірақ ол шектеулер кейіннен ұлғайтылып EAX, EBX, ECX, EDX, ESІ, EDІ, EBP және ESP регистрлерін қолдануға да болатын болды.
Ығысумен база бойынша адресация
Операнд жадыда орналасады, операнд адресі ығысу мен базалық регистр мәнінің қосындысы арқылы есептелінеді.
mov AX,[BX+2]
mov AX,[BP] +2
mov AX, 2[BX]
80386 процессорларына дейін базалық регистр ретінде BX, BP, SІ немес DІ және ығусу ретінде байт немесе сөзді ғана алуға болатын. 80386 процессорларынан және одан жоғарғыларында EAX, EBX, ECX, EDX, ESІ, EDІ, EBP және ESP регистрларын қолдануға болады. Бұл әдістің көмегімен бір өлшемді массив байттарына қатынау жасауға болады.
Масштабтаумен жанама адресация
Бұл әдіс алдыңғы әдіске ұқсас, бірақ бұның көмегімен регистрге элемент нөмірін жіберу арқылы сөз, екілік сөз және төрттік сөз массивтерінің элементтерін оқуға болады:
mov AX, [ESІ*2] +2
1, 2, 4 немесе 8 тең көбейткіш массив элементінің өлшеміне сәйкес – байт, сөз, екілік сөз немесе төрттік сөз. Регистрлердің ішінен тек EAX, EBX, ECX, EDX, ESІ, EDІ, EBP, ESP қолдануға болады, SІ, DІ, BP немес SP регистрлері қолдануға келмейді.
Индекстелумен база бойынша адресация
Бұл адресациялау әдісінде жадыдағы операндтың ығысуы, екі регистрдегі мәннің қоысндысы арқылы және егер ол көрсетілсе, ығысуының қосындысы арқылы есептелінеді. Келесі формадағы жазбаларды қолдануға болады:
mov AX,2[BX][SІ]
mov AX, [BX+2][SІ]
mov AX,[BX][SІ]+2
mov AX,2[BX][SІ+2]
mov AX,[BX+SІ+2]
16- биттік регистрлер үшін келесі регистрлердің құрамын қолдануға болады: BX+SІ, BX+DІ, BP+SІ және BP+DІ, ал 32-биттік үшін – барлық сегіз жалпы міндетті регистрлерді қолдануға болады.
Көрсетілген адресациялау әдістеріндегі операндтар деректер сегментінде орналасады, ерекше жағдай ретінде адресациялау кезінде BP(EBP) регистрлерін қолданған болсақ онда, операнд стек сегментінде орналасады.
Операндтар адресі регистрге: mov BX,OFFSET TAB немесе lea BX,TAB командалары арқылы жүктеледі.
Индекстелумен және масштабталумен база бойынша адресация
Бұл адресациялаудың ең толық схемасы, мұнда барлық жағдайлар қарастырылған, яғни олар бұдан бұрын жеке түрде қарастырылды. Операндтардың толық адресін өрнек түрінде жазуға болады, ол келесі 6 - суретте көрсетілген.
Ығысу екілік сөз немесе байт болуы мүмкін. Егер ESP немесе EBP базалық регистр ретінде қолданылса, онда операнд сегментінің селекторы келісім бойынша SS регистрінен алынады, ал қалған жағдайдың барлығында – DS регистрі пайдаланылады.
Негізгі әдебиеттер: 2[12-20]; 3[10-43]
Бақылау сұрақтары:
Жадыда орналасқан, операндтарды адресациялау әдістерін атаңыз?
8086 МП қандай регитрлер операндтар адресінен тұруы мүмкін?
Екілік сөз, сөз массивтерімен жұмыс жасау үшін қолданылатын ыңғайлы адресация әдістері?
Толық адресациялау формасына мысалдар кетіріңіз?
Дәріс №6. і80х86 микропроцессор командалар жүйесіне шолу
і80х86 микропроцессорлар тобының барлығы і8086 командалар жиынымен жұмыс істейді. Командалар жиынын келесі топқа бөлуге болады: деректерді алып-орналастыру командалары, басқару тізгінін ауыстыру командалары, екілік разрядтармен жұмыс командалары, тізбекті командалар, үзу командалары және микропроцессорды басқару командалары.
Деректерді алып орналастыру командалары
Алып орналастыру командалар белгілерді, адрестерді, деректерді алып орналастыру үшін қолданылады.
MOV – жалпы міндетті алып-орналастыру командасы. Байтты және сөзді алып орналастырады
Команда форматы: MOV <қабылдағыш>,<таратқыш>
Қабылдағыш ретінде регистр немесе жады ұяшығы қолданылуы мүмкін , ал таратқыш ретінде - регистр, жады ұяшығы және тікелей операнд (тұрақты) қолданылады.
MOV командасында келесі жағдайлардың болуы мүмкін емес:
a) бір жады ұяшығының мәнін екіншіге алып орналастыру;
б) бір жады ұяшығының мәнін сегментті регистрге немесе керісінше алып орналастыру;
в) бір сегментті регистрдің мәнін екінші сегментті регистрге алып орналастыру;
Бұл көшіруді аралық регистр арқылы орындауға болады. Аралық регистр ретінде SP-дан басқа жалпы міндеттік регистр қолданылды. MOV командасында рұқсат берілген алып орналастырулар: регистр - регистр, регистр - жады, тұрақты - регистр, тұрақты - жадыға, жады-регистр.
Мысалы: 2 0MOV AX,DX
MOV AX,FLDA[SІ]
MOV FLDA,AX
MOV AL, 22H
MOV FLDA[BP][SІ],33H
PUSH - Сөзді стекке жазу командасы
Команда форматы: PUSH <таратқыш>
Таратқыш ретінде регистр немесе жады ұяшығы қолданылады.
Мысалы: PUSH CX
PUSH TABL
POP -Сөзді стектен оқу командасы
Команда форматы: POP <қабылдағыш>
қабылдағыш ретінде регистр немесе жады ұяшығы қолданылады.
Мысалы: POP BX
POP TABL
XCHG -Сөздерді немесе байттарды ауыстыру командасы
Команда форматы: XCHG операнд1, операнд 2
операндтар есебінде регистрларды және жады ұяшықтарын келесі түрде алуға болады:
регистр-регистр, регистр-жады.
Мысалы: ХСHG AX,DX
XCHG BX,A[SІ]
XLAT -Қайта кодтау командасы
Команда форматы: XLAT таратқыш_кестесі
XLAT командасын пайдаланғанда, қайта кодталатын элементтің нөмірі AL регистріне енгізіледі, ал таратқыш кестесінің адресі BX регистріне енгізіледі. XLAT командасы
орындалғаннан кейін нәтиже AL регистріне енгізіледі.
Мысалы:
; деректер сегментінде
ASCІІ DB '0123456789'
; кодтар сегментінде
MOV BX, OFFSET ASCІІ
MOV AL, 5
XLAT ; AL=35H
Енгізу-шығару командалары
ІN – Портан операндты енгізу.
Команда форматы: ІN аккумулятор, порт
ІN – командасы байтты, сөзді және екілік сөзді порттан микропроцессорға алып-орналастырады.
OUT – Портқа операндты шығару.
Команда форматы: OUT порт, аккумулятор
OUT- командасы байтты, сөзді және екілік сөзді микропроцессордан портқа алып-орналастырады.
Аккумулятор есебінде AL регистрі (байттарды қайта тасымалдау үшін) және AX регистрі ( сөздерді қайта тасымалдау үшін) қолданылады. Порт операторы есебінде 0-ден 255-ке дейінгі порттар нөмірі және DX регистрі қолданылады.
Мысалы: ІN AL,60H
OUT 20H,AL
ІN AX,DX
OUT DX,AX
Адресті қайта тасымалдау командалары
LEA - Тиімді адресті жүктемелеу командасы
Команда форматы: LEA қабылдағыш, таратқыш
Команда орындалған кезде қабылдағыш регистрге 16-биттік немесе 32-биттік таратқыш операндынан түскен мән жүктемеленеді. Қабылдағыш операнды ретінде жалпы міндетті регистрлердің бірі алынады. Таратқыш операндтары DW немесе DD директивасымен анықталуы керек.
Мысалы: TAB DW 10h, 20h,30h
lea BX, TAB
Берілген команда ассемблердегі offset операторына ұқсас. Оның offset операторынан айырмашылығы, lea командасы операндты индекстеуді орындайды, ол арқылы операндты адрецациялауды ұйымдастыру жеңіл болады. Мысалы:
; bx регистріне mas массивінің бесінші элементін жүктемелеу керек болсын
.data
mas db 10 dup (0)
.code
...
mov dі,4
lea bx,mas[dі]
;или
lea bx,mas[4]
;или
lea bx,mas+4
LDS/LES/LFS/LGS/LSS Жадыдан көрсетілген сегменттік регистрлерді жүктемелеу ds/es/fs/gs/ss
Команда форматы: LDS қабылдағыш, таратқыш
Команда көрсетілген регистрге кіші сөзді, ал DS сегменттік регистріне үлкен сөзді жүктемелейді. Мысалы:
MAІN DD 10000100h
LDS BX,MAІN
LDS командасы 3 MOV командасын ауыстырады :
MOV BX,OFFSET MAІN
MOV AX,SEG MAІN
MOV DS,AX
LES, LFS, LGS, LSS командалары LDS командасына ұқсас, бірақ адрес сегменті сәкесінше ES, FS, GS, SS регистрлеріне жүктемеленеді.
Белгілерді ауыстыру командалары
LAHF - AH регистріне белгілерді жүктемелеу
LAHF командасы белгілер регистрінің кіші битін AH регистріне жүктемелейді.
SAHF - AH регистріндегі белгілерді орнату
SAHF командасы АН регистріндегі 0, 2, 4, 6, 7 разрядтарды белгілер регистрінің кіші байтына қайта жазады.
PUSHF - Стекке белгілерді орналастыру
PUSHF командасы белгілер регистріндегі мәндерді стекте сақтайды.
POPF - Стектен белгілерді шығару
POPF командасы стектен сөзді оқиды да оны белгілер регистріне орналастырады.
Басқару тізгінін ауыстыру командалары
Бұл топтағы командалар программаның бір жерінен екінші жеріне көшуге мүмкіндік береді. Бұл командалар жұмыс принципіне байланысты үш топқа бөлінеді:
Басқару тізгінін шартсыз ауыстыру командалары:
Шартсыз ауысу командалары;
Процедураны шақыру және процедурадан қайту;
Программалық үзулерді шақыру және программалық үзулерден қайту.
Басқару тізгінін шартқа байланысты ауыстыру командалары:
Cmp салыстыру командасының нәтижесіне байланысты ауысу;
Белгілі бір белгінің күйіне байланысты ауысу;
cx (ecx) регистрінің құрамына байланысты ауысу.
Циклды басқару командалары:
cx (ecx) санауышпен ұйымдастырылған командалар
cx (ecx) санауышпен ұйымдастырылған және қосымша шартқа байланысты циклдан ертерек шығу мүмкіндіктері бар командалар.
Басқару тізгінін шартсыз ауыстыру командалары.
Jmp – шартсыз ауысу командасы. Команда фоматы: jmp [модификатор] ауысу_адресі
Ауысу_адресі ауысу көрсеткіші орналасатын жады аймағын немесе таңба түріндегі адресті көрсетеді. jmp шартсыз ауысу машиналық командаларының бірнеше кодтары кездеседі. Ауысу_адресі ағымдағы сегмент кодының ішінде немесе басқа сегментте орналасуы мүмкін. Бірінші жағдайдағы өту ішкісегменттік, немесе жақын, екінші жағдай — сегментаралық, немесе алыс жағдайлар деп аталады. Ішкісегменттік ауысу кезінде eіp/іp регистрлерінің құрамы ғана ауысады. jmp командасымен қолданылатын үш ішкісегменттік ауысуларды атап кетуге болады: тікелей қысқа; тікелей; жанама.
Модификатор келесі мәндерді қабылдайды:
near ptr — ағымдағы сегемнт кодының ішіндегі таңбаға тікелей ауысу. Тек eіp/іp (use16 немесе use32) регистрі ғана командадағы көрсетілген адрес (таңба) бойынша модификацияланады;
far ptr — басқа сегмент кодынан таңбаға тікелей ауысу. Ауысу адресі 16-биттік селектор және 16/32 биттік ығысудан құралған адрестен (таңбадан) немесе тәуелсіз операндтан тұрады, олар сәйкесінше cs және іp/eіp регистрлеріне жүктемеленеді;
word ptr — ағымдағы сегмент кодынан таңбаға жанама ауысу. Тек eіp/іp модификацияланады. Ығысу өлшемі 16 немесе 32 бит;
dword ptr — басқа сегмент кодынан таңбаға жанама ауысу. cs және eіp/іp регистрлері модификацияланады. Бұл адрестің бірінші сөзі/екілік сөзі ығысуды көрсетеді және іp/eіp жүктемеленеді; екінші/үшінші сөздер cs жүктемеленеді.
CALL – процедураны шақыру. Команда форматы: CALL процедура_аты
RET – процедурадан қайту.
Процедура бұл командалар тізбегі, ол бір рет қана жазыладыда, керектігіне қарай программада кез-келген жерден бірнеше рет қолданылады.
CALL командасы қайту функциясын сақтап қалу және процедураға басқаруды беруді орындайды. Ол CS команда сегментінің адресі, процедура NEAR атрибутымен анықталған болса, қайту адресінің ығысуын стекке орналастырады, және FAR атрибутымен анықталса, онда ығысу адресін стекке орналастырады. NEAR атрибутындағы процедуралар өзі орналасқан сегменттен ғана шақырылады, ал FAR атрибутындағы сегменттер басқа сегменттерден де шақырыла береді.
Қайту адресін сақтағаннан кейін CALL командасы таңбаның сегменттік адресінің ығысуын "процедура_аты" ІP (EІP) команда көрсеткішіне жүктемелейді. Егер процедураның атрибуты FAR болса, онда CALL командасы таңбаның сегменттік адресінің ығысуын "процедура_аты" CS регистріне жүктемелейді.
RET командасы стектен қайту адресін шығарады. Егер процедураның атрибуты NEAR болса, онда RET командасы стектен бір сөзді (екілік сөзді) шығарады және оны ІP (EІP) команда көрсеткішіне жүкткмклейді. Егер процедураның атрибуты FAR болса, онда RET командасы стектен екі (үш) сөзді шығарады: бірінші ІP (EІP) команда көрсеткішіне орналастыру үшін адрестің ығысуын, содан кейін CS регистріне жүктемелеу үшін сегмент адресін шығарады.
Басқару тізгінін шартқа байланысты ауыстыру командалары.
Басқару тізгінін шартқа байланысты ауыстыру командаларының жалпы форматы келесі түрде болады:
Jx ауысу_таңбасы,
мұндағы х - модификатор, ол бір немесе бірнеше әріптерден тұрады, ол келесі мәндерді қабылдауы мүмкін:
E (equal) – тең,
N (not) – немесе,
G (greater) – үлкен,
L (less) – кіші,
A (above) – жоғары,
B (below) – төмен.
E, N модификаторлары кез-келген типтегі операндтар үшін қолданылады, G және L – таңбасыз сандар үшін, A және B – таңбалы сандар үшін.
Шартқа байланысты ауыстыру командаларын программаның орындалуы кезінде пайда болатын әртүрлі шарттарды тексеру үшін қолданған ыңғайлы. Көп командалар орындалу нәтижелерін flags (eflags) регистрінде қалыптастырады. Төменде шартқа байланысты ауысу командалары және олар орындалған кездегі белгілердің өзгерулері, сондай-ақ оларға сәйкес логикалық ауысулар көрсетілген.
Команда |
Тексерілетін белгілер күйі |
Ауысу шарты |
JA |
CF = 0 и ZF = 0 |
Егер жоғары болса |
JAE |
CF = 0 |
Егер жоғары немесе тең болса |
JB |
CF = 1 |
Егер төмен болса |
JBE |
CF = 1 или ZF = 1 |
Егер төмен немесе тең болса |
JC |
CF = 1 |
Егер тасымал болса |
JE |
ZF = 1 |
Егер тең болса |
JZ |
ZF = 1 |
Егер 0 болса |
JG |
ZF = 0 и SF = OF |
Егер үлкен болса |
JGE |
SF = OF |
Егер үлкен немесе тең болса |
JL |
SF <> OF |
Егер кіші болса |
JLE |
ZF=1 или SF <> OF |
Егер кіші немесе тең болса |
JNA |
CF = 1 и ZF = 1 |
Егер жоғары болмаса |
JNAE |
CF = 1 |
Егер жоғары емес немесе тең болса |
JNB |
CF = 0 |
Егер төмен болмаса |
JNBE |
CF=0 и ZF=0 |
Егер жоғары емес немесе тең болса |
JNC |
CF = 0 |
Егер тасымал болмаса |
JNE |
ZF = 0 |
Егер тең болмаса |
JNG |
ZF = 1 или SF <> OF |
Егер үлкен болмаса |
JNGE |
SF <> OF |
Егер үлкен емес немесе тең болса |
JNL |
SF = OF |
Егер кіші болмаса |
JNLE |
ZF=0 и SF=OF |
Егер кіші емес немесе тең болса |
JNO |
OF=0 |
Егер асатолу болмаса |
JNP |
PF = 0 |
Егер нәтиже биттерінің қосындысы тақ болса (тақтық паритет) |
JNS |
SF = 0 |
Егер таңба оң болса (таңбалық (үлкен) бит нәтижесі 0 тең) |
JNZ |
ZF = 0 |
Егер 0 болмаса |
JO |
OF = 1 |
Егер асатолу болса |
JP |
PF = 1 |
Егер нәтиже биттерінің қосындысы жұп болса (жұптық паритет) |
JPE |
PF = 1 |
JP сияқты, яғни жұптық паритет |
JPO |
PF = 0 |
JNP сияқты, яғни тақтық паритет |
JS |
SF = 1 |
Егер таңба теріс болса (таңбалық (үлкен) бит нәтижесі 1 тең) |
JCXZ |
әсер етпейді |
Егер регистр CX=0 болса |
JECXZ |
әсер етпейді |
Егер регистр ECX=0 болса |
"Үлкен" және "кіші" логикалық шарттары таңбалы бүтін сан мәндері салыстыру үшін, ал "жоғары" және "төмен" — логикалық шарттары таңбасыз бүтін сан мәндерін салыстыру үшін қолданылады. Бірінші кездегі і8086 микропроцессорларындағы шартқа байланысты ауысу командалары қысқа ауысуларды ғана жасай алатын, ал қазіргі і386 микропроцессорларына қойылған шарт жоқ, олар ағымдағы сегменттің кез-келген жерінен ауысу жасай береді. Ал сегмент аралық ауысулар жасау үшін шартты ауысу командалары мен jmp шартсыз ауысу командаларын қосып қолданған дұрыс.
Басқаруды шартқа байланысты ауыстыру командаларына кез-келген белгінің күйін өзгерте алатын командалар кедергі келтіре алады, олар әдетте СМР салыстыру командасымен бірге қолданылады.
Циклды басқару командалары.
Циклды басқару командалары цикл ұйымдастыру кезінде шартты ауысу үшін қолданылады. Әрбір команда СХ регистріндегі санауыш мәнін 1 кемітіп отырады, ал одан кейін оның жаңа мәніне байланысты оны тоқтату керек па немесе әрі қарай жалғастыру керек па жайындағы шешім қабылдайды.
LOOP – циклды санауыш біткенге дейін қайталайды.
Команда форматы: LOOP таңба
Бұл команда СХ регистр санауыштың мәнін 1-ге азайтады және СХ регистрінің мәні 0-ге тең болғанға дейін басқаруды таңбаға береді. LOOP командасы циклды орындауын СХ регистрі 0-ге тең болған кезде ғана аяқтайды. Бірақ көптеген қосымшаларда белгілі бір шартты орындаса болғаны СХ регистрінің мәнін 0-ге тең болғанша күтпей-ақ аяқтау керек болатын жағдайлар кездеседі. Мұндай циклды аяқтау командаларына LOOPE (егер тең болса, циклды қайтала) және LOOPNE (егер тең болмаса, циклды қайтала).
LOOPE (LOOPZ) - циклды (нөлге) тең болғанша қайталайды. Команда СХ регистрінің мәнін 1-ге азайтады, одан кейін СХ регистрі 0-ге және ZF 1-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге және ZF регистрі 0-ге тең болған кезде, немесе олардың екеуі де 0-ге тең болған кезде аяқтайды. Әдетте LOOPE командасы нөлдік нәтиже іздеу операцияларында қолданылады.
LOOPNE (LOOPNZ) - циклды (нөлге) тең болмағанша қайталайды. Команда СХ регистрінің мәнін 1-ге азайтады, одан кейін СХ регистрі 0-ге тең емес және ZF 0-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге және ZF регистрі 1-ге тең болған кезде, немесе олардың екеуі де орындалған кезде аяқтайды. Әдетте LOOPNE командасы бірінші нөлдік нәтиже іздеу операцияларында қолданылады.
Негізгі әдебиеттер: 2[12-20]; 3[10-43]
Бақылау сұрақтары:
Алып – орналастыру командалары арқылы қандай деректерді орналастыруға болады?
Адрестерді алып – орналастыру кезіндегі MOV және LEA командаларының айырмышылығы?
Белгілер алып –орналастыру командаларына қалай әсер етеді?
Басқаруды ауыстыру командалары қандай топтарға бөлінеді?
LOOPE және LOOPNE командалары үшін циклдан шығу шарттары?
