Дәрістер тезистері

Автор работы: Пользователь скрыл имя, 05 Мая 2013 в 11:35, курс лекций

Описание

Машиналық командаларды орындайтын және басқа да құрылғылардың қызметін координациялайтын процессорлық құрылғыларды, әдетте командалар жүйесінің процессоры (Instruction Set Processor, ISP) немесе жәй процессор деп атайды. Біз процессордың ішкі құрылымын талдаймыз және ол таңдауды, дешифрацияны орындауды және программа командаларын өңдеуді қалай орындайтындығына тоқталамыз. Компьютердің процессорлық құрылғысын әдетте орталық процессор деп атайды (Central Processing Unit, CPU). «Орталық» термині бұрын қолданылған компбютерлерге байланысты айтылған, өйткені ол кездегі компьютерлерде бір ғана команда процессоры қолданылған, ал қазіргі компьютерлік жүйелерде бірнеше процессорлар қолданылады, демек ол термин ескірген деп айтуымызға да болады.

Работа состоит из  1 файл

акс.doc

— 2.60 Мб (Скачать документ)



2.2. суреттің оң жағындағы  бес жалаушаның және аса толу жалаушасының күйлері арифметикалық және логикалық инструкцияларды орындаған кезде өзгереді. Жалаушалар өз мәнін деректерді берген кезде және басқару тізгінін ауыстыру командаларын орындаған кезде ешқашан өзгерпейді. Кейбір жалаушалар микропроцессор операцияларын қалыптастырған кезде қолданылады. Төменде жалаушалардың тізімі олардың қысқаша түсініктемелерімен бірге берілген (оларды толық жүйе командаларын өткен кезде қарастырамыз).

С (carry — ауысу)

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

Р (parity — паритет)

Бұл жалауша 0-ге орнатылады, егер операция нәтижесі кезінде бірге орнатылған биттер саны жұп болса; әйтпесе (егер операция нәтижесі кезінде бірге орнатылған биттер саны тақ болса), Р жалаушасы 1 орнатылады. Мысалы, егер сандағы бірлер саны үшеу болса, онда паритет тақ болады да, Р = 0 орнатылады. Егер сан 0 тең болса (барлық биттер 0 орнатылған), онда паритет жұп, және Р = 1. Р жалаушасы бірінші шыққан микропроцессорларда коммуникациялық қосымшаларды қолдау үшін құрылған. Қазіргі құрылғыларда қабылдауберу бірге қосылып жасалған сондықтан паритетті бақылау және қалыптастыру онша керек емес, сондықтан Р жалаушасы сирек кезеседі.

A (auxiliary carry — аралық ауысу)

Бұл жалауша қосу орындалған кездегі  үшінші биттен төртіншіге болған ауысу  мәнін қадағалайды (жартылау ауысу деп те аталады), немесе азайту орындалған кездегі төртінші биттен болған қарызды қадағалайды. А жалаушасының мәні daa және das индукцияларын пайдаланған кезде екілік – ондық сандарды қосу немесе азайту орындалғаннан кейін AL мәнін коррекциялағанда қолданылады. Бұл жалаушаның мәнінің басқа инструкцияларға қатысы жоқ.

 Z (zero — нөл)

Z жалаушасы 1 орнатылады, егер нәтиже 0 тең болса; 0 орнатылады, егер нәтиже нөлден басқа мән болса.

S (sign — таңба)

Бұл жалауша арифметикалық немесе логикалық операциялар орындалған кезде таңба битінің көшірмесінен тұрады. Егер S = 1, онда таңба теріс (сан нөлден кіші); егер S = 0, онда таңба оң (сан нөлге тең немесе одан үлкен).

TF (trap flag — қақпан жалаушасы)

Бұл жалауша  қадамдық орындалу кезіндегі  аппараттық қолдауды қамтамасыздандырады (мысалы, CodeView жөндегішінде). Егер трассировка режимі TF= 1 орнатылса, онда микропроцессор программаның орындалуын әрбір инструкция орындалған сайын үзеді.

IF (interrupt flag — үзу жалаушасы)

Бұл жалауша сырттан келетін  үзуге деген сұранысты INTR (interrupt request) кірісі бойынша рұқсат етеді. Егер IF - 1 кірісті тексеру INTR рұқсат етілген; егер IF = 0, онда INTR күйі микропроцессормен бақыланбайды.  IF жалаушасын 1 орнату sti (set I flag) инструкциясымен орындалады, босату — СF (clear I flag) командасымен орныдалады.

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

1. Процессордың қандай регистрлері программалы – қол жеткізерлік деп аталады?

2. 8 – биттік регистрлермен бірге  80286 микролпроцессорларында қолданылатын регистрлердің өлшемі қандай?

3.  Қандай микропроцессорларды кеңейтілген регистрлер кездеседі?

4.  ВХ регистрінің кеңейтілген варианты қалай бейнеленеді?

5. Кейбір инструкцияларды қолданған кезде қандай регистр үнсіздікпен санағыш ретінде қолданылады?

6.  IP/EIP регистрлері қандай жұмыс атқарады?

 

4-Дәріс. Адресациялау әдістері. Деректерді беру инструкциялары. Арифметикалық және логикалық инструкциялар.

 Арифметикалық және логикалық инструкцияларға қосу, азайту, көбейту, бөлу, салыстыру, терістеу, инкремент және декремент жатады. Логикалық инструкциялар қатарына келесі операциялар да жатады "ЖӘНЕ" (and). "НЕМЕСЕ" (or), "НЕМЕСЕ ЕМЕС" (xor), терістеу (жылжулар, циклдық жылжулар, сондай - ақ  логикалық салыстыру (test). 80386—Pentium 4 процессорлар жүйесінде, сонымен қатар, xadd, shrd, skj тексеру командасы және битті іздеу инструкцияларыда кездеседі. Егер сіз 8-биттік микропроцессорлармен таныс болсаңыз, онда сіз бұл 8086—Pentium 4 процессорларының командалар жүйесі өте қолайлы екендігіне көз жеткізесіз, өйткені инструкциялардың көбісі бір ғана емес екі операндпен жұмыс істеуге мүмкіндік береді.

Программалауды тиімді жүргізу  кез – келген инсирукцияларда, адресациялау әдістерінсіз мүмкін емес. Бұл бөлімде біз деректерді адресациялау әдістерін mov – деректерді алып – орналастыру инструкциясын пайдаланып мысалмен көрсетеміз. Бұл инструкция екі регистрдегі немесе регистр мен жады арасындағы деректерді алып – орналастыру үшін қолданылады. 8086—80286 процессорларында mov инструкциясы байт пен сөздерді көшіру үшін де қолданылады; ал 80386—Pentium 4 процессорларында ол сондай – ақ еклік сөздерді алып – орналастыруды орындайды. call және jump командаларының мысалымен инструкцияның адресациясын қарастырамыз және программаның орындалу ретін қалай ауыстыруға болатындығын көрсетеміз.

Деректерді адресациялау әдістері, 8086—80286 процессорларында таратылған, олар: регистрлік, тура, тікелей, регистрлік жанама, база бойынша индекстік, ығысуы бар регистрлік және база бойынша индекстеумен қатар ығысуы бар. Сондай – ақ  80386— Pentium 4 процессорлары масштабталған индекстік адресацияны да пайдаланады. 8086—Pentium 4 процессорларындағы инструкциялар адресациясы үшін оларда үш түрлі инструкция адресациясы қолданылады: салыстырмалы, тікелей және жанама. Стектегі деректердің адресациясы push және pop командаларының көмегімен көрсетіледі .

Деректерді адресациялау әдістері

Деректерді адресациялау әдістері оқып үйрену кезінде негіз ретінде mov инструкциясын алып қарастырамыз, өйткені ол ең көп тараған және адресациялау әдістерінде көп пайдаланылатыны болып саналады. 3.1 суретте mov инструкциясының мысалы көрсетілген. Команданың басында mov мнемоникасы жазылған, ал содан кейін операндтар көрсетілген. Операнд-таратқыш оң жағынан берілген, операнд-қабылдағыш — сол жағында. Таратқыш пен қабылдағыштың мұндай жазбаларының тәртібі бастапқыда қолайсыз болып көрінуі мүмкін — солдан оңға қарай ыңғайлырақ көрінуі мүмкін. Таратқыш және қабылдағыш міндетті түрде үтірмен ерекшеленеді. Ескерту, movs инструкциясы ғана бір командамен,  деректерді жадыдан жадыға көшіруге мүмкіндік береді.



 

3.1 суреттегі mov ах,вх командасы 16-биттік таратқыш мәнін — ВХ регистріне — ал қабылдағыш мәнін — АХ регистріне орналастыруды орындайды.

3.2 суретте mov командасының көмегімен деректерді адресациялау әдістерінің барлық мүмкін болатын үйресімдіктері келтірілген. Ескерту, мұндағы көрсетілген барлық адресациялау әдістері Intel микропроцессорларының барлық түрлерін бірдей арналып жасалған, ол тек бірінші 80386 процессорларында ғана пайда болған масштабтаумен байланысты индекстік адресациялауда ғана қолданылмайды.

Деректерді адресациялау әдістері, mov инструкциясының мысалымен қарастырылған.

Регистрлік  адресациялау

Регистр-таратқыштан  немесе жадыдан алынған байт немесе сөз көшірмесін регистр – қабылдағышқа немесе жадыға орналастыруды орындайды. Мысалы, mov cx,dx инструкциясы 16-биттік DX регистрінің мәнін СХ регистріне көшіруді орындайды. 80386—Pentium 4 процессорларында екілік сөздерді алып – орналастыруды орындауға болады. Мысалы: mov ecx,edx инструкциясы 32-биттік EDX регистрінің мәнін ЕСХ регистріне көшіреді.

Тура адресациялау

Байт немесе сөз форматындағы тура мәнді регистр  – қабылдағышқа немесе жадыға орнылыстыруды  орындайды. Мысалы, mov al,22h инструкциясы 22Н  байттық мәнді AL регистріне көшіруді орындайды. 80386— Pentium 4 процессорларында сондай – ақ екілік форматтағы тура мәндермен де жұмыс істеу жағдайлары қарастырылған. Мысалы, mov евх, 12345678Н инструкциясы 32-биттік 12345678Н константасын 32-биттік ЕВХ  регистріне көшіреді.

Негізгі әдебиеттер: [1] – 31- 800 б, [2] – 15-600 б.

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

  1. Қандай шарт бойынша JO командасы бойынша өту орындалады?
  2. Шартты қандай командалар таңбалы деректерді салыстыру үшін қолданылады?
  3. Шартты қандай командалар таңбасыз деректерді салыстыру үшін қолданылады?
  4. Шартты өтудің қандай командалары бірден Z және С жалаушаларының мәнін тексереді?
  5. JCXZ командасы бойынша өту қандай шартпен тексеріледі?

 

5-Дәріс. Басқаруды беру инструкциялары.

Басқаруды беру инструкциялары программалардың орындалу тізбегін өзгертуге, код фрагменттерін  өңдеуге мүмкіндіктер береді.

Орындалу тізбегін өзгерту жайындағы шешім негізінен көбінесе смр немесе test инструкцияларының шешімімен немесе шартты өту командаларының көмегімен орындалады. Бұл бөлімде ауысулармен қоса басқаруды беру, ішкіпрограмманы шақыру, қайтулар, үзулер және сондай – ақ ассемблердің логикалық операторларын басқаратын процессорлар командалары қарастырылған (директивалар .if, .ELSE, -ELSEIF, .ENDIF, .WHILE, .ENDW, .REPEAT И .UNTIL), MASM 6.x және TASM 5.x қолданылады. Логикалық операторлар, С тілінде таратылған, ассемблер тілінде құрылымдық программалауды автоматтандыруға көмектеседі.

Ауысу инструкциялары

Басқаруды шартсыз ауыстыру инструкциясы jmp (jump — ауысу) программа фрагментін тастап кетуге мүмкіндік береді және программа өз жұмысын ауысқан адрес бойынша бастайды. Ал шартты ауысу командалары шешемді деректерді тексеру нәтижесіне байланысты қабылдайды. Нәтижелер жалаушаларда көрсетіледі; олардың бағалануы шартты ауысу командаларының орныдалуына байланысты болады. Шартқа байланысты орындалатын инструкциялар, ол дегеніміз шартты ауысу және  шартты қойылым деп аталады

Шартсыз ауысу 

6.1 суретте шартсыз ауысу командаларының үш типі көрсетілген: қысқа (short), жақын (near) және алыс (far). Қысқа инструкция екі байтпен кодталады, ол басқаруды командадан 1-ден +127 байтқа дейін пайдалануға мүмкіндік береді. Үшбайттық жақын ауысу диапазоны басқаруды  ±32 Кбайтқа дейін өсіріп пайдалануға мүмкіндік береді, берілген сегмент ішінде. Ескерту, сегменттер циклдық ұйымдастырудан тұрады; бұл FFFFH ығысуынан кейін 0000Н ығысуы бар екендігін білдіреді. Сондықтан FFFFH адресінен екі байт алға жылжыса басқару 0001Н адресіне беріледі. Сөйтіп  ±32 Кбайт аймағындағы өту арқылы код сегментінің кез – келген адресіне жетуге болады. Сонымен, бесбайттық алыс ауысу инструкциясы барлық пайдалануға болатын жадыға қатынай алады. Қысқа және жақын ауысуларды сондай – ақ ішкі сегменттік деп, ал алыс ауысуды  — сыртқы сегменттік деп атайды.

80386—Pentium 4 процессорларында  қолғалған режимнің жақын ауысуы  ±2 Гбайтқа жетуі мүмкін; бірақ  мұндағы ауысу да ағымдағы  сегментпен шетеледі, оның өлшемі 4 Гбайт болады. Ал нақты режимде жақын ауысу ±32 Кбайтпен шектеледі. Қорғалған режимде 8O386—Pentium 4 процессорларында жақын ауысу командасы 32-биттік ығысумен беріледі (6.1 суретте ол көрсетілмеген).

 

Қысқа ауысу

 Қысқа ауысу, келешекте салыстырмалы түрде, адрестік аймақта командалардың ауысуын береді. Мұндағы ауысу машиналық кодтағы қысқа ауысуға абсолюттік есем адрес берілгендіктен. Қысқа ауысудың шектеуі +127 және —128 мәндерімен берілуі мүмкін. 6.2 суретте қысқа ауысу командасының орындалуы көрсетілген. Оның орындалуы кезінде микропроцессор таңбалы мәндерді 16 битке дейін ығыстырады және оны көрсеткіш инструкциясымен қосады (ip/eip).



 

 мысал 6.1 программа листингі, программа фрагментін өткізу үшін қысқа ауысудың инструкцияларын қолдану реті көрсетілген. Бұл мысалда сондай – ақ таңбаны (яғни адрестің символдық белгіленуі) ауыстыру инструкциясын қолдану реті де берілген. Көңіл аударыңыз, jmp short next операторындағы қысқа ауысу short директивасымен белгіленген. Көптеген ассемблерлер ауысудың ең қысқа формасын таңдайды, және ауысудың екінші командасы (jmp start), негізінен, ол да қысқа ауысу формасында кодталады. Бірінші командада ауысу адресі келесі инструкция (0009Н) және ығысу (17Н) адрестерінің қосындысымен есептеледісонымен ол 00I7H + 0009Н = 0020Н тең болады.

Неігізгі әдебиеттер: [1] – 31- 800 б, [2] – 15-600 б.

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

  1. Қысқа ауысу дегенді қалай түсінесіз?
  2. Қандай ауысу басқаруды ағымдағы код сегментінің кез – келген нүктесіне беруді орындауды?
  3. JMP қандай инструкциясы, жадыдағы адрестік аймақтың кез–келген нүктесіне ауысуды орындайды?
  4. Қандай ауысу бес байтпен кодталады?
  5. 80386—Pentium 4 процессорларындағы жақын ауысу диапазоны қандай?

 

6,7-Дәріс.  Ассемблерде программалау мүмкіндіктері.

Бұл тақырыпта біз MASM ассемблерінің макроқұралдарын және BIOS/DOS функцияларын пайдалана отырып программаларды өңдеуді қарастырамыз. Бұл тақырыпта макрокомандаларды, кітіпханаларды қолдана отырып модульдік программалау технологияларын, батырмадан енгізу үшін,  дисплейге шығару және файлдық енгізу/шығару үшін, маус драйвері үшін BIOS/DOS функцияларын және үзу мен резидентті программаларды өңдеуді қарастырамыз.

 

Ассемблер және компоновкалаушы

Ассемблер программасы орындалатын модульді ассемблер тілінің операторларымен бірге объектілік модульге ауыстыруды орындайды. 7.1 мысалда MASM 6.1 қолдана отырып орындалатын файлдың NEW.ASM трансляциясымен бірге берілген диалог программасы келтірілген. Бұл мысалда трансляция DOS командалық жолынан жіберіледі. Ескерту, Programmer's Workbench өңдеу ортасын шақыру кезінде программаларды командалық жол арқылы шақырудың керегі жоқ. Кей жағдайларда, ASM кеңейтулеріндегі орындалатын файлдар міндетті түрде WorkBench ортасында құрылып, редакциялануы керек.

7.1. мысал. MASM ассемблерінің диалогы

6.11 оны командалық жолдан щақыру  кезінде

C:\MASM611\FIIiES>nu /Flnew.lst new.asm

Microsoft  (R) Macro Assembler Version 6.11

Copyright (C) Microsoft Corp 1981-1993. All rights reserved.

assembling: new. asm

Microsoft (R)  Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved.

Информация о работе Дәрістер тезистері