Лекция: 52 сағ. Лаборатория сабақтар: 50 сағ СӨЖ: 17 сағ обсөЖ: 16 сағ Барлық сағат саны: 135 сағ



бет4/7
Дата14.06.2016
өлшемі0.69 Mb.
#135141
түріЛекция
1   2   3   4   5   6   7

Лекция 23.



Такырыбы: Стек жєне кайтару адресі.
Жоспары:

1. Стек туралы т‰сінік.

2. Стек жєне ќайтару адресі.
CALL инструкциясы жадтыњ ќай жерінде балмасын ќайтару адресініњ саќтауын с±райды, ол ‰шін микропроцессор инструкциясыныњ адресін білу керек. процедурадан шыѓып болѓан соњ, ж±мысын єрі ќарай жалѓастыру керек - ол жерде RET инструкциясы кездеседі. Ол ‰шін жадтыњ бір бµлігі т±ра келе стек атты. SP( аѓыл. `Staek Pointer` - указатель стека) микропроцессордыњ регистрі стектіњ ‰стін кµрсетеді, ал SS (аѓыл, `Staek Segment - сегиент стека) регистрі сегменттіњ номерін.
Микропроцессордіњ стекте ж±мысы дємханадаѓы падностардыњ стопкасы сияќты: стопканыњ ‰стіне келесі поднос ќойылса, тµменгі тµмен т‰седі. Соњѓы (‰стіндегі) поднос стопкада алуѓа бірінші кандидат болады. Сондыќтан таѓы бір стектіњ аты LIFO (ќысќаша аѓыл. “Last In, First Out”- “соңѓы келген, бірінші кеткен”). Б±л бізге керекті LIFO адресті ќайтару ‰шін енген шақыруды орындап болѓан соњ .

Мысалы соѓан ±ќсас:

396F :0100 Е8FDOO CALL 0200

:

396F :0200 Е8FDOO CALL 0300



396F :0203 С3 RET

:

396F:0300 Е8FDOO CALL 0400



396F:0303 С3 RET

:

396F:0400 С3 RET


100h адресіндегі инструкция басќа инструкцияны шаќырады 200h адресінде орналасќан, ал µзініњ кезегінде 300h адресінде инструкциясын шаќырады, алда 400h адресінде инструкцияны шаќырады, б±л жерде соњында біз (RET) ќайтару инструкциясын кµреміз. RET инструкциясына ќайтады, кейінгі соњѓы (CALL), 300h адресіндегі сондыќтан микропроцессор инструкциясыныњ орындауын жалѓастырады 303h адресінен. Ол жерде ол RET инструкциясымен кездеседі, ол стектен келесіні шыѓарады (203h) адресініњ ерте ќайтаруын сондыќтан микропроцессор инструкцияныњ орындалуын жалѓастырады 203h адресінен жєне т.б. Программаны енгізіп кµрейік, алдыњѓыѓа ±ќсас. Бірнеше енген шаќыруларды енгізейік, одан кейін трассировка жасап кµрейік. Б±л кµмектеседі процедураныњ шаќыруы орындалып жатќанын жєне программаѓа ќайтуын. Стектіњ ж±мысы ќызыќ болмауы м‰мкін, біраќ оны ќолданудыњ бірнеше амалы бар, сондыќтан оныњ ж±мыс істегеніњ т‰сінген сізге жєрдемі тиеді.
Әдебиеттер:

1. Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993

2.Assembler автор В. Юров Москва 2001

Лекция: 24-25.
Тақырыбы: PUSH, POP инструкциясының қолданылуы.
Жоспары:

  1. PUSH инструкциясының қолданылуы.

  2. POP инструкциясының қолданылуы.

Стек дегеніміз берілген сөздерді уақытша сақтайтын оптималды орын, шартта, біз өте абай болу керекпіз RET инструкциясының алдында стек қайтқанда (востановится). Біз білдік CALL инструкциясы қайту адресі болады стектің басына, сол уақытта RET инструкциясы стектің басынан сөзді извлекать одан кейін ІР регистеріне қосады (стектің ішінде төбеге көтеріледі, және стектің басына сөз түседі извлеченный ден кейін орналасқан).

Бұндай процедураны PUSH, POP инструктурасы арқылы орындауға болады, сонымен жазып және извлекающих стектен сөзді. Ол неге керек болуы мүмкін?

Ассемблерде регистрлердің мәнін сақтау оңай (олар айнымалылар болады) процедураның басында және қайтару оларды соңына RET инструктурасының алдына. Сондықтан процедураның ішінде біз бұл регистреерді қалай қолданғымыз келсе де солай қолданамыз, соңында мәні шыққанша .

Программалар көп уровнедегі процедуралардан тұрады әр уровень процедураны шақырады одан кейінгі. Регистрлерді процедураның басында сақтап қайтарамыз оларды соңына Сіздер көп білесіздер регистрлер сақтауды және қайтаруды біз программаның модулдік конструированиені айтқан кезде. Ал кәзір мысал келтірейік (енгізу он қажет емес) СХ және DХ регистрлерді сақтап және қайтарған.

396Ғ: 0200 51 PUSH CX

396Ғ: 0201 52 PUSH DX

396Ғ: 0202 В 90800 MOV DL

396Ғ: 0205 Е8Ғ800 CALL 0300

396Ғ: 0208 ҒЕСL INC DL

396Ғ: 020С 5A POP DX

396Ғ: 020D 59 POP CX

396Ғ: 020Е C3 RET
Бұл жерде РОР инструкциясы PUSH теріс орналасқан, POP сөзді өшіреді стекте соңынан орналасқан, ал DX ескі мәні стекте орналасқан “терең” СХ ескі мәнінен. СХ және DX регистрлері сақтап және қайтарады процедураның ішінде өзгерте алады олардың мәнің (200һ мәнінен басталатын) сол уақытта регистрлердің мәні процедуралармен қолданған бұны шақыратын сақталған. Сондықтан біз бұл регистрлерді локальды айнымалыларды сақтауға қолданамыз айнымалылар процедураның ішінде қолданатын, айнымалылардың мәніне әсер етпей шақырған программамен қолданатын.

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


Әдебиеттер:

1. Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993

2.Assembler автор В. Юров Москва 2001


Лекция 26.


Тақырыбы: Оналтылық санау жүйесін салыстыру оқудың жай әдісі

Жоспары:

1. Оналтылық санау жүйесін салыстыру

2. Оналтылық санау жүйесін салыстыру жай әдісі

Біз клавиатурадан енген символдарданы оқитын процедура құрмақшымыз және көрсететін оларды мұмкін ба оналтылық санау жүйеде мүмкін емеспа өткізу 0 ден Fh диапозонында. Өткізуге болмайтын символдар экранға шықпайды. Ол үшін “INT 21h” инструкциясы нөмір 8 қолданады символды оқитын бірақ оны экранға шығармайды. Сонымен біз көреміз (ағыл. “еcho”) экранда тек сол сандарды оналтылықтағы берілген диапозонда.

АН регистріне 8h ендіреміз одаң соң бұл ниструкцияны жібереміз “A” енгізіп боласап “G102” кейін.

3985:0100 CD21 INT 21


ASCII-код “А” (41h) Ah регистрінде орналасқан, бірақ “А ” Экранға шықан жоқ.

Осы инструкцияны қолдана программа клавиатурадан символдар оқи алады, экранда көрсетпей, сол уақытқа дейін қалған керекті оналтылық санды оқиды

(0 ден 9 және А дан F) одан кейін экранға шығарады. Осы процедура оны істейтін және оналтылқ символды оналтылық санға ауыстырады .

Процедура AL-де символды оқиды (“INT 21h” 203h адресі көмегімен) және тексереді, тура келгендігін ол шартқа CMP қолдана және условно аусу инструкциясы. Егер оқыған символ тура келмесе, онда условно аусу инструкциясы 8088 203 адресіне қайта жібереді, бұл жерде “INT 21h” басқа символды оқиды.

211h ќатарында 0 мен 9 арасында бізге керекті тура сан бар сондыќтан “0” символына код аламыз. АL регистрінде жауабын ќайтарамыз, DX регистрін енуін естен шығармай, процедураның басында сақтаған. А дан F-ке дейін цифра процесс аналогты. Б±л процедурада RЕТ инструкциясы екеу, байќаймыз, біраќ олар кµп болуы да м‰мкін , біреу болуы да м‰мкін.

Процедураны тексеретін программа.

3985: 0100 Е8FD00 САLL 0200

3985:0103 СD20 INТ 20


“Р” командасын немесе “С” командасын тоќтау н‰ктесі мен ќолданамыз алдыњѓыдай. САLL 200h инструкциясын орындау керек “INT 20h” орындамай регистрлерді алдын көру үшін, программа үзіледі регистрлер қайтады.

Экранныњ сол жаѓынан курсор шыѓады, символдыњ енгізуін к‰теді. Д±рыс емес болып есептелетін “к” символын енгізейік. Еш нєрсе болѓан жоќ. Енді енгізейік бір басты оналтылыќ символды . Сіздер АL де символдыњ оналтылыќ мєнің кµру керексіз жєне экранѓа шыќќан символдыњ µзін. Б±л процедураны граничные шартќа ќолданыњыз “\” ( нµлден алдын т±рѓан символды) “0”, “9” (“9” кейін т±рѓан символ).

Енді бізде осы процедура бар кезде, екі оналтылыќ санды оќитын программа, ќателерді тексереді µте жай т‰рде:

3985:0100 Е8FD00 CALL D200

3985:0103 88C2 MOV DL, AL

3985:0105 B104 MOV CL,04

3985:0107 D2E2 SHL DL,CL

3985:0109 E8F400 CALL 0200

3985:010С 00С2 ADD DL,AL

3985:010Е В4D2 MOV AH,02

3985:0110 CD21 INT 21

3985:0112 CD20 INT 20


Б±л программаны DOS-тан жібереміз, µйткені ол екі оналтылыќ санды оќиды одан соњ ASCII-символ шыѓады, сіз ендірген санѓа сай.
Әдебиеттер:

1. Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993

2.Assembler автор В. Юров Москва 2001

Қазақстан Республикасы Білім және Ғылым Министрлігі


“Сырдария” университеті

“Физика - математика” факультеті


“Информатика” кафедрасы
“Жүйелі программалауға кіріспе” пәні бойынша

050602 “Информатика” мамандығының студенттері үшін


ПРАКТИКАЛЫЌ САБАЌТАРЫНЫЊ ЖОСПАРЫ

Жетісай-2005 ж




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




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

    Басты бет