Файл қосу

Операциялык жүйенің негізгі командалары




|ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БIЛIМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛIГI                    |
|СЕМЕЙ ҚАЛАСЫНЫҢ  ШӘКӘРIМ АТЫНДАҒЫ МЕМЛЕКЕТТIК УНИВЕРСИТЕТI                |
|3-деңгейлi СМЖ құжаты          |ПОӘК              |                        |
|                               |                  |ПОӘК                    |
|                               |                  |042-18-11.1.20.56/03-201|
|                               |                  |3                       |
|ПОӘК                           |№1 баспа          |                        |
|«Жүйелік бағдарламалық         |26.08.2013 ж.     |                        |
|қамтамасыз ету» пәнінің        |                  |                        |
|оқу-әдістемелік материалдары   |                  |                        |








                   «ЖҮЙЕЛІК БАҒДАРЛАМАЛЫҚ ҚАМТАМАСЫЗ ЕТУ»



                     ПӘНІНЕН ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР





                   5В070200 –«Автоматтандыру және басқару»
                            мамандығына арналған






                         ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР






























                                    Семей
                                    2012

                                   мазмұны





      1. Глоссарий

      2. Дәрістер
      3. Практикалық және лабораториялық сабақтар
      4. Студенттің өздік жұмысы





      1. глоссарий


ЭЕМ   архитектурасы   -   ЭЕМ-ң   құрылымдық,   схемотехникалық,   логикалық
ұйымдастырылуын көрсететiн абстрактiлi көрсетiлуi.

Жадының сызықтық кеңiстiгi – адрес номерлерi тiзбектi  түрде  тағайындалатын
жады ұяшықтарының жиынтығы.

Басқару  құрылғысы  -  команда  кодтарын  дешифрациялап,  қажеттi    басқару
сигналдарын таратады.

Арифметикалық-логикалық құрылғы  мәлiметтердiң  қажеттi  арифметикалық  және
логикалық түрлендiрулерiн жүргiзедi.

Регистрлер басқарушы ақпаратты,  яғни  адрестер  мен  мәлiметтердi  сақтауға
арналған.

Байт ЭЕМ-ң негiзгi жадысының минималды адрестелетiн бiрлiгi.

Сегменттер  програмалар  мен  мәлiметтердi  негiзгi   жадыда   орналастыруға
арналған арнайы облыстар.

Стек   мәлiметтер мен адрестердi уақытша сақтауға  арналған  жадының  арнайы
ұйымдастырылған облысы.

Сөз – тiзбектi адресi бар екi байттан тұратын тiзбек.

Қос сөз – тiзбектi адрестер бойынша орналасқан төрт байттан (32бит)  тұратын
тiзбек.

Төрттiк сөз - тiзбектi адрестер бойынша орналасқан сегiз  байттан  (64  бит)
тұратын тiзбек.




2. Дәрістер





 1-дәріс.  Кiрiспе. Жүйелiк программалау және оның негізгі ұғымдары. Дербес
                     компьютердың архитектурасы. (3 сағ)

      Дәріс сабағының құрылымы:
        1. Жүйелік программалаудың кезеңдері.
        2. ЭЕМ- ның архитектурасы.
        3. MS DOS операциялық жүйесінің қүрылымы BIOS жүйесi.

      1) Жүйелік программалаудың кезеңдері.
      Компьютердің  программалары  қолданбалы  және  жүйелік   болып   екіге
бөлінеді. Қолданбалы программанаң жүйеліктен айырмашылығы –  ол  компьютерге
тікелей  байланысты   болмайды.   Ал   жүйелік   программалар   компьютердің
архитектурасын және құрылымын басқарады.
      Жүйелiк   программалау  курсы  екi  бөлiмнен  тұрады:  теориялық  және
тәжірибелік.
      Жүйелiк программалаудың кезеңдерi:
1. Ассемблеу жүйесін жасау;
2. Байланысу программаларын жасау;
3. Микропроцессорлар жүйесін жасау;
4. Компиляторлар құру;
5. Операциялық жүйелер құру;
6. Драйверлер құру.
  1. Ассемблерлеу жүйесі негізгі командалық файлды жүктеушіге ауыстырады.
  2.  Байланысу  программалары  жеке  жүктелетін   логикалық   байланысатын
     программалар арасында байланыс орнатады.
  3. Микропроцессорлар жиі қайталанатын топтарды бір  ғана  микроқұрылыммен
     алмастыруға мүмкіндік береді.
  4. Компилятор кодтарды генерациялау кезінде аппараттардың  сипаттамаларын
     санайды.
  5. Операциялық жүйелер ЭЕМ-ның жұмысын толық  басқаратын  және  қолданушы
     мен интерфейс арасында диалог орнататын программа.
  6. Драйверлер перифириялық қондырғылардың жұмыс жасауын қамтамасыз етеді.
      Ассембер тiлi  –  машиналық  кодтардың  символдық  аналогы.  Ассемблер
программасын құру келесi кезеңдерден тұрады:
1. Программа текстiн редакциялау  кезеңi
2. Ассемблерлеу немесе трансляциялау кезеңi
3. Құрастыру кезеңi
4. Жүктеу кезеңi
      1-кезеңде Ассемблерлiк программа  Windows  жүйесiнiң  Блокнот  текстiк
редакторында және MS-DOS жүйесiнiң  NC.exe,  FAR.exe,  DN.exe   программалық
қабықшаларының текстiк  редакторларында  жазылады  да,  жазылған  текст  asm
кеңейтілуімен сақталынады.
      2- кезеңде   ассемблерлеу  кезеңi  орындалады.  Бұл  процесс  tasm.exe
программасының   көмегiмен  жүргiзiледi.  Құрылған  программа  мына   файлда
сақталу қажет C dir  student\basic  -  STUDENT  каталогына    кіретін    BASIC  ішкі
каталогының мазмүнын экранға шығарады;
      ә) C:\STUDENT\BASIO dir_*.bas - ағымдағы  STUDENT\BASIC  каталогындагы
заты  BAS  болып  келген  барлық  файлдардың  атрибутының  тізімін   экранға
шыгарады .
      б)  А:\>  dir  alma.bas  -  ALMA.BAS  файлының  атрибуттарын   экранга
шығарады.
      Каталог мазмүнының тізімі үлкен болған жағдайда -информацияны парақтап
экранга шыгару үшін қосымша /Р параметрі  қолданылады.  Бүл  жағдайда  экран
беті информацияга толган соң информацияны экранға беру токтайды,  жалғастыру
үшін кез келген пернені басу керек.
      С:\> dir /р       немссс    С:\> dir   student\basic /p
      Информацияны экранға жинакты (бір жолға  бірнеше  файл  жазу)  түрінде
шығару үшін /W параметрі колданылады. Бүл  жағдайда  файлдардың  аттары  мен
түрлері ғана экранға шығады, мысалы,
      А:\> dir /р        немесе      C:\LEX> dir   /w
      DIR командасы берілген тізімді тек дисплейдің  экранына  шығарып  қана
қоймай, принтерге шығаруға және файлға жазып коюға мүмкіндік береді.
      C:\>dir > prn - С дискісіндегі түпкі каталогтың тізімін принтер арқылы
кағазға басып aлy;
      A:\>dir > spisok - тізімді SPISOK атты файлға жазып алу;
      Ескерту. Команданын атынан кейінгі  сызықша  белгісі  осы  орынга  кем
дегенде бір бос орынның кажеттілігін көрсетеді
      2.    MD (Make Directory - каталог жасау) - ағымдағы кез келген
каталог ішінен жаңа каталог ашу командасы, мысалы,
      С:\> md     student - С дискісінің түпкі каталогынан STUDENT атты жаңа
каталог ашу;
      С:\>  md  student\basic      немесс     C:\STUDENT>  md       basic  -
STUDENT каталогында BASIC ішкі каталогын ашу.
      3.    RD (Remouve Directory - катологты жою) - ішінде файлдары
жок бос каталогтар мен ішкі каталогтарды жою командасы, мысалы,
      C:\STUDENT\BASIС> rd tecno2  -  STUDENT  каталогының  ішіндегі  екінші
дәрежелі BASIC атты ішкі каталогынын үшінші дәрежелі TECN02  ішкі  каталогын
жою;
       С:\> rd    student\basic\tecno2 -  түпкі  каталог    ағымда    болған
жагдайда tecno2 ішкі каталогін жою;
      4. CD (Change Directory - каталог ауыстыру) -  бір  каталогтан  екінші
каталогка  кошу  командасы.  Жоғарғы  дәрежедегі  каталогтарга   кошу   мына
параметрлер ".." ,  "\" арқылы іске асады. Мысалдар:
      а)     С:\>cd_student\basic-STUDENT  каталогының   BASIC   атты   ішкі
кататогына кошу:
      э) C:\STUDENT\BASIС> cd.. - BASIC ішкі каталогынан STUDENT  каталогына
кошу;
      б)    C:\STUDENT\BASIC\TPOP2>cd\ - басқа (түпкі) каталогқа кошу;
      в)    C:\STUDENT\BASIO cd..\lеx - BASIC каталоганан STUDENT каталогына
кайтып оралып, LEX ішкі каталогына кошу;
      г) C:\STUDENT\BASІC\ECONOM2> cd .. \.. - ECONOM2 ішкі каталогынан  екі
сатыға жоғары STUDENT каталогына кошу.
      Файлдармен жүмыс істейтін командалар
      Бүл топқа COPY, REM, DELETE, TYPE, DATE, TIME  жөне  т.с.с  командалар
жатады.
      1. COPY - файлдарды кошіру  командасы.  Файлдарды  кошіргенде  файддың
бүрынгы атын сақтап (егер олар басқа  каталогқа  көшірілетін  болса)  немесе
атын озгертіп кошіруге болады. Параметр ретінде
қандай файл, қайдан,  қайда  жоне  қандай  атпен  кошірілетіні  көрсетіледі.
Жалпы түрде команда форматын былай көрсетуге болады: copy    <қайдан,  нені>
<қайда>
      Файл атауларында оларды топтап белгілеуге мүмкіндік беретін  нүсқа  (*
және ?) таңбаларды пайдалануга рүхсат етілген, мысалы,
      а) C:\> copy     а:\*.*     с: - А: дискісіндегі барлық  файлдарды  С:
дискісіндегі жүмыс істеп түрған ағымдагы каталогқа көшіру;
      ә) С:\> copy     alla.bas_alma.bas - түрі BAS болып келкен  ALIA  атты
файлды, озі орналасқан сол каталогкд ALMA.BAS  деген  атпеп  көшіру  (екінші
кошірмесін ботен атпен алу);
      б) C:\STUDENT\LEX> copy     a:\port.txt  -  А:  дискісіндегі  port.txt
файлын ағымдағы LEX каталогына өз атымен кошіру;
      в)  С:\>  copy_knl.txt+b:\kn2.txt+a:\kn3.txt_kniga.txt   -   С:,   А:,
В:дискілеріндегі файлдарды KNIGA.TXT дсген атпен  С:  дискісіне  бір  файлга
көшіру (біріктіру);
      г) С:\> сору     con   proba.txt - пернелерден (консоль - con)  терген
тексті PROBA.TXT файлына енгізу, бул  жагдайда  PROBA.TXT  деген  жаңа  файл
пайда болады.   Тексті теріп   болғанды   білдіретін   белгі ретінде  Ctrl+Z
жөне Enter пернелері қолданылады;
      ғ) С:\> copy talgat.txt+con talgat.txt -  TALGAT.TXT  файлының  соңына
пернелерден  терген текст жолдарын қосу;
      д) С:\> copy_con+talgat.txt  talgatl.txt  -  TALGAT.TXT  файлының  бас
жағына пернелерден терген текст  жолдарын  косу.  Бұл  жағдайда  нәтиже-файл
бастапкы файлдан ботен атпен аталуы қажет;
      е) С:\>    copy  con   prn — пернелерден терілген символдарды  принтер
арқылы кағазға басып алу, "баспа машинкасы" режимі;
      ж) С:\> сору port.txt  prn - текстік файлды қағазға басып алу;
      2.     REN  (RENAME)   -   файлдардың   аттарын   озгерту   командасы,
параметрлері файлдардың ескі жөне жана аттары, мысалы,
      а) С:\>  rеn port.txt  dora.txt -  PORT.TXT атты файлды DORA.TXT дсгсн
атқа ауыстыру;
      ө) С:\> rеn  *.doc       *.txt  —  ағымдағы  каталогтағы     заты  DOC
файлдардың бәрінің затын ТХТ деп озгерту;
      3.    DEL (DELETE) — ағымдағы немесе  корсетілген  каталогтағы  файлды
нсмесе файддар тобын ошіру командасы, мысалы,
      а) С:\> del alla.bas — ALLA.BAS файлын ошіру;
      ө)  С:\>     del    \basic\*.bas  —  BASIC  каталогындағы   заты   BAS
файлдардың бәрін жою;
      б) C:\PRIMER>    del   *.* -  PRIMER  каталогындағы  барлык  файлдарды
жою.
      Бір емес бірнеше файлдарды, яғни файлдар тобын  жоюға команда бергенде
 операциялық жүйе томендегі корсетілгендей ескертеді:
Are you sure? Y/N?     (Сіз сенімдісіз бе? Ио/Жок)
      Ү өрпін таңдау арқылы файлдар тобын жойғымыз келетінін, N әрпін тандау
арқылы, жою операциясынан бас тартқанымызды білдіреміз.
      4.    TYPE командасы - текстен түратын файлдың  ішкі  текстін  экранға
шығару.
      С:\>   type program.txt -  PROGRAM.TXT      файлының  текстін  экранға
шығару;
      С:\> type    student\lex\progl.txt - PROGl.TXT файлын экранға шығару;
      С:\> type   program.txt>prn -  файлдың  мазмұнын  баспаға  (принтерге)
шығару;
      5.    DATE  командасы  -  үстіміздегі  (ағымдағы)  ай,  күн  жөне  жыл
мерзімін  экранға шығару және оны озгерту;
      C:\>DATE -  операциялык  жүйеде  (компьютер  таймерінде)   белгіленген
мерзімді (датаны) экранға шығару жөне  жана  мерзімді  енгізуді  талап  ету.
Қайтадан жаңа мерзімді енгізу үшін, пернелерден мына команданы теру керек:
       DATE_MM-DD-YY
       мүндағы MM- ай нөмірі (1-12),    DD - күн саны (1-31), ҮҮ -жылы.
      Бүл белгілер мынадай таңбалармен "—" , "/" бөлініп жазылады, мысалы,
      С:\> date - бүл команда экранга мына жолды шыгарады:  Агымдагы  мерзім
3-16-1997
      Жаңа мерзімді енгізіңіз (mm-dd-yy): Егер мерзім  қате  болып  ағымдағы
мерзімді өзгерткіміз келсе, онда жогарыда көрсетілген қалып бойынша  қажетті
сандар енгіземіз.
      6.    TIME командасы - ағымдағы уақытты экранга шыгару  және  қайтадан
езгерту, бүл команда форматы алдыңғы — date командасына үксас.
      С:\> time — компьютер таймерінін  ағымдағы  уақытын  экранга  шығаруды
және ол дүрыс болмаса, жаңа уакытты енгізуді талап ету.
      Жүмыс нәтижесі:
      Агымдагы уақыт    11:22:39.82
      Жаңа уақытты снгізініз (HH:MM:SS):
      мүндағы, НН - сагаты (0-23), ММ-минуты (0-59), SS-секунды (0-59).
      Жаңа уақытты енгізу үшін пернелерден сагатка,  минутқа  жене  секундқа
сәйкес сандарды тереміз.
      7.    PATH (жол) командасы керекті файлдар автоматты  түрде  ізделетін
каталогтар тізімін алдын ала корсетуге арналған. MS DOS жүйесі қажет  болған
файлды агымдагы каталогтан таба алмаса,  осы  команда  параметрлері  ретінде
келтірілген каталогтардан іздейді. Бүл
команда  кобінесе  компьютер  іске   косылганда   бірден   автоматты   түрде
орындалуға тиіс autoexec.bat файлында болады.  Ол  жиі  колданылатын  қызмет
жасау файлдары орналасқан каталогтарды корсстеді, мысалы: path с:\,  c:\dos;
c:\nc; c:\windows; d:\utilit; d:\my; d:\text
      8.    CLS (Clear Screen — экран тазарту) экранды тазартып  операциялық
жүйенің жүмыска шакыру катарын сол жақ жогарғы  бүрышқа  орналастырады.  Бүл
команда сls түрінде параметрсіз теріліп,  соңынан Enter псрнесі басылады.


                             Ұсынылатын әдебиет:
                                 1. Негізгі
Юров В. Asstmbler. – Издательство «Питер», 2000.
Финогенов.  Основы языка Ассемблера.
                                 2. Қосымша:
Нортон. IBM.PC, 1991.

      2-дәріс.  Ассемблер программасының құрылымы

Дәріс сабағының құрылымы:
   1. Ассемблер синтезі
   2. Айнымалыларды сипаттау
   3. Айнымалыларды сипаттау синтезі

      1. Ассемблер синтаксисi дегенiмiз  бұл  командалар  мен  операндтардың
белгiлi-бiр синтаксистiк ережеге бағынуы.  Ассембелер  тiлiнде  программалау
кезiнде жадыны адрестеу тәсiлдерi, массивтер, айнымалылар қолданылады.





      2. Айнымалыларды сипаттау

      Турбо Ассемблерде айнымалыларды сипаттау үшiн  арнайы  идентифиаторлар
қолданылады:Оларға:
    • DB (Dimension Byte) –1 байт өлшемдi айнымалыны сипаттау.
    • DW (Dimension Word) – 2 байт өлшемдi айнымалыны  сипаттау.  (машиналық
      сөз)
    • DD (Dimension Double word)  –  4  байт  өлшемдi  айнымалыны  сипаттау.
      (екiлiк сөз)
    • DQ (Dimension Quadruple word) - 8 байт өлшемдi айнымалыны сипаттау. (4
      сөз)


      3. Айнымалыны сипатау синтаксисi:
       Айнымалы аты    тип  бастапқы мән
      Мұндағы, бастапқы мән- осы типке беруге болатын  кез-келген сан. Санды
жазу ондық, он алтылық, сегiздiк, екiлiк форматта, алдына есептеу  жүйесiнiң
әрпi қойылу арқылы  жазылады:
      • d (Decimal) – ондық сан. Мысалы 034d саны 34 санын бiлдiредi.
      • h (Hex) – он алтылық сан. Мысалы: 3е5ah, 0ac44h, 0f0h.
      •  o (Octal) – сегiздiк сан.  Құрамына   0,1,2,3,4,5,6,7  осы  сандар
        кiредi.
      • b (Binary) – екiлiк сан.  Құрамына 0 және 1 сандары кiредi.




                             Ұсынылатын әдебиет:
                                 1. Негізгі
Юров В. Asstmbler. – Издательство «Питер», 2000.
Финогенов.  Основы языка Ассемблера.
                                 2. Қосымша:
Нортон. IBM.PC, 1991.

      3-дәріс.  Микропроцессордың командалар жүйесi
Дәріс сабағының құрылымы:
     1. Регистрлер туралы жалпы
     2. Жалпыға қолданылатын регистрлер
     3. Сегменттік регистрлер
     4. Индекстік регистрлер


      1.   Бұл   дәрістің   мақсаты   студенттердi   х86    процессорларының
архитектурасымен  таныстыру,  MS-DOS  жүйесiнде  жадыны  ұйымдастыру  туралы
алғашқы мәлiметтер, сонымен қатар  ассемблер  тiлiмен  алғашқы  жұмыс  iстеу
тәсiлдерiн алу.

      Intel процессорларының архитектурасы

      CPU (Central Process Unit)  деп  аталатын  микропроцессор  программист
үшiн 16 разрядты регистрлер құрамын көрсетедi. Регистрлер  –  бұл  процессор
микросхемасына интегралданған жадының ерекше ұяшықтары. Оларды үш  қызметтiк
топқа бөлуге  болады:
      2. Жалпыға қолданылатын  қолданылатын:
    • AX (Accumulator) – аккумулятор. Аоифметикалық операциялардың көпшiлiгi
      соның көмегiмен жүргiзiледi.
    •  BX (Base) –  сегменттiң  iшiнде  мәлiметтредi  адрестеудi  жүргiзетiн
      регистр.
    • CX (Counter) – есептегiш. Циклдарды ұйымдастыру үшiн қолданылады.
    • DX (Data) –  қосымша  мәлiметтер  регистрi.  Кей  кезде  аккумуляторға
      қосымша ретiнде қолданылады.
      Барлық жалпы қолданылатын регистрлер 16 биттi ретiнде (AX, BX, CX, DX)
 және сонымен қатар 8 биттi ретiнде  (AH,  AL,  BH,  BL,  CH,  CL,  DH,  DL)
қарастырылады.
      3. Сегменттiк регистрлер:
    • CS (Code Segment) – код сегментiнiң регистрi.
    •  DS (Data Segment) – мәлiметтер сегментiнiң регистрi.
    • SS (Stack Segment) – стек сегментiнiң регистрi.
    • ES (Extra Segment) – қосымша сегментiнiң регистрi.
      4. Индекстiк  регистрлер:
    • SP (Stack Pointer) – стектегi ағымдағы позицияны көрсеткiш
    • BP (Base Pointer) – қосымша көрсеткiш
    • SI (Source Index) – ақпарат көзiнiң индексi
    • DI (Destination Index) – қабылдағыш индексi.
    • IP (Instruction Pointer) – орындалатын программаның ағымдағы позицясын
      көрсету
      Осы айтылғандардан басқа жалауша регистрлерi де бар.

                             Ұсынылатын әдебиет:
                                 1. Негізгі
Юров В. Asstmbler. – Издательство «Питер», 2000.
Финогенов.  Основы языка Ассемблера.
                                 2. Қосымша:
Нортон. IBM.PC, 1991.

      4-дәріс.  Арифметикалық командалар

Дәріс сабағының құрылымы:
     1. Арифметикалық командалар.
     2. Екілік арифметикалық командалар.
     3. Командаларды қолдану





      1.   Арифметикалық    командалардың   негiзiлерi   төмендегi   кестеде
көрсетiлген:

      4-кесте
|Мнемоника        |Операнд түрi     |Орындалу логикасы          |Өзгеретiн        |
|(опN = операндN) |                 |                           |жалаушалар       |
|ADD оп1, оп2     |R, A             |оп1 = оп1 + оп2            |O, S, Z, A, P, C |
|                 |A, I             |Қарапайым қосу             |                 |
|                 |R, I             |                           |                 |
|                 |R, M             |                           |                 |
|                 |M, R             |                           |                 |
|                 |M, I             |                           |                 |
|ADC оп1, оп2     |R, A             |оп1 = оп1 + оп2 + CF       |O, S, Z, A, P, C |
|                 |A, I             |Тасымалдау есебiнен қосу   |                 |
|                 |R, I             |CF = 1, то                 |                 |
|                 |R, M             |оп1 = оп1 + оп2 + 1        |                 |
|                 |M, R             |                           |                 |
|                 |M, I             |                           |                 |
|SUB оп1, оп2     |R, R             |оп1 = оп1 - оп2            |O, S, Z, A, P, C |
|                 |M, R             |Азайту                     |                 |
|                 |R, M             |                           |                 |
|                 |A, I             |                           |                 |
|                 |R, I             |                           |                 |
|                 |M, I             |                           |                 |
|SBB оп1, оп2     |R, R             |оп1 = оп1 - оп2 - CF       |O, S, Z, A, P, C |
|                 |M, R             |Тасымалдау есебiнен азайту |                 |
|                 |R, M             |                           |                 |
|                 |A, I             |                           |                 |
|                 |R, I             |                           |                 |
|                 |M, I             |                           |                 |
|MUL оп1          |R8               |AX = AL * оп1,             |O, C             |
|                 |R16              |                           |                 |
|                 |M8               |                           |                 |
|                 |M16              |DX:AX = AX * оп1,          |                 |
|DIV оп1          |R8               |AL = AX / оп1;             |D, I, T          |
|                 |R16              |AH = қалдық,               |жалаушалары      |
|                 |M8               |                           |өзгермейдi.      |
|                 |M16              |AX = DX:AX / оп1;          |                 |
|                 |                 |AX = қалдық                |                 |
|SHL оп1, оп2     |R, 1             |   CF ← оп1 ← 0            |O, S, Z, P, C.   |
|                 |R, CL            |Биттердi солға жылжыту     |                 |
|                 |M, 1             |                           |                 |
|                 |M, CL            |                           |                 |
|SHR оп1, оп2     |R, 1             |0 → оп1 → CF               |O, S, Z, P, C.   |
|                 |R, CL            |Биттердi оңға жылжыту      |                 |
|                 |M, 1             |                           |                 |
|                 |M, CL            |                           |                 |


      2. Екілік арифметикалық командалар
      5-кесте Екiлiк арифметика командалары
|A           |B           |A AND B      |A OR B       |A XOR B      |NOT A       |
|0           |0           |0            |0            |0            |1           |
|0           |1           |0            |1            |1            |1           |
|1           |0           |0            |1            |1            |0           |
|1           |1           |1            |1            |0            |0           |


      3. JC командасын қолдану командасы:
|mov AX, 2                                                                 |
|shr AX, 1                                                                 |
|jc L_BitIsSet                                                             |
|...                                                                       |
|L_ BitIsSet:                                                              |
|...                                                                       |


      JNZ командасын қолдану командасы:
|mov AX, 12h ; AX  = 0001 0010b                                            |
|and AX, 80h                                                               |
|                                                                          |
|jnz L_NotZero                                                             |
|...                                                                       |
|L_NotZero:                                                                |
|...                                                                       |

                             Ұсынылатын әдебиет:
                                 1. Негізгі
Юров В. Asstmbler. – Издательство «Питер», 2000.
Финогенов.  Основы языка Ассемблера.
                                 2. Қосымша:
Нортон. IBM.PC, 1991.

      5-дәріс.  Программалау негiздерi

Дәріс сабағының құрылымы:
     1. Программалау туралы түсінік
     2. Программалау кезеңдері.
     3. Ассемблер тілінде программалау


      1. Ассемблер тiлiнде программаны дайындау  және  iске  қосу  кезеңдерi
программаның текстiн  дайындау,  трансляциялау,  құрастыру  және  отладкалау
кезеңдерiнен тұрады.
      2.  Программаның   текстiн   дайындау   кез-келген   текстiк   текстiк
редакторда, мысалы  Norton  Commander  программасының  текстiк  редакторында
жазылады. Дегенмен, программаның текстiн дайындау кезiнде WINDOWS  жүйесiнiң
WordPad және Блокнот программаларын қолдануға  болады.  Бiрақ  бұл  жағдайда
орыс  алфавитiмен  қиындықтар  туады,   егер   орыс   әрiптерiмен   жазылған
түсiнiктемелер берiлсе, оны  ДОС  жүйесiнде  ашып,  трансляцияласақ  әрiптер
орнына түсiнiксiз символдар шығады. Сондықтан MS-DOS  операциялық  жүйесiнiң
басқарылуымен орындалатын ассемблер программаларының текстерiн   сол  ортада
жүргiзген  дұрыс.
      3. Алдыңғы  сабақтағы   программаны   қарастырайық.  Осы  программадан
бiрқатар қажеттi моменттердi атап көрсетуге болады.   Программадағы  assume,
segment,    ends,    end    операторлары    ешқандай    машина     кодтарына
трансляцияланбайды  және   жадыдан   көрiнбейдi.   Олар   тек   трансляторға
трансляциялау  командаларының   тәсiлдерi   (assume),   сегмент   шекаралары
(segment,  end),  программаны  аяқтайтын  текстiк  жол   жөнiнде   қызметтiк
ақпарат  беру үшiн қолданылады.
      Программаның әрбiр трансляцияланатын  сөйлемiне   белгiлi-бiр  араласу
(смещение)  сәйкес  келедi.,  араласу  тапсырмасы   әрбiр   сегментте   жеке
орындалады. Mov AX, DATA бiрiншi командасының  команда  сегментiнiң  басынан
араласуы бар,  ол  нөлге  тең.  Ол  3  байт  орын  алады,  сондықтан  келесi
командада 3 байттан басталады.
      Транслятор Mov AX, DATA командасының  кодын толығымен анықтай  алмады.
Осы командада  АХ регистрiне DATA сегментiнiң сегменттiк   адресi  берiледi.
Бiрақ бұл адрес  программаның  орындалатын  файлы  жадығы  жүктелгенде  ғана
белгiлi болады. Сондықтан  программа  листингiнде  осы  адрестiң  орнына   s
әрпiмен  белгiленген   ноль  сандары  тұр.  S  әрпi  бұл   жерде    белгiсiз
сегменттiк адрестiң болатындығын көрсетiп тұр.   ВА 0000  коды  бар  команда
листингтiң 8-жолында орналасқан.   Осы  командада   DX  регистрiне  msg  деп
аталатын жол араласуы жазылады (offset  қызметтiк  сөзi  бұл  жерде  араласу
көрсетiлгендiгiн бiлдiредi). Msg жолы  мәлiметтер  сегментiнiң   ең  басында
орналасқан және оның сегмент басындағы араласуы 0-ге тең. Бұл  команда  неге
r   әрпiмен белгiленген.(r – relocatable- переместимый). Бұрын  айтылғандай,
кез-келген сегмент жадыда 16-ға еселi адреспен ғана орналасады.
      TASM   пакетiнен  TD.EXE   турбоотладчигiнiң   жұмысын   қарастырайық.
Отладчикпен  жұмыс iстемес бұрын жұмысшы катологта жүктемелiк  (p.exe)  және
бастамалық (p.asm) файлдарының бар екендiгiн тексерiп алу қажет.
      Отладчиктi қосу үшiн келесi команданы енгiзу қажет:
      td    p
      команданы енгiзгеннен кейiн экранда  отладчик  терезесi  ашылады.  Бұл
процесс кезiнде экранға бiрнеше терезелердi шығару қажет  болады.  Олар  көп
болғандықтан бiр-бiрiн жауып тұрады. Олардың барлығын бiруақытта  көру  үшiн
өлшемдерiн кiшiрейту қажет  болады.  Терезелер  өлшемдерiн  өзгерту  Ctrl+F5
командасымен жүредi.


      [pic]




      Отладчиктiң бастапқы терезесi (1-сурет) программаны  зерттеу  үшiн  аз
ақпарат бередi.Ассемблер тiлiнiң  деңгейiнде   программаны  отладкалау  үшiн
процессордың  жалауша регистрлерiн қоса, барлық регистрлерiн,  көп  жпғдпйда
программадан тыс мiлiметтер өрiстерiн зерттеу қажет.  Неғұрлым  көп  ақпарат
беретiн терезе – процессор терезесi, ол    View-CPU  менюiмен немесе  Alt-V-
C  клавишаларымен шақырылады.


      [pic]


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



      3. ЗЕРТХАНАЛЫҚ сабақтар



      1-зертханалық  жұмыс


      Жұмыстың мақсаты : Студенттердi х86 процессорларының  архитектурасымен
таныстыру, MS-DOS жүйесiнде жадыны ұйымдастыру  туралы  алғашқы  мәлiметтер,
сонымен қатар ассемблер тiлiмен алғашқы жұмыс iстеу тәсiлдерiн алу.

                         Қысқаша теориялық мағлұмат




      Intel процессорларының архитектурасы

      CPU (Central Process Unit)  деп  аталатын  микропроцессор  программист
үшiн 16 разрядты регистрлер құрамын көрсетедi. Регистрлер  –  бұл  процессор
микросхемасына интегралданған жадының ерекше ұяшықтары. Оларды үш  қызметтiк
топқа бөлуге  болады:
      Жалпы қолданылатын:
    • AX (Accumulator) – аккумулятор. Аоифметикалық операциялардың көпшiлiгi
      соның көмегiмен жүргiзiледi.
    •  BX (Base) –  сегменттiң  iшiнде  мәлiметтредi  адрестеудi  жүргiзетiн
      регистр.
    • CX (Counter) – есептегiш. Циклдарды ұйымдастыру үшiн қолданылады.
    • DX (Data) –  қосымша  мәлiметтер  регистрi.  Кей  кезде  аккумуляторға
      қосымша ретiнде қолданылады.
      Барлық жалпы қолданылатын регистрлер 16 биттi ретiнде (AX, BX, CX, DX)
 және сонымен қатар 8 биттi ретiнде  (AH,  AL,  BH,  BL,  CH,  CL,  DH,  DL)
қарастырылады.
      Сегменттiк регистрлер:
    • CS (Code Segment) – код сегментiнiң регистрi.
    •  DS (Data Segment) – мәлiметтер сегментiнiң регистрi.
    • SS (Stack Segment) – стек сегментiнiң регистрi.
    • ES (Extra Segment) – қосымша сегментiнiң регистрi.
      Индекстiк  регистрлер:
    • SP (Stack Pointer) – стектегi ағымдағы позицияны көрсеткiш
    • BP (Base Pointer) – қосымша көрсеткiш
    • SI (Source Index) – ақпарат көзiнiң индексi
    • DI (Destination Index) – қабылдағыш индексi.
    • IP (Instruction Pointer) – орындалатын программаның ағымдағы позицясын
      көрсету
      Осы айтылғандардан басқа жалауша регистрлерi де бар.


      Лабораториялық жұмыстың орындалу тәртiбi:


   1. tasm.exe и tlink.exe файлдары бар  каталогқа  көшу  қажет.  Кез-келген
      текстiк  редактордың  көмегiмен  (мысалы,  Norton  Commander   текстiк
      редакторы) текстiк редактор құру.
   2. Берiлген текстi жазу:
      .model tiny
      .code
      .startup


      ret
      end
   3. Файлды сақтап, редактордан шығу. Келесi команданы орындау:
   4.  tasm/zi   файл аты
      Программа берген хабарламаларды талдау. Каталогта .obj. кеңейтiлуi бар
екендiгiне көз жеткiзу. Қателер болса түзеу.
   5. Келесi команданы орындау:
      tlink /v  файл аты
   6. Norton Guides (ng.exe) жүктеп   резиденттi прорамманы шақыруды  үйрену
      (Shift+F1).
   7. Программаны отладкалау.
   8. td.exe программасын жүктеп программаны қадам бойынша орындап, талдау.














      2-зертханалық  жұмыс


      Жұмыстың мақсаты: Студенттердi ассембелер тiлiнде программалау кезiнде
жадыны адрестеу тәсiлдерiмен, массивтермен,  айнымалылармен  жұмыс  iстеумен
таныстыру.





                         Қысқаша теориялық мағлұмат


      Айнымалыларды сипаттау

      Турбо Ассемблерде айнымалыларды сипаттау үшiн  арнайы  идентифиаторлар
қолданылады:Оларға:
    • DB (Dimension Byte) –1 байт өлшемдi айнымалыны сипаттау.
    • DW (Dimension Word) – 2 байт өлшемдi айнымалыны  сипаттау.  (машиналық
      сөз)
    • DD (Dimension Double word)  –  4  байт  өлшемдi  айнымалыны  сипаттау.
      (екiлiк сөз)
    • DQ (Dimension Quadruple word) - 8 байт өлшемдi айнымалыны сипаттау. (4
      сөз)
      Айнымалыны сипатау синтаксисi:
       Айнымалы аты    тип  бастапқы мән
      Мұндағы, бастапқы мән- осы типке беруге болатын  кез-келген сан. Санды
жазу ондық, он алтылық, сегiздiк, екiлiк форматта, алдына есептеу  жүйесiнiң
әрпi қойылу арқылы  жазылады:
      • d (Decimal) – ондық сан. Мысалы 034d саны 34 санын бiлдiредi.
      • h (Hex) – он алтылық сан. Мысалы: 3е5ah, 0ac44h, 0f0h.
      •  o (Octal) – сегiздiк сан.  Құрамына   0,1,2,3,4,5,6,7  осы  сандар
        кiредi.
      • b (Binary) – екiлiк сан.  Құрамына 0 және 1 сандары кiредi.


      Айнымалыны сипаттау мысалы:
      a db 3;  айнымалы 1 байт орын алады және алғашында 3-ке тең.
      Бес байтты массив элементтерiн қосатын және нәтиженi  Х  айнымалысына,
АХ регистрiне жазатын программа мысалы:


      |.model tiny                                                               |
|.data                                                                     |
|Arr db 1,2,3,4,5; массивтi сипаттау                                       |
|x dw 0                                                                    |
|.code                                                                     |
|.startup                                                                  |
|mov ax, 0 ;  АХ нөлге теңестiру                                           |
|mov bx, offset Arr                                                        |
|mov cx, 5                                                                 |
|m1:                                                                       |
|mov al, [bx]                                                              |
|add x, ax                                                                 |
|inc bx                                                                    |
|loop m1                                                                   |
|mov ax, x                                                                 |
|ret                                                                       |
|end                                                                       |


                  Лабораториялық жұмыстың орындалу тәртiбi:
    1.  Жоғарыда   көрсетiлген   программасы   бар   текстiк   файл   құрып,
       ассемблерлеп, құрастырып, .exe   файл  құру  қажет.  Оның  орындалуын
       td.exe программасының көмегiмен бақылау қажет.
    2. Программаны оқытушыға көрсетiп, қорғауға дайындалу қажет.


      3-зертханалық  жұмыс


      Жұмыстың    мақсаты:    Студенттерге    ассемблердiң     арифметикалық
операцияларының жұмыс тәртiбiн, сонымен  қатар  жылжу,  көбейту,  қосу  т.б.
командаларын таныстыру.





                         Қысқаша теориялық мағлұмат






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

      Олардың негiзiлерi төмендегi кестеде көрсетiлген:
      6-кесте
|Мнемоника       |Операнд түрi       |Орындалу логикасы     |Өзгеретiн     |
|(опN = операндN)|                   |                      |жалаушалар    |
|ADD оп1, оп2    |R, A               |оп1 = оп1 + оп2       |O, S, Z, A, P,|
|                |A, I               |Қарапайым қосу        |C             |
|                |R, I               |                      |              |
|                |R, M               |                      |              |
|                |M, R               |                      |              |
|                |M, I               |                      |              |
|ADC оп1, оп2    |R, A               |оп1 = оп1 + оп2 + CF  |O, S, Z, A, P,|
|                |A, I               |Тасымалдау есебiнен   |C             |
|                |R, I               |қосу                  |              |
|                |R, M               |CF = 1, то            |              |
|                |M, R               |оп1 = оп1 + оп2 + 1   |              |
|                |M, I               |                      |              |
|SUB оп1, оп2    |R, R               |оп1 = оп1 - оп2       |O, S, Z, A, P,|
|                |M, R               |Азайту                |C             |
|                |R, M               |                      |              |
|                |A, I               |                      |              |
|                |R, I               |                      |              |
|                |M, I               |                      |              |
|SBB оп1, оп2    |R, R               |оп1 = оп1 - оп2 - CF  |O, S, Z, A, P,|
|                |M, R               |Тасымалдау есебiнен   |C             |
|                |R, M               |азайту                |              |
|                |A, I               |                      |              |
|                |R, I               |                      |              |
|                |M, I               |                      |              |
|MUL оп1         |R8                 |AX = AL * оп1,        |O, C          |
|                |R16                |                      |              |
|                |M8                 |                      |              |
|                |M16                |DX:AX = AX * оп1,     |              |
|DIV оп1         |R8                 |AL = AX / оп1;        |D, I, T       |
|                |R16                |AH = қалдық,          |жалаушалары   |
|                |M8                 |                      |өзгермейдi.   |
|                |M16                |AX = DX:AX / оп1;     |              |
|                |                   |AX = қалдық           |              |
|SHL оп1, оп2    |R, 1               |   CF ← оп1 ← 0       |O, S, Z, P, C.|
|                |R, CL              |Биттердi солға жылжыту|              |
|                |M, 1               |                      |              |
|                |M, CL              |                      |              |
|SHR оп1, оп2    |R, 1               |0 → оп1 → CF          |O, S, Z, P, C.|
|                |R, CL              |Биттердi оңға жылжыту |              |
|                |M, 1               |                      |              |
|                |M, CL              |                      |              |




      7-кесте   Екiлiк арифметика командалары
|A          |B          |A AND B     |A OR B      |A XOR B     |NOT A      |
|0          |0          |0           |0           |0           |1          |
|0          |1          |0           |1           |1           |1          |
|1          |0          |0           |1           |1           |0          |
|1          |1          |1           |1           |0           |0          |




      JC командасын қолдану командасы:
|mov AX, 2                                                                 |
|shr AX, 1                                                                 |
|jc L_BitIsSet                                                             |
|...                                                                       |
|L_ BitIsSet:                                                              |
|...                                                                       |


      JNZ командасын қолдану командасы:
|mov AX, 12h ; AX  = 0001 0010b                                            |
|and AX, 80h                                                               |
|                                                                          |
|jnz L_NotZero                                                             |
|...                                                                       |
|L_NotZero:                                                                |
|...                                                                       |




                  Лабораториялық жұмыстың орындалу тәртiбi:
    1.  Жоғарыда   көрсетiлген   программасы   бар   текстiк   файл   құрып,
       ассемблерлеп, құрастырып, .exe   файл  құру  қажет.  Оның  орындалуын
       td.exe программасының көмегiмен бақылау қажет.
    2. Программаны оқытушыға көрсетiп, қорғауға дайындалу қажет.


      4-зертханалық  жұмыс


      Жұмыстың   мақсаты:   Студенттердi   қолданушы   процедурасымен   және
үзiлулермен таныстыру.





                          Қысқаша теориялық мағлұмат



      Процедура ұғымы
      Процедура  –  программист  құрған  белгiлi-бiр  нақты  есептi   шешуге
арналған подпрограмма.
      Процедура негiзгi программадан келесi команда арқылы шақырылады:
      call имя_процедуры


      Процедураны сипаттау
      Процедура proc және  endp компилятор  директивасымен  шақырылады


      процедура аты proc
      ...
      процедура денесi
      ...
      ret
      процедура аты endp


      Үзiлу ұғымы
      Үзiлу  –  бұл  программаның  қалыпты  жұмысына  қандай-да  бiр  сыртқы
факорлардың әсер етуi. Үзiлу  клавиатура  клавишасын,  тышқанды,  т.б.  басу
әсерiнен туындайды.




                  Лабораториялық жұмыстың орындалу тәртiбi:
    1.  Жоғарыда   көрсетiлген   программасы   бар   текстiк   файл   құрып,
       ассемблерлеп, құрастырып, .exe   файл  құру  қажет.  Оның  орындалуын
       td.exe программасының көмегiмен бақылау қажет.
    2. Программаны оқытушыға көрсетiп, қорғауға дайындалу қажет.




      5-зертханалық  жұмыс


      Жұмыстың   мақсаты:   Ассемблер   тілінде   программалау   тәсілдерін,
программаны отладкалау тәсілдерін, программа  құру  технологияларын  үйрену.
Қарапайым   операциялармен,   яғни    жіберу,    арифметикалық,    разрядтық
операциялармен танысу.


                         Қысқаша теориялық мағлұмат


      Программалау жүйелері ассемблерлік программаларды  СИ-программаларының
операторларын қолоданып, сонымен қатар  автономды  модульдер  түрінде  күйге
келтіре алады. Бұл _asm  директивасының көмегімен екі вариантта жүреді:
      вариант 1:     _asm mov ax, bx
      _asm add ax, 33h
      _asm and ax,l
      вариант 2:    _asm
      {
      mov ax, bx
      add ax, 33h
      and ax, 1
      }
      Бірақ мұнда берілген компьютер үшін және жады  моделі  үшін  таңдалған
регистрларды қолдану шарттары сақталуы тиіс.
      Ассемблер  подпрограммалары  көбінесе  автономды  программалық  модуль
түрінде жазылады. Бұл жағдайда олар  файлда  .asm  кеңейтілуімен  орнатылады
да,   жеке   компилляциялана    алады.    Программалауды    қысқарту    үшін
псевдопкомандалар құрамы қолданылады.


      Ассемблердегі автономды программа мысалы:
      TITLE   HELLO
      CR EQU  13                        ;тұрақтыларды анықтау
      LF EQU  10
      .MODEL  TINY                  ; .СОМ – файлды генерациялау
      .STACK  lOOh                  ;стек 256 байт
      .DATA                         ;берілгендер сегментінің басы
      msg  DB  "Hello, world.", CR, LF, "$"  ; шығаруға арналған текст
      .CODE                         ;кодтық сегменттің басы
      .STARTUP                      ;берілгендер сегментін  инициализациялау
және SS=DS
                             ;беру
      mov      ah, 9h                ;DOS-қа қатысу, функция 9
      mov     dx, OFFSET msg


      int     21.h                  ;жолды шығару
      .EXIT   О
      end                           ;программаның соңы


      Осы программаны компилляциялау кезінде QC жұмыс режимін  дұрыс  орнату
қажет:
      Options – Make - Compiler flags - Memory model - Small
      Options – Make - Linker flags - Generate COM-file
      Осы программаның СИ- функциясы түрінде көрсетілуі


      TITLE   HELLO
      CR EQU 13                     ;тұрақтыларды анықтау
      LF ECU  10
      .MODEL SMALL,С
      .DATA                         ;Берілгендер сегментінің басы
      msg  DB "Hello, world.", CR, LF, "$"  ; кодтық сегменттің басын
      .CODE                         ;шығару тексті
      hello   PROC    NEAR, С       ;процедураның басы
      mov     ah, 9h                 ;DOS-қа қатысу, функция 9
      mov     dx, OFFSET msg        ;DS араласуды жүктеу жолы
      int     21h                   ;жолды шығару
      ret                           ;процедурадан қайту
      hello  ENDP


      Компиляциялау алдында СОМ-файлдың генерациялау  режимін  ажыратып  алу
қажет, өйткені ол бұл мүмкіндікті көтере алмайды.
      Осы фрагменттің ассемблерлік қойылуы:


      char msg[] = "Hello, world.\r\n$ ";
      _asm
      {
           mov     ah, 9h           ;DOS қатынасу, функция 9
           mov     dx, OFFSET msg   ;жолдың DS араласуын шығару
           int     21h              ;жолды шығару
      }
      Мұндай ассемблерлік қойылуларды қолдану кезінде оларды стекте  сақтап,
содан соң қолданылатын регистрлерді қайта қалпына келтіру қажет.


      Лабораториялық жұмыстың орындалуына нұсқау
      Жұмыстың  орындалуы  кезінде  AX,  BX,  CX,   DX   регистрлерін   және
адрестеудің регистрлік, үзіліссіз тәсілдерін қолдану  қажет.  Константаларды
беру үшін EQU директивасын қолданыңыз.
      Программаны қадамдық отладкалау кезінде регистрлердің мазмұнын View  -
Windows - Register   командалар тізбегімен  ашылатын  Registers  терезесінің
көмегімен бақылауға болады:
      Ассемблерлік программаларды СИ подпрограммаларымен  байланыстыру  үшін
EXTRN және GLOBAL директивалары қолданылады.


                  Лабораториялық жұмыстың орындалу тәртiбi:


      1. Тапсырма варианттарына сәйкес байттармен, сөздермен  арифметикалық,
логикалық операциялар орындайтын ассемблер тіліндегі автономды  прогграмманы
жазу қажет. Алғашқы берілгендерді EQU директивасының көмегімен  беру  қажет.
Жұмыс  нәтижелерін  жады  ұяшығына  орналастыру  қажет.   Қадамдық   режимде
программаның жұмыс режимінің дұрыстығын тексеру қажет.


                     Лабораториялық жұмыс тапсырмалары:
      Алғашқы берілгендер:
      А = 2438Н – екілік-ондық сан
      В = 1329Н - екілік-ондық сан
      С = -157  -таңбалы екілік сан
      D = 100   - таңбасыз екілік байт
      Вариант 1.
      1. А сөзіндегі 1-і және 3-і тетрадалардың орнын ауыстыру қажет
      2. А мен В-ны екілік – ондық түрде қосу қажет.
      3. В сөзіндегі 2-і және 4-і тетрадаларды белгілеп  (выделить)  және  2
екілік сан ретінде қосу қажет.
       4. А-ны D-ға көбейтіп, үлкен сөзде екі  кіші  разрядты  белгілеп,  2-
бөлімдегі «НЕМЕСЕ» нәтижесімен біріктіру қажет.
      Вариант 2.
      1. А сөзіндегі 2-і және 4-і тетрадалар орнын ауыстыру қажет
      2. Екілік түрде А және В-ның кіші байттарын қосу қажет.
      3. В сөзіндегі 1-і және 3-і тетрадаларды белгілеп  (выделить),  оларды
екілік-ондық сандар ретінде қосу қажет
      4. В-ны D-ға көбейтіп, кіші сөзде 1-5 разрядтарды белгілеп, оларды  3-
бөлімдегі «ЖӘНЕ» нәтижелерімен біріктіру қажет.
      Вариант 3.
      1. А сөзіндегі кіші және  үлкен  байттардың  0-2  разрядтарының  орнын
ауыстыру қажет.
      2. С мен D-ны екілік түрде қосу қажет.
      3. А-ның үлкен байтын және В-ның кіші байтын белгілеп, оларды  екілік-
ондық сандар түрінде қосу қажет.
        4.  А-ны  D-ға  бөліп,  қалдығын  3-бөлімдегі  «Немесе»   нәтижесіне
біріктіру қажет.


      6-зертханалық  жұмыс


      Жұмыстың мақсаты: Ассемблер программалау тiлiндегi берiлген  текстердi
компьютерге ыңғайлы түрге, яғни машина тiлiне  ауыстыру  тәсiлдерiн,  жадыны
ұйымдастыруды, программа құрылымдарын,  ондағы  есептiң  қойылу  тәсiлдерiн,
портқа  енгiзу  және   шығару   тәсiлдерiн   және   дыбысты   генерациялаушы
жабдықтарды, оның тәсiлдерiн үйрену.


                         Қысқаша теориялық мағлұмат


      Әрбiр енгiзу және шығару құрылғысы және жүйелiк құрылғылар бiр  немесе
регистрлардан тұрады. Бұл регистрлардың разрядтығы 8-, 16-, 32- бит.
      Ең төменгi деңгейдегi құрылғылар жүйесiнiң барлық жұмысы енгiзу-шығару
порттарын қолданумен жүредi. Төменде компьютер жабдықтарын  басқару  сұлбасы
көрсетiлген.















































      Сұлбадан көрiп отырғанымыздай  ең төменгi деңгей BIOS  деңгейi,  мұнда
құрылғымен жұмыс тiкелей порт арқылы жүредi. Негiзiнен құрылғыларды  тiкелей
порт арқылы басқару күрделi  емес.  Порттар  номерi,  разрядтары,  ақпаратты
басқару форматтары  құрылғының  техникалық  сипаттамасында  берiледi.  Бiзге
соңғы  әрекеттер  мақсатын,  алгоритмiн,  порттардың  программалық   қатарын
бiлсек жеткiлiктi.
      Дыбысты генерациялау  бойынша  негiзгi  жұмыс  таймер  микросхемасымен
атқарылады  (2-сурет).  Таймер  микросхемасы  iшкi  құрылымдары  және  жұмыс
әрекетi бiрдей үш каналдан тұрады. Таймер каналдарына импульстер  генераторы
сияқты және 1,19 мГц жиiлiкпен жұмыс iстейтiн жүйелiк сағат  микросхемасынан
импульс берiледi. Әрбiр канал екi кiрiс, бiр  шығыстан  тұрады.  Мұндағы  1-
канал жадыға тiкелей шығу микросхемасымен байланысты. Ал  2-канал  компьютер
динамигiне  шығады.  Таймер  каналдары   құрылымын   үш   регистр   құрайды:
разоядтығы 8 бит енгiзу шығару регистрi және  разрядтықтары  16  бит  бекiту
және  санау  регистрлерi.  Басқару  регистрi  таймер  микросхемасын  басқару
механизмiнiң бөлiгi болып табылады. Басқару регистрi канал  таңдауды,  канал
жұмысының режимiн берудi жүргiзетiн жағдай сөзiнен тұрады.
      Кез-келген жұмысты генерациялау үшiн оның ұзақтығы мен биiктiгiн  беру
қажет.  Одан  соң  енгiзу-шығару  регистрiндегi   мән   бекiткiш   регистрге
түскеннен кейiн, ол лезде санағыш регистрге жазылады.  Таймердiң  кез-келген
үш каналының шығысында логикалық көбейту  кестесi  бар.  Таймердiң  дыбыстық
каналын программалауға қажеттi үш тiзбектi әрекет:
1. 43h порты арқылы жұмыс режимiн және каналға мән беру операциясының  типiн
   анықтау. Бiздiң жағдайда сәйкес мән 10110110=0b6h;
2. Динамикке тоқ беру;
3. ax регистрiн қолданып, қажеттi мәндi 42h портына беру.
      Осы лабораториялық жұмыста компьютердiң  аппаратура  деңгейiнде  дыбыс
шығару  программасы  қарастырылады.  Ол  үшiн  компьютердiң  iшiндегi   iшкi
динамик  қолданылады.   Динамиктi   басқаруға   арналған   дабыл   төмендегi
микропроцессорлардың бiрлескен жұмысының нәтижесiнде жүредi:
 • программаланатын периферийлiк интерфейс  i8255;
 • таймер   i8253;
      --Prg_7_1.asm--------
      ;Сирена дыбысын келтіретін программа.
      ;450-ден 2100 Гц-ке дейін дыбыс биіктігінің өзгеруі.
      ;delay (кешігу) макросы қолданылады.
      ;Қажет болған жағдайда
      ;кешігу мәнін ауыстыруға болады (Pentium процессорына) .
      ;-------------------------
      masm
      model small
      stack  100h
      delay macro time
      ;кешігу  макросы,  оның  тексті  macro  және   endm   директиваларымен
шектеледі.
      ;Кірісінде кешігу мәні (мкс-қа)
                 local  ext,iter
                 push  cx
                 mov   cx,time
      ext:
                 push  cx
                 mov   cx, 5000
      iter:
                 loop   iter
                 pop    cx
                 loop  ext
                 pop    cx
      endm
      .data   ;берілгендер сегменті
      tonelow   dw    2651  ; 450 Гц астыңғы дыбысының шегі
      cnt    db    0                ;программадан шығуға арналған счетчик
      temp  dw   ?               ;дыбыстың жоғарғы шегі
      .code                          ;код сегменті
      main:                          ;программаға кіру нүктесі
                    mov    ax,@data  ;ds регистрін сегментпен жалғаймыз
                    mov    ds,ax         ;берілгендерді ах регистрі арқылы
                    mov     ax,0          ;ах регистрін тазалаймыз
      go:
        ; 10110110b(0B6h) сөзін командалық регистрге (43һ порты) енгіземіз
                     mov      al,0B6h
                     out        43h,al
                     in           al,61h       ;61h  портының  мәнін   al-да
аламыз
                     or           al,3          ;динамикті инициализациалап,
61һ
                                                     портына ток береміз
                      out          61h,al
                      mov        cx,2083  ;дыбыстың сатылы түрде өзгеру
                                                      қадамының саны
      musicup:
                                                     ;ax-тегі жиілік шегінің
төменгі мәні
                       mov        ax,tonelow
                       out           42h,al       ;42һ  портына  ax:al  кіші
сөзін
                       xchg        al,ah       ;al және ah арасын ауыстыру
                       out           42h,al      ;42h  портына  ax:ah  үлкен
сөзін
                       add          tonelow,1  ; дыбысты жоғарлатамыз
                       delay 1                  ;1мкс-ке кешігу
                       mov         dx,tonelow ;dx ағымының жоғары мәні
                       mov         temp,dx      ;temp-дыбыстың жоғарғы мәні
                       loop         musicup     ;жоғарлату циклын қайталау
                        mov          cx,2083       ;цикл  счетчигін  қалпына
келтіру
      musicdown:
                       mov         ax,temp         ;ах-ке  дыбыстың  жоғарғы
мәні
                       out          42h,al           ;42h портына ax:al кіші
сөзін
                       mov          al,ah              ;al  және  ah  арасын
ауыстыру
                       out          42h,al            ;  42h  портына  ах:аһ
үлкен сөзін
                       sub          temp,1           ;дыбысты төмендетеміз
                       delay 1                       ;1 мкс-ке кешігу
                       loop    musicdown        ;төмендету циклын қайталау
      nosound:
                        in   al,61h                     ;61h портының  мәнін
al-да аламыз
                        and  al,0FCh                ;динамикті өшіру
                        out   61h,al                  ;61h портына
                        mov   dx,2651             ;келесі циклдар үшін
                        mov tonelow,dx
                        inc    cnt                       ;сиреналық дыбыстың
санын
                                                               жоғарылатамыз
                        cmp    cnt,5                  ;5 рет ?
                         jne     go                      ;егер жоқ  болса,go
белгісіне бару
      exit:
                      mov   ax,4c00h             ;стандарттық шығыс
                      int      21h
      end  main         ;программа соңы




                  Лабораториялық жұмыстың орындалу тәртiбi:
1. Әдістемелік нұсқауда көрсетілген негізгі тапсырмалармен және  бөлімдермен
   танысыңыздар.
2. Әдістемелік нұсқаудың соңында берілген  ассемблер  тіліндегі  программаны
   текстік  редакторға  теріп   жазыңыздар.   Ескерту:   Ассемблер   тілінің
   программаларын кез-келген текстік редакторға жазуға  болады.  Ал   Norton
   Commandor  программалық  қабықшысының  текстік  редакторын  шақыру   үшін
   Shift+F4 клавишалары қолданылады.
3. Текстік редакторға программа текстін енгізгеннен кейін, оны  сақтап  іске
   қосу қажет.
4. Программаны жүктеудің негізгі  командалық  жолдарын  енгізіп  болған  соң
   нәтижесінде компьютер динамигі арқылы дыбыс пайда  болады.  Осы  дыбыстың
   биіктігі мен ұзақтық  мәндерін  ауыстыра  отырып,  оны  жоғарылатып  және
   төмендетіңіздер.
5.  Программаның  жұмыс  істеу  принципін   меңгеріп,   әрбір   командаларға
   түсініктеме беріңіздер.
6. Жұмыстың соңында лабораториялық жұмыс бойынша есеп құрастырыңыздар.


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


1. Ассемблердегі программаны жүктеудің негізгі тәсілдері қандай?
2. Портқа енгізу/шығару дегеніміз не?
3. Дыбысты генерациялауға арналған  компьютердің  қандай  ішкі  құрылғыларын
   білесіз? Олардың атқаратын қызметі және құрлысы.
4.  Әдістемелік  нұсқаудағы  программада  дыбысты  генерациялауға   арналған
   қанадай   негізгі командаларды білесіз?
5.  Ассемблер  программалау  тілінің  Турбо  Паскаль,  Турбо  С   тілдерінен
   айырмашылықтары қандай?




      4. студенттің өздік жұмысы
      4.1 Өздік жұмысты ұйымдастыру бойынша әдістемелік нұсқаулар.
      Студенттің  өздік  жұмысы  (СӨЖ)  реферат  түрінде   орындалады   және
студенттердің өздік жұмысын қойлатын талаптарға сәйкес тапсырылады.
      Өздік жұмысты бақылау келесі формада өтуі мүмкін:
      – жасалған жұмысты көрсету;
      – өздік меңгерген тақырып бойынша баяндама;
      – аудиториялық сабақтарды немесе ОБСӨЖ-де ауызша сұрау;
      – жазбаша орындалған тапсырмаларды қорғау.
      Өздік жұмысының нәтижелерін тапсырмаған студент қорытынды аттестацияға
жіберілмейді.
      Өз бетімен меңгерген материал оқытушумен бірге меңгерілген материалмен
қоса қорытынды бақылауға шығарылады.


      4.2 Рефераттар тақырыбы
4.2.1 Intel микропроцессорының архитектурасы
4.2.2 Мәліметтер типі және массивтер
4.2.3 Ассемблер тілінде програмалауда жадынның адрестелуі
Ассемблердің арифметикалық операцияларымен, биттерді ығыстыру, көбейту  және
айналдыру командаларымен жұмыс істеу принципі;
Қолданушы процедураларымен және үзілістермен жұмыс жасау принциптері;
Үзілістердің жеке өңдеушілерін қолдану. MS-DOS функциялары мен  ассемблердің
командаларының сипаттамалары.
Резиденттік программалар.
Айнымалыларды және массивтерді құру.
Есептегіші бар қарапайым циклды ұйымдастыру.
Порттармен және видеожадымен жұмыс жасау.
 Математикалық сопроцессормен жұмыс жасау.







   -----------------------

   Қолданушы программасы





   Операциялық жүйе қызметтерi





   BIOS қызметтерi




                 Енгiзу-шығару порттарының кеңiстiктерi





                         Компьютер аппаратуралары







Пәндер