Қазақстан республикасының бiлiм және ғылым министрлiгi



бет4/4
Дата09.03.2016
өлшемі302 Kb.
#47350
1   2   3   4

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


Олардың негiзiлерi төмендегi кестеде көрсетiлген:

6-кесте


Мнемоника

(опN = операндN)



Операнд түрi


Орындалу логикасы

Өзгеретiн жалаушалар

ADD оп1, оп2

R, A

A, I


R, I

R, M


M, R

M, I


оп1 = оп1 + оп2

Қарапайым қосу



O, S, Z, A, P, C

ADC оп1, оп2

R, A

A, I


R, I

R, M


M, R

M, I


оп1 = оп1 + оп2 + CF

Тасымалдау есебiнен қосу

CF = 1, то

оп1 = оп1 + оп2 + 1



O, S, Z, A, P, C

SUB оп1, оп2

R, R

M, R


R, M

A, I


R, I

M, I


оп1 = оп1 - оп2

Азайту


O, S, Z, A, P, C

SBB оп1, оп2

R, R

M, R


R, M

A, I


R, I

M, I


оп1 = оп1 - оп2 - CF

Тасымалдау есебiнен азайту



O, S, Z, A, P, C

MUL оп1

R8

R16


M8

M16


AX = AL * оп1,

DX:AX = AX * оп1,




O, C



DIV оп1

R8

R16


M8

M16


AL = AX / оп1;

AH = қалдық,


AX = DX:AX / оп1;

AX = қалдық




D, I, T жалаушалары өзгермейдi.

SHL оп1, оп2

R, 1

R, CL


M, 1

M, CL


CF ← оп1 ← 0

Биттердi солға жылжыту



O, S, Z, P, C.


SHR оп1, оп2

R, 1

R, CL


M, 1

M, CL


0 → оп1 → CF

Биттердi оңға жылжыту



O, S, Z, P, C.


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



BIOS қызметтер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 функциялары мен ассемблердің командаларының сипаттамалары.

Резиденттік программалар.

Айнымалыларды және массивтерді құру.

Есептегіші бар қарапайым циклды ұйымдастыру.

Порттармен және видеожадымен жұмыс жасау.

Математикалық сопроцессормен жұмыс жасау.






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




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

    Басты бет