Микроконтроллерлердің бағдарламалық Қамтамасыз етілуі



жүктеу 0,81 Mb.
бет2/4
Дата21.05.2018
өлшемі0,81 Mb.
#15458
1   2   3   4
Сурет 2. Программаны аудару (трансляция)
Берілген суреттегі программаны талқылайық. Аssume, segment, ends, end операторлары бар сөйлемдер трансляциядан өтпейді және жады аймағында көрсетілмейді. Олар тек трансляторға қызмет ақпаратын (assume – команданы аудару тәсілі, segment және end – сегменттер шегін, end – ағымды текстті өңдеу әрекетін аяқтау) жіберу үшін қажет.
2. MS-DOS басқарумен орындалатын программалар .СОМ және .ЕХЕ программалық файлдарының біреуіне қатысты болады. Олардың негізгі айырмашылығы - .СОМ программалары бір сегменттен тұрады және бұл сегментте программалық кодтар, мәліметтер және стек орналасады. Ал .ЕХЕ программаларында мәліметтер, стек үшін жеке сегменттер болады. Сонымен, .СОМ типтес программалардың өлшемі - 64 Кбайт, ал .ЕХЕ типтес программалардың өлшемі шектелмеген, себебі, оған программа мен мәліметтердің кез келген сегменттер саны кіреді.

.ЕХЕ программаның құрылымы мен жады

t
PSP

256 байттар
itle .ЕХЕ типтес программа ЕS,DS--->

text segment ‘Code’


Командалар сегменті
assume CS : text, DS : data CS---
> IP

myproc proc

mov AX, data


Мәліметтер сегменті


mov DS, AX

… ; программаның тексті


Стек сегменті
myproc endp SS

text ends

data segment <-SP

… ; мәліметтерді анықтау

data ends

stck segment stack

dw 128 dup(0)

stck ends

end myproc

.COM программаның құрылымы мен жады

t
PSP



256 байттар
itle .COM
типтес программа CS,DS,ES,SS--->

text segment ‘Code’


Программа және мәліметтер

Данные


assume CS : text, DS : text IP

org 100h


m
Стек
yproc proc

h
SP=FFFEh

ello db 'Здравствуй мир!$'

mov ah, 09h

lea dx, hello ;программаның тексті

int 21h


mov ax, 4c00h

int 21h


myproc endp

text ends

end myproc
Әдебиеті:

1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.

2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:

"Радио и связь", 1995.


Бақылау сұрақтары:

1 «Ассемблер» деген сөзі қанадай мағынаны береді?

2 Ассемблер тілінде жазылған программаның кеңейтілуі қандай?

3 *.СОМ және .ЕХЕ программалық файлдарының айырмашылығы неде?



Тақырыбы 4 Ассемблер синтаксисі. Командалар форматы.

Мақсаты: Ассемблердің синтаксисімен таныстыру.

Дәріс сұрақтары:

1. Ассемлердің синтаксисі.

2. Командалар форматы.

3. Үзілімдерді өңдеу.
1. Ассемблер тіліндегі программа бұл жады сегменттері деп аталатын жады блоктары. Программа бір немесе бірнеше блоктардан тұруы мүмкін. Ассемблер сөйлемдері төрт типтен тұрады:

  • командалар немесе ұсыныстар;

  • макрокомандалар;

  • директивалар;

  • комментариялар жолдары.


2. Ассемблердің сөйлемдері лексемалардан тұрады. Лексемалар келесі болып табылады:

  • идентификаторлар;

  • символдар тізбегі;

  • бүтін сандар.


3. Әр машиналық команда екі бөлімнен тұрады. Машиналық командаға келесі элементтер кіреді:

  1. префикстер өрісі;

  2. амал кодының өрісі;

  3. операндалар өрісі.

Сондықтан операндалардың тек келесі форматтары мүмкін:

  • регистр-регистр;

  • регистр-жады;

  • жады-регистр;

  • тікелей операнд-регистр;

  • тікелей операнд-жады.

3. Үзілімдерді өңдеу.

Түптекке байланысты үзілімдер келесі түрде жүктеледі:



    • аппараттық, бұл үзілімдер асинхронды, яғни кездейсоқ уақытта шығады;

    • программалық, операциялық жүйенің кейбір әрекеттерін орындайды;

    • ерекшеліктер, программалық үзілімдердің түрлері.


Әдебиеті:

1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.

2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:

"Радио и связь", 1995.


Бақылау сұрақтары:

1 Ассемблер сөйлемдері қандай типтерден тұрады?

2 Ассемблердің сөйлемдері недене тұрады?

3 Үзілімдерді өңдеу амалы дегеніміз не?



Тақырыбы 5 Ассемблер деректерінің қарапайым типтерін сипаттау.

Мақсаты: Ассемблер тілінде деректермен жұмыс жасау принциптерімен

таныстыру.



Дәріс сұрақтары:

1. Ассемблердің қарапайым мәліметтер типтерін сипаттау.

2. Адрестеу режимдері.

3. Сегменттелу директивалары.
1. Негізгі мәліметтер типтері:

  • байт;

  • сөз;

  • екілік сөз;

  • төрттік сөз.


2. Адрестеу режимі дегеніміз операнданы табу процедура. Адрестеудің келесі түрлерін анықтайды:

Регистрлі. Операнд регистрде орналасады.

Тікелей. Операнд командаға нұсқағыш болып келеді.

Тура. Жады адресталады.

Регистрлі жанама. микропроцессордың операциялық бөлім және
3. Пернетақта 3 негізгі пернелер типтерден тұрады:

  • символдық (А-дан Z-ке дейін), 0-9,%,$,# және т.б.

  • функционалдық пернелер (HOME, END, RETURN, DEL,INS,PgUp,PgDown,F1-F12, басқару тілсызықтары).

  • Басқару пернелері: ALT, CTRL, SHIFT (басқа пернелермен жұмыс орындалатын).

Әр перненің жеке скэн-коды бар (1(Esc) – 83 (del)) немесе (01h – 53h).

Осы скэн-кодтардың көмегімен программа кез келген перненің басылуын анықтайды.

Мысалы: пернетақтадан енгізілген бір символға сұрату, AH регистріне 00 жүктейді және Int 16h арқылы BIOS-қа қатынас беріледі.

Сондықтан Int 16h командасы орындалғаннан кейін, AL регистрінің мазмұнын тексеру қажет. Егер AL регистрінде 0 бар болса, онда функционалды перне басылғаны анықталады. Ал егер 0 – болмаса, онда символдық перненің коды алынады:

Mov ah,00 ; енгізу функциясы

Int 16h ; bios шақыру

Cmp al,00 ; функционалды перне

Jz exit ; иә - шығу


Скэн-кодтар:

«*» басылуы, 24һ символының кодын AL регистріне орнатады.

Мысал: «*» үшін скэн-кодты тексеру:

Cmp al,24h ; «*» ?

Jne exit1 ; жоқ - шығу

Cmp ah,09h ; қандай скэн-код

Je exit2 ;
Функционалды перне Скэн-код

Alt/A – Alt/Z 1E - 2C

F1 – F10 3B – 44

HOME 47


Жоғ.тілсызық 48

PgUP 49


Солға тілсызық 4В

Оңға тілсызық 4D

End 4f

Төм.тілсызық 50



PgDown 51

Ins 52


Del 53
Мысал: Home (скэн-код 47) пернесін басқанда курсорды 0 жолға және 0 бағанада орнату.

Mov ah,00 ; енгізу функциясы

Int 16h ; bios шақыру

Cmp al,00 ; функционалды перне

Jne exit1 ; Жоқ - шығу
Cmp al,24h ; «*» ?

Jne exit1 ; жоқ - шығу

Cmp ah,09h ; қандай скэн-код

Je exit2 ;


Әдебиеті:

1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.

2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:

"Радио и связь", 1995.


Бақылау сұрақтары:

1 Ассемблер тілінде деректермен жұмыс жасау үшін қандай типтер

қолданылады?

2 Адрестеу режимі дегеніміз не?

3 Регистрлі түрін сипатта.



Тақырыбы 6 Деректермен алмасу командалары.

Мақсаты: Ассемблер тілінде деректермен алмасу командаларымен

таныстыру.



Дәріс сұрақтары:

1. Мәліметтерді жіберу командалары.

2. Портқа енгізу-шығару командалары.

3. Адрестермен жұмыс істеу командалары.

4. Стекпен жұмыс істеу командалары.
1. Бұл топқа келесі командалар жатады:

mov <орнату операнды >,<операнд-түптек>

xchg <операнд1>,<операнд2>

mov – мәліметтерді жіберудің негізгі командасы. Ол жіберудің түрлі әдістерін қолданады.

Бұл команданы қолданудың ерекшеліктерін қарастырайық:


  • Mov командасы арқылы жадының бір аймағынан екінші аймаққа көшу мүмкін емес;

  • Тікелей жадыдан сегменттік регистрге жүктеу мүмкін емес;

  • Бір сегменттік регистрден екінші сегменттік регистрге мәліметті жіберу мүмкін емес;

Екі бағытты мәліметтерді жіберу үшін xchg командасы қолданылады. Мысал.

xchg ax,bx

xchg ax,word ptr [si]
Орталық процессорда келесі командалардың жинағы бар.

Мәліметтерді жіберу

MOV PUSH POP XCHG OUT IN

XLAT LEA LDS LES LAHF SAHF

PUSHF POPF

Арифметикалық амалдар

ADD ADC INC SUB SBB DEC

CMP MUL IMUL DIV IDIV NEG

AAA DAA AAS DAS AAM AAD

CBW CWD


Қисын амалдар

NOT SHL/SAL SHR SAR ROL ROR

RCL RCR AND TEST OR XOR

Мәліметтердің блоктарын өңдеу

REP MOVS CMPS SCAS LODS STOS

CMPB CMPSW LODSB LODSW MOVSB MOVSB

MOVSW REPE REPNZ SCASB SCASW STOSB

STOSW


Басқаруды беру командалары

CALL JMP RET

Шартты өту командалары

JA JLE JNL JS

JAE JNA JNLE JZ

JB JNAE JNO LOOP

JBE JNB JNP LOOPE

JC JNBE JNS LOOPNE

JCXZ JNC JNZ LOOPNZ

JE JNE JO LOOPZ

JG JNE JP JGE

JL JPE JNGE JPO

Үзілімдердің командалары

INT INTO IRET

Процессордың қалып-күйін басқару

CLС CMC STС CLD STD CLI

STI HLT WAIT ESC LOCK NOP
2. Төмеңгі деңгей болып BIOS табылады. Оның көмегімен және порттар арқылы құрылғылар басқарылады.

Порт нөмірлері туралы мәлімет, олардың разрядтылығы, ақпаратты басқару форматтары құрылғының сипаттамасында беріледі. Ол үшін микропроцессор командалар жүйесінен екі команда ғана қолданылады:

in аккумулятор, порт_нөмірі — порт_нөмірі нөмірімен порттан аккумуляторға енгізу;

out порт, аккумулятор — порт_нөмірі нөмірімен портқа аккумулятордың мазмұнын шығару.


3. Ассмеблерде програманы құрастырғанда жадыда орналасқан операндалар адрестерімен жұмыс жүргізіледі. Бұл амалдарды қолдайтын келесі командалар:

lea бекіту, түптек — ықтималды адресті жүктеу;

lds бекіту, түптек — ds мәліметтер сегмент регистріне нұсқағышты жүктеу;

les бекіту, түптек — es қосымша мәліметтер сегмент регистріне нұсқағышты жүктеу;

lgs бекіту, түптек — gs қосымша мәліметтер сегмент регистріне нұсқағышты жүктеу;

lts бекіту, түптек — fs қосымша мәліметтер сегмент регистріне нұсқағышты жүктеу;

lss бекіту, түптек — ss стек сегмент регистріне нұсқағышты жүктеу;.

Lea командасы mov командасына ұқсас, өйткені екеуі де жіберу амалын орындайды. Бірақ, lea командасы мәліметтерді емес, ал олардың ықтималды адрестерін жібереді.

Мысал: Жолдарды көшіру.

masm


model small

.data


str_l db 'Ассемблер — базовый язык компьютера'

str_2 db 50 dup (' ')

full_pnt dd str_l

.code


start:

lea si,str_l

lea di,str_2

les bx,full_pnt

ml:

mov al,[si]



mov [di],al

inc si


inc di

end start


4. Бұл топ стекпен ықтималды және жеңіл жұмыс істеу үшін бағытталған арнайы командалардан тұрады. Стек дегеніміз программаның мәліметтерін уақытша сақтайтын жады аймағы. Егер программист өзінің программасында стек сегментін жазуды ұмытса, онда tlink компоновщигі сәйкесінше хабарлама жібереді. Стекпен жұмыс істеу үшін үш регистр қолданылады:

  • ss — стек сегменттік регистрі;

  • sp/esp — стекке нұсқағыш регистрі;

  • bp/ebp — стек кадр базасына нұсқағыш регистрі.

Стек өлшемі микропроцессор жұмыс режиміне байланысты және 64 Кбайтпен шектеледі.

Int 21h, 01һ функциясы. Символды енгізу (экранға шығарып).

шақыру кезінде: АН=01h

қайтару кезінде: AL=енгізілген мәліметтердің байты.

Int 21h, 02һ функциясы. Символды шығару.

шақыру кезінде: АН=02h

AL= мәліметтердің байты.

Int 21h, 06һ функциясы. Тікелей енгізу - шығару.

шақыру кезінде: АН=06h

DL=символдың коды (00h-FEh) (енгізу кезінде)

DL = FFh (енгізу кезінде)

қайтару кезінде: AL = символдың коды (енгізу кезінде); егер символ жоқ болса, онда ZF = 1.

Int 21h, 08һ функциясы. Символды енгізу (экранға шығармай).

шақыру кезінде: АН = 08h

қайтару кезінде: AL = енгізілген мәліметтердің байты.

Int 21h, 09һ функциясы. Жолды шығару.

шақыру кезінде: АН=09h

DS:DX = буфердің адресі.

Int 21h, 0Аһ функциясы. Клавиатурадан буферленген енгізу.

шақыру кезінде: АН=0Аh

DS:DX = буфердің адресі

қайтару кезінде: мәліметтер буферге енгізілген. Буфердің форматы: байт 0 – жолдың болатын ұзындығы

байт 1 – енгізілген жолдың нақты ұзындығы

байт 2 және одан кейін – 0Dh аяқталатын жол.



Int 21h, 0Сһ функциясы. Енгізу буферін тазарту және енгізу.

шақыру кезінде: АН=0Сh

AL = енгізуге қажет функцияның нөмері (01, 07, 08, 0Аһ)

DS:DX = буфердің адресі (егер Al = 0Ah)

қайтару кезінде: енгізілген мәліметтердің байты (егер Al = 0Ah, онда мәліметтер буферде орналасады).
Ассемблерде жазылған программаның мысалы:

; комментарий

.model tiny ; жадының түрі

.stack 100h ; 256 байт өлшемді стек сегменті

.code

start:


....

....


....

outprog:

mov ax,4c00h ; программаны аяқтау

int 21h ; DOS үзілімі

end start
Уақыттың әр мезгілінде тек ss регистр адресі бар стекке қатынауға болады. Бұл стек ағымды деп аталады. Енді стекпен жұмыс істеудің келесі ерекшеліктерді қарастырайық:


  • LIFO (Last In First Out — "соңғы келді, біріңші кетті") принципіне байланысты стекте жазу және оқу жүзеге асырылады;

  • Стекке мәліметтер кіші адрестердің жағына қарай жазылады;

  • esp/sp және ebp/bp регистрлерін қолданғанда ассемблер автоматты түрде оның мәндерін ss сегменттік регистріне қарай ығыстырады.

Стекпен жұмыс істеу үшін ss, esp/sp және ebp/bp регистрлері қолданылады. Әр регистрде өзінің функционалды тапсырмасы бар. esp/sp регистрі әрқашан стек биіктігіне көрсетеді.

Стекпен жұмыс істеуді арнайы оқу және жазу командалары ұйымдастырады.

push түптек — түптек мәнін стек биіктігіне жазады. Жұмыстың алгоритмі келесі түрде болады:


  • (sp) = (sp) - 2; sp мәні 2-ге кішірейді;

  • түптектен алынған мәндер ss:sp көрсететін адресте жазылады.

pop тапсырмасы — стек биіктігінен алынған мәндер операнд көрсеткен орынға жазылады. рор командасының жұмыс алгоритмі push командасының алгоритміне керісінше:

  • стек биіктігінің мазмұны операнд көрсеткен орынға жазады;

  • (sp) = (sp) + 2; sp мәні көбейеді.

Қортындылай келе келесі амалдарды белгілейік:

  • ішкі программаларды шақыру;

  • регистр мәндерін уақытша сақтау;

  • жергілікті айнымалыларды анықтау.


Әдебиеті:

1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.

2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:

"Радио и связь", 1995.


Бақылау сұрақтары:

1 Мәліметтерді жіберу командалары дегеніміз не?

2 Портқа енгізу-шығару командаларына қандай командалар жатады?

3 Стек дегінімз не?

Тақырыбы 7 Басқаруды беру командалары.

Мақсаты: Ассемблер тілінде басқаруды беру командаларымен

таныстыру.



Дәріс сұрақтары:

1. Басқаруды беру командаларының классификациясы.

2. Шартсыз өту командалары.

3. Ассемблер тілінде процедура түсінігі.

4. Шартты өту командалары.

5. Циклдерді ұйымдастыру құралдары.
1. Микропроцессор командаларын әрекет принципі бойынша үш топқа бөлуге болады:

1. Шартсыз беру командалары:



  • шартсыз өту командасы;

  • процедураны шақыру және процедурадан шығу;

  • программалық үзілімдерді шақыру және программалық үзілімдерден шығу.

2. Шартты беру командалары:

  • салыстыру командаларының нәтижесі бойынша өту командалары;

  • анықталған флагтың қалып-күйі бойынша өту командалары;

  • есх/СХ регистрдің мазмұны бойынша өту командалары.

3. Циклді басқару командалары:

  • есх/сх санауышпен циклді ұйымдастыру командасы;

  • қосымша шарт бойынша.

Белгі арқылы басқаруды беруге болады. Белгі дегеніміз жадының ұяшығын анықтайтын символдық атау. Әр белгіге үш атрибутты меншіктеуге болады:

  • белгі сипатталған, код сегментінің атауы;

  • ығысу – белгі сипатталған код сегментінің басы байтта өлшенетін арақашықтық;

  • белгі типі немесе арақашықтық атрибуты. Соңғы атрибут екі мәнді қабылдай алады:

    • Near – код сегмент шегінде белгіге өту мүмкін;

    • Far – сегмент аралық басқару нәтижесінде белгіге өтуге болады.

Белгіні екі тәсіл арқылы анықтауға болады:

Символдық_атауы: ассемблер_командасы

Символдық_атауы label белгі_типі
2. JMP белгі – команданың ағымдағы сегментінде не оның шекарасында шартсыз өтулерді ұйымдастыру үшін қолданылады. Нақты бір шарттар кезінде және қорғалған режимінде jmp командасы есептердің қосылуы үшін де қолданылады.

Жұмыс алгоритмі: jmp командасы өзінің операндасына байланысты eip регистрінің біреуін мазмұнын не cs мен eip регистрлерінің:


  • егер jmp командасында операнд, онда ассемблер машиналық команданы қалыптастырады;

  • егер jmp командасында операнд символдық болса, онда ассемблер басқаруды қандай адреске жүктеу керектігін көрсетеді

Модификатор келесі мәндерді қабылдай алады:

Near ptr – код сегментінің ішіндегі белгіге тікелей өту;

Far ptr – басқа код сегментінің ішіндегі белгіге тікелей өту;

Word ptr - код сегментінің ішіндегі белгіге жанама өту;

Dword ptr – басқа код сегментінің ішіндегі белгіге жанама өту.

Шартсыз өту командалары 5 түрде қолданылуы мүмкін. Өту болуы мүмкін:



  • Тікелей қысқа (-128...+127 байттар шегінде);

  • Тікелей жақын (команданың ағымдағы сегмент шегінде);

  • Тікелей алыс (команданың басқа сегмент шегінде);

  • Жанама жақын;

  • Жанама алыс.


3. Процедура (ішкі программа) – бір есептің декомпозициясының негізгі функционалды бірлігі.

Процедура программада орналасуы мүмкін:



  • програманың басында;

  • программаның соңында;

  • аралық вариант – процедураның мәні басқа процедурада орналасады;

Call [модификатор] процедура_атауы – процедураны шақыру.

Ret [сан] – шақырылатын программаны қайтару.

Ішкі программаны шақыру 4 түрде үйымдастырылады. Шақыру мүмкін:


  • тікелей жақын;

  • тікелей алыс;

  • жанама жақын;

- жанама алыс.
4. Бұл командалар тексереді:

Синтаксисі:

Jcc өту_белгі

сс – нақты шартты анықтайды.

Шарттың түптектері:



  • арифметикалық флагтарды өзгертетін командалар;

  • cmp салыстыру командасы;

  • есх/сх регистрінің қалып-күйі.

Cmp командасының синтаксисі:

cmp операнд1, операнд2 – екі операнданы салыстырады және нәтижеде флагтарды орнатады.

Мысал. Символдардың регистрлерін алмастыру.

Model small

.stack l00h

.data


n equ 10

str db 'jurynvceir'

.code

start:


mov ax,@data

mov ds,ax

xor ax,ax

mov cx,n


lea bx, str

ml:


mov al,[bx]

cmpal,61h

jb next

cmp al,7ah



ja next

and al, 11011111 b

mov [bx],al

next:


inc bx

dec ex


jnzml

exit:


mov ax,4c00h

int 21h


end start
Шартты өту командасы және есх/сх регистрі.

Jcxz белгі_өту – егер сх 0 емес, онда өту.

Jecxz белгі_өту – егер есх 0 емес, онда өту.
5. loop белгі_өту - циклді қайтару. Циклдің санауышын автоматты түрде кішірететін команда болып келеді. Команданың жұмысы:


  • есх/сх регистрінің декременті;

  • есх/сх-ті 0-мен салыстыру;

Мысал. Циклді басқару командасын пайдалана отырып, нөлдік байттарды санау.

Model small

.stack l00h

.data


len equ 10

mas db 1,0,3,7,2,8,0,3,8,0

.code

start:


mov ax,@data

mov ds,ax

mov cx,len

xor ax,ax

xor si,si

jcxz exit

cl: cmp mas [si],0

jne ml


inc al

ml: inc si

loop cl

exit:


mov ax,4c00h

int 21h


end start
Бір циклдің екінші циклге енгізілген программаның үзіндісін қарастырайық:

mov сх, 100



cl:

push сх


mov cx,50

с2:

push сх


mov cx,25

сЗ:



loop сЗ



pop сх


loop c2

рор сх



loop cl
Мысал. Бірнеше секундқа тоқтау программалық үзінді.

Mov cx, 10

Outer: push cx

Mov ex, 0

Inner: loop inner

Рор сх


Loop outer

IN аккумулятор, номер _ порта – аккумуляторға мәндерді енгізу.

Жұмыс алгоритмі: байт, сөз, екілік сөзді енгізу-шығару портынан al/ax/eax регистрлеріне жібереді.

OUT номер _ порта, аккумулятор – енгізу-шығару портына аккумулятордың мазмұнын шығару.

Жұмыс алгоритмі: байт, сөз, екілік сөзді al/ax/eax регистрлерінен портқа жібереді.

Скан-кодты оқу және қабылдау келесі түрде болады:

in al,60h

push ax

in al,61h

or al,80h

out 61h,al

pop ax


out 61h,al
8-биттік мәндерді жазу үшін келесі программа қолданылады:

my_proc proc near

push ax

push bx


...

pop bx


pop ax

ret


endp
Әдебиеті:

1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.

2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:

"Радио и связь", 1995.


Бақылау сұрақтары:

1 Процедура дегеніміз не?

2 Микропроцессор командаларын әрекет принципі бойынша неше топқа

бөлуге болады?

3 Шартсыз беру командаларына ата.

4 Қандай шартты беру командалары бар?

5 Циклді басқару командалары дегеніміз не?




Тақырыбы 8 Тізбекті командалары.

Мақсаты: Ассемблер тілінде тізбекті командаларымен таныстыру.

Дәріс сұрақтары:

1. Микропроцессордың құраладарын сипаттау.

2. Тізбектерді жіберу.

3. Тізбектерді салыстыру амалдары.

4. Тізбектерді сканерлеу.

5. Аккумуляторға тізбек элементін жүктеу.

6. Аккумулятордан тізбекке элементті жүктеу.
1. Тізбекті командалар дегеніміз символдар жолын өңдейтін командалар. Символдар жолы – байттар тізбегі. Тізбекті командалары келесі өлшемдес элементтердің тізбектерімен көптеген амалдар жүргізеді:

  • 8 бит — байт;

  • 16 бит — сөз;

  • 32 бита — екілік сөз.

Енді амалдар-примитивтерді сипаттайық:

тізбекті жіберу:

movs қабылдағыш_адресі, түптек_адресі

movsb

movsw

movsd
тізбектерді салыстыру

cmps қабылдағыш_адресі, түптек_адресі

cmpsb

cmpsw

cmpsd
тізбектерді сканерлеу

scas қабылдағыш_адресі

scasb

scasw

scads
тізбектен элементті жүктеу:

lods түптек_адресі

lodsb

lodsw

lodsd
тізбекте элементті сақтау:

stos қабылдағыш_адресі

stosb

stosw

stosd
енгізу-шығару портынан тізбекке енгізу:

ins қабылдағыш_адресі, порт_нөмірі

insb

insw

insd
енгізу-шығару портынан тізбекке шығару:

outs түптек_адресі, порт_нөмірі

outsb

outsw

outsd
2. Жадының аймағынан екінші аймаққа элементтерді көшіруді орындайтын командалар амалдар-примитивтер деп аталады.

Мысал. movs командасы арқылы жолды жіберу.

MASM

MODEL small



STACK 256

.data


source db Тестируемая строка', '$'

dest db 19DUP(' ')

.code

assume ds:@data,es:@data



main:

mov ax,@data

mov ds,ax

mov es,ax

cld

lea si,source



lea di,dest

mov cx,20

rep movs dest, source

lea dx,dest

mov ah,09h

int 21h


exit:

mov ax,4c00h

int 21h

end main


3. Түптек - тізбек элементтерін қабылдағыш - түптек элементтерімен салыстырады.

Мысал. cmps командасы арқылы екі жолды салыстыру

MODEL small

STACK 256

.data

match db 0ah,0dh, 'Строки совпадают.','$'



failed db 0ah,0dh, 'Строки не совпадают','$'

stringl db 'O123456789',0ah,0dh,'$';исследуемые строки

string2 db '0123406789','$'

.code


ASSUME ds:@data,es:@data

main:


mov ax,@data

mov ds,ax

mov es,ax

mov ah,09h

lea dx,stringl

int 21h


lea dx,string2

int 21h


cld

lea si,stringl

lea di,string2

mov ex, 10

cycl:

гере cmps string1,string2



jcxz equal

jne not_match

equal:

mov ah,09h



lea dx, match

int 21h


jmp exit

notjnatch:

mov ah,09h

lea dx, failed

int 21h

dec si


dec di

inc si


inc di

jmp cycl
exit:

mov ax,4c00h

int 21h
end main


4. Микропроцессордің командалар жүйесі программистке тізбектерді сканерлеудің төрт командасын ұсынады.

Мысал. sсas командасы арқылы жолда символды іздеу



жүктеу 0,81 Mb.

Достарыңызбен бөлісу:
1   2   3   4




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау