Турбо Ассемблерде айнымалыларды сипаттау үш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. Бұл дәрістің мақсаты студенттерд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. Арифметикалық командалардың негiзiлерi төмендегi кестеде көрсетiлген:
4-кесте
Мнемоника
(оп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.
|
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. Ассемблер т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.
Отладчиктiң бастапқы терезесi (1-сурет) программаны зерттеу үшiн аз ақпарат бередi.Ассемблер тiлiнiң деңгейiнде программаны отладкалау үшiн процессордың жалауша регистрлерiн қоса, барлық регистрлерiн, көп жпғдпйда программадан тыс мiлiметтер өрiстерiн зерттеу қажет. Неғұрлым көп ақпарат беретiн терезе – процессор терезесi, ол View-CPU менюiмен немесе Alt-V-C клавишаларымен шақырылады.
Процессор терезесi программа текстiн ассемблер тiлiнде және машиналық кодтарды, процессор регистрлерiн, жалаушаларын, стектi, жадынының iшiндегiелерiн бақылауға арналған бес iшкi терезелерден тұрады. Осы терезелердiң көмегiмен программаның толық жүрiсiн бақылауға болады.
Достарыңызбен бөлісу: |