Bo'lgan mashina ko'rsatmalarini yozish uchun formatdir


Download 52.45 Kb.
Pdf ko'rish
Sana20.10.2023
Hajmi52.45 Kb.
#1712317
Bog'liq
assemler 23



Muhammad al-Xorazmiy nomidagi
Toshkent axborot texnologiyalari
universiteti Farg'ona filiallari
KIF fakultetlari
711-20 guruh talabasi
Kompyuter arxitekturasi fanidan
Laboratoriya ishi
Assemblar tili
Topshirdi:
Umurzaqov Umidjon
Qobul kildi:
Mirkomilov.D


Mundarija
1.
Til tavsifi
2.
Afzalliklari va kamchiliklari
3.
Sintaksis
4.
Mavjud buyruqlar ro'yxati
5.
Assembler dasturiga misollar
6.
Turli protsessorlar uchun Assembler xususiyatlari
7.
Xulosa
8
Adabiyotlar ro'yxati


Til tavsifi
Assembler - past darajadagi dasturlash tili bo'lib, u inson idroki uchun qulay
bo'lgan mashina ko'rsatmalarini yozish uchun formatdir.
Assembly tilidagi ko'rsatmalar protsessor ko'rsatmalariga birma-bir mos
keladi. Darhaqiqat, ular buyruqlar va ularning argumentlarining insonga
qulayroq ramziy ko'rinishini - mnemonik kodlarni ifodalaydi. Bunday holda,
bitta assembler tili ko'rsatmasi protsessor ko'rsatmalarining bir nechta
variantiga mos kelishi mumkin.
Bundan tashqari, assembler tili xotira katakchalari manzillari o'rniga ramziy
teglardan foydalanishga imkon beradi, ular yig'ish paytida assembler yoki
bog'lovchi tomonidan hisoblangan mutlaq yoki nisbiy manzillar bilan
almashtiriladi,
shuningdek,
direktivalar
(assembler
ko'rsatmalari)
protsessorning mashina ko'rsatmalariga tarjima qilinmagan, lekin
assemblerning o'zi tomonidan bajarilgan).
Assambleya direktivalari, xususan, ma'lumotlar bloklarini kiritish, shartlar
bo'yicha dastur fragmentini yig'ishni o'rnatish, yorliq qiymatlarini o'rnatish,
parametrlari bilan makroslardan foydalanish imkonini beradi.
Protsessorlarning har bir modeli (yoki oilasi) o'ziga xos ko'rsatmalar
tizimiga va tegishli montaj tiliga ega. Eng mashhur assembler tili sintaksisi
Intel sintaksisi va AT&T sintaksisidir.
Mashina tili sifatida yuqori darajadagi dasturlash tilini (Fort, Lisp, El-76)
amalga oshiradigan kompyuterlar mavjud. Aslida bunday kompyuterlarda
ular assembler tillari rolini bajaradi.


Afzalliklari va kamchiliklari
Afzalliklari
• Assembly tili odatda berilgan protsessor uchun mumkin bo'lgan eng tez
va eng ixcham kodni yozish imkonini beradi.
• Agar dastur kodi etarlicha katta bo'lsa - u ishlaydigan ma'lumotlar
protsessor registrlariga to'liq mos kelmasa, ya'ni qisman yoki to'liq operativ
xotirada bo'lsa - u holda malakali dasturchi, qoida tariqasida, dasturni
sezilarli darajada optimallashtirishga qodir bo'ladi. bir yoki bir nechta
parametrlarda yuqori til darajasidan tarjimonga o'ting va Pareto optimaliga
yaqin kod yarating (qoida tariqasida, dastur tezligi kodni uzaytirish orqali
erishiladi va aksincha):
ish tezligi - hisoblash algoritmini optimallashtirish va / yoki tasodifiy kirish
xotirasiga (RAM) yanada oqilona kirish tufayli (masalan, agar barcha
dastlabki ma'lumotlar protsessor registrlarida saqlansa, OPga keraksiz
kirishni yo'q qilish mumkin) , ma'lumotlarni qayta taqsimlash, funktsiyalarni
jadvalli hisoblash;
Kod hajmi (shu jumladan oraliq natijalardan samarali foydalanish tufayli).
Kod miqdorini kamaytirish ham ko'pincha dasturni bajarish tezligini
oshiradi.
• Muayyan platformaning o'ziga xos imkoniyatlaridan maksimal darajada
foydalanishni ta'minlash, bu ham samaraliroq dasturlarni, shu jumladan
kamroq resurslarni talab qiladigan dasturlarni yaratishga imkon beradi.
• Assemblar tilida dasturlashda apparat vositalariga, xususan, kiritish-
chiqarish portlariga, protsessor registrlariga va hokazolarga to'g'ridan-to'g'ri
kirish mumkin. Ko'pgina operatsion tizimlarda amaliy dasturlardan periferik
uskunalar registrlariga yozish uchun to'g'ridan-to'g'ri kirish bloklanadi. tizim


ishonchliligi va istisnolar muzlaydi."
• Assembly tili ko'pincha protsessor bilan periferik qurilmalar vaqtini
belgilash muhim bo'lsa, apparat drayverlarini va operatsion tizim yadrosini
(yoki OT yadrosining mashinaga xos quyi tizimlarini) yaratish uchun
ishlatiladi.
• Assembly tili "proshivka" BIOS yaratish uchun ishlatiladi.
• Assembly tili tez-tez mashinaga xos kompilyator pastki dasturlari va
yuqori darajadagi til tarjimonlarini yaratadi va platforma muvofiqligini
amalga oshiradi.
• Disassembler dasturi yordamida siz o'rganilayotgan dasturning
algoritmlarini yuqori darajadagi tilda listing yo'qligida tushunishingiz
mumkin, faqat mashina kodlarini o'rganasiz, ammo murakkab notrivial
dasturlarda bu juda va juda vaqt. -iste'mol.
Kamchiliklari
• Assembler tilining mashinaga yoʻnaltirilganligi (“past” darajasi) tufayli
undagi dasturni yuqori darajadagi dasturlash tillariga nisbatan odam oʻqishi
va tushunishi qiyinroq; dastur juda "kichik" elementlardan iborat - mashina
ko'rsatmalari,
mos
ravishda,
dasturlash
va
disk
raskadrovka
murakkablashadi, mehnatkashlik va xatolarni kiritish ehtimoli ortadi.
• Sifatli kod ishlab chiqarish uchun ilg'or dasturchi mahorati talab qilinadi:
o'rtacha dasturchi tomonidan assembler tilida yozilgan kod odatda yuqori
darajadagi
tilda
yozilgan
taqqoslanadigan
dasturlar
uchun
optimallashtiruvchi kompilyator tomonidan yaratilgan koddan yaxshiroq
yoki hatto yomonroq emas.
• Yuqori darajadagi til dasturi yangi maqsadli platformaning funksiyalari
uchun avtomatik optimallashtirish bilan qayta kompilyatsiya qilinishi
mumkin, yangi platformadagi assembler tili dasturi esa kodni qo‘lda qayta


yozmasdan o‘zining tezligi ustunligini yo‘qotishi mumkin.
• Qoidaga ko'ra, zamonaviy sanoat dasturlash tillariga nisbatan kamroq
kutubxonalar mavjud.
• Boshqa arxitektura va buyruqlar tizimiga ega bo'lgan kompyuterlarga
dasturlarni ko'chirish imkoniyati yo'q.
Sintaksis
Assembly tillari sintaksisi uchun umumiy qabul qilingan standart mavjud
emas. Biroq, de-fakto standartlar mavjud - ko'pchilik assembly tilini ishlab
chiquvchilar amal qiladigan an'anaviy yondashuvlar. Bunday asosiy
standartlar Intel sintaksisi va AT&T sintaksisidir.
Ko'rsatmalar yozishning umumiy formati ikkala standart uchun ham bir xil:
Opkod to'g'ridan-to'g'ri protsessorga yo'riqnomaning mnemonikidir. Unga
prefikslar qo'shilishi mumkin (takrorlashlar, manzillar turini o'zgartirish va
boshqalar). Operandlar konstantalar, registr nomlari, operativ xotira
manzillari va boshqalar bo'lishi mumkin. Intel va AT&T standartlari
o'rtasidagi farqlar, asosan, operandlarning ro'yxatga kiritilish tartibi va turli
adreslash usullari uchun ularning sintaksisi bilan bog'liq.
Amaldagi mnemonika odatda bir xil arxitektura yoki arxitektura oilasining
barcha protsessorlari uchun bir xil bo'ladi (keng ma'lum bo'lganlar orasida
Motorola, ARM, x86 protsessorlari va kontrollerlari uchun mnemonika bor).
Ular protsessor spetsifikatsiyasida tasvirlangan.
Masalan, Zilog Z80 protsessori Intel i8080 ko'rsatmalar to'plamini meros
qilib oldi, uni kengaytirdi va mnemonikani (va ro'yxatga olish belgilarini)
o'ziga xos tarzda o'zgartirdi. Misol uchun, men Intelning movini ld ga


o'zgartirdim. Motorola Fireball protsessorlari Z80 ko'rsatmalar to'plamini
meros qilib oldi va uni biroz qisqartirdi. Biroq, Motorola rasmiy ravishda
Intel mnemonikasiga qaytdi. va hozirda Fireball assemblerlarining yarmi
Intel mnemonikasida, yarmi esa Zilog mnemonikasida ishlaydi.
Mavjud buyruqlar ro'yxati
Tashish bilan ADC qo'shimchasi.
AD qo'shimchasi.
VA Mantiqiy VA.
BSF to'g'ridan-to'g'ri bitli skanerlash.
BSR teskari bitli skanerlash.
BT Bit tekshiruvi.
BTC Bitni tekshirish va inversiya qilish.
BTR Bitni tekshirish va tiklash.
BTS Beatni tekshiring va o'rnating.
CALL Protsedura chaqiruvi yoki vazifani almashtirish.
CBW Baytni so'zga aylantirish.
CLC Tashish bayrog'ini tozalang.
CLD Yo'nalishni tiklash bayrog'i.
CLI Reset uzilish bayrog'i.
CMC Tashish bayrog'ini aylantiring.
CDQ Doubleword to quadword ga aylantiring.
CMP solishtirish.
CWD So'zni qo'sh so'zga aylantiring.
CWDE So'zni qo'sh so'zga aylantiring.
DECning pasayishi.


DIV Imzosiz bo'linma.
IDIV Imzolangan bo'linma.
ENTER Stack ramkasini o'rnating.
IMUL imzolangan ko'paytirish.
INC ortishi.
J(COND) Shartli sakrash.
JMP Shartsiz sakrash.
LAHF Bayroq registrining past baytini AH ga yuklang.
LEAVE Stack ramkasini tiklang.
LOOP CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
LOOPNZ/LOOPNE CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
LOOPZ/LOOPE CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
MOV nusxasi.
MOVSX imzolangan kengaytma bilan nusxalash.
MOVZX Nol kengaytmasi bilan nusxalash.
MUL belgisiz ko'paytirish.
NEG belgisi o'zgarishi.
YO'Q Operatsiya yo'q.
Invert EMAS.
YOKI Mantiqiy YOKI.
POP Stackdan ko'tariladi.
POPA/POPAD Umumiy maqsadli registrlarni stekdan tiklang.
POPF/POPFD Stackdan bayroq registrini oching.
PUSH Stack ustiga bosing.
PUSHA/PUSHAD Umumiy maqsadli registrlarni stekga suring.
PUSHF/PUSHFD bayroq registrini stekga suring.


RCL Tashish bayrog'i orqali chapga burang.
RCR Yuk tashish bayrog'i bo'ylab o'ngga aylantiring.
RET/RETN/RETF Jarayondan qaytish.
ROL Chapga aylantiring.
ROR O'ngga aylantiring.
SAHF AH tarkibini bayroq registrining past baytiga yozing.
SAL Arifmetik chap siljish.
SAR arifmetik o'ngga siljish.
Qarz olish bilan SBB ayirish.
SHL Mantiqiy chap siljish.
SHLD Ikki marta aniqlikdagi chap siljish.
SHR Mantiqiy o'ngga siljish.
SHRD Ikki marta aniqlikdagi o'ngga siljish.
STC Yuk tashish bayrog'ini o'rnating.
STD Yo'nalish bayrog'ini o'rnating.
STI uzilish bayrog'ini o'rnating.
SUB olib tashlash.
TEST mantiqiy taqqoslash.
XCHG almashinuvi.
XOR Mantiqiy XOR.
Assembler dasturiga misollar
• “Salom Word!” dasturi. Intel x86 protsessorlari uchun
Mov ax,cs
Mov ds,ax


Mov ah,9
Mov dx, offset Hello
int 21h
xor ax,ax
int 21h
Hello:
db "Hello World!",13,10,"$"2. 
• Buyruqlar qatoridan ma'lumotlarni olish va xabar sifatida chiqarish
.486
.model flat, stdcall
option casemap: none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm 
uselib masm32, comctl32, ws2_32 
.data
.code
start:
call GetCommandLine ; результат будет помещен в eax
push 0
push chr$("Command Line")
push eax ; текст для вывода берем из eax
push 0
call MessageBox
push 0
call ExitProcess
end start
Turli protsessorlar uchun Assembler xususiyatlari
Protsessor barcha beshta kompyuter quyi tizimlarining faoliyatini


boshqaradi: qiymatlarni qo'shish, ularni xotiradan chiqish qurilmasiga
ko'chirish va hokazo. Biroq, bu erda savol tug'iladi, protsessor qaysi
operatsiyalarni bajarish kerakligini qanday biladi? Ya'ni, kompyuter bizga
kerak bo'lgan barcha xususiyatlarga ega, lekin u ishlay oladigan skriptga
ega emas.
Bu erda javob hayratlanarli darajada oddiy: protsessor xotiradan
ma'lumotlarni oladi va bu ma'lumotlar unga nima qilish kerakligini aytadi.
Bunday ma'lumotlar odatda ko'rsatmalar deb ataladi, ammo ko'rsatmalar
boshqa ma'lumotlar kabi oddiygina xotirada saqlanadigan qiymatlardir.
Protsessor bajarishi mumkin bo'lgan ko'rsatmalar to'plami (protsessor
ko'rsatmalar to'plami) protsessor apparati qila oladigan narsaga to'liq mos
keladi. Boshqacha qilib aytganda, protsessor ko'rsatmalari dasturiy
ta'minot protsessorga bajarishni buyurishi mumkin bo'lgan barcha
operatsiyalarni o'z ichiga oladi.
Misol uchun, agar ko'paytirish bo'yicha ko'rsatma mavjud bo'lmasa, u holda
kompyuter uskunasi ko'paytirishni amalga oshira olmaydi. Buning o'rniga,
ko'paytirish o'zgartirish va qo'shish operatsiyalari yordamida dasturiy
ta'minot orqali amalga oshiriladi, ammo bunday ko'paytirish ancha sekinroq.
Bu erda asosiy nuqta shundaki, protsessorning ko'rsatmalar to'plami
apparatga xos bo'lgan harakatlarni aks ettiradi.
Shuning uchun, har bir protsessorning yig'ish tili o'sha protsessorga xosdir
(har bir protsessor o'ziga xos xususiyatlarga va shuning uchun o'ziga xos
ko'rsatmalar to'plamiga ega).
Har bir ko'rsatmaning qiymati berilgan protsessor uchun o'ziga xos, qat'iy
belgilangan ma'noga ega. Misol uchun, ko'rsatma qiymati 4 8088 (yoki
8086) protsessoriga keyingi xotira joyida saqlangan qiymatni AL registriga


qo'shishni bildiradi. Natijada, siz protsessorga aytishingiz mumkin shuning
uchun u tegishli ko'rsatmalar qiymatlari to'plamidan foydalangan holda
kerakli harakatlar ketma-ketligini amalga oshiradi. Aslida, dastur shunchaki
ko'rsatmalar ketma-ketligi va boshqa hech narsa emas.
Protsessor keyingi qaysi buyruqni bajarish kerakligini qanday biladi?
Keyingi bajariladigan buyruqning qiymati saqlanadigan xotiradagi joyni
ko'rsatadigan ichki ko'rsatgichni kuzatib borish orqali. Keyingi buyruq
xotiradan o‘qilib, bajarilganda ko‘rsatgich keyingi ko‘rsatmaga o‘tadi.
Ba'zi ko'rsatmalar ko'rsatma ko'rsatgichini yangi qiymatga o'rnatishi
mumkin, bu protsessorga ma'lum shartlarga qarab bir qator ko'rsatmalarni
qat'iy bo'lmagan ketma-ketlikda bajarish va hatto turli ko'rsatmalar
guruhlarini bajarish qobiliyatini beradi.
Xulosa
Assambleya tili - bu past darajadagi dasturlash tili bo'lib, unda protsessor
uchun ko'rsatmalar odamlar uchun tushunarli. Har bir operatsion tizim,
arxitektura, protsessor, bit chuqurligi uchun ko'rsatmalar to'plamining o'zi
bog'liq.
Assembler to'g'ridan-to'g'ri xotira va protsessor bilan ishlash orqali yanada
optimallashtirilgan dasturlarni yozish imkonini beradi.
Bu tildagi dastur kodi bir necha marta kattalashadi, lekin kompilyatsiya
qilingan dasturning o'zi yuqori darajali tillarga qaraganda kamroq joy
egallaydi.


Adabiyotlar ro'yxati
1. Dasturlash tillari ensiklopediyasi: [Elektron resurs]. progopedia.ru. -
dasturlash tillari bo'yicha ma'lumotnoma internet resursi. - Kirish rejimi:
http://progopedia.ru/language/assembler/
2. Vikipediya - Wikipedia.org: [Elektron resurs]. Wikipedia.org - bu bepul
ensiklopediya. - Kirish rejimi:
https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%B0
%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80%D0
%B0
3. Assembly tilini yangi boshlanuvchilar uchun dasturlash va nafaqat:
[Elektron resurs]. Asm dunyo. - assembler tili uchun Internet ma'lumot
manbasi. - Kirish rejimi:
http://asmworld.ru/spravochnik-komand/
4. Yangi boshlanuvchilar uchun montajchi.: [Elektron resurs]. Perl,
Assembler, C - dasturchi blogi - Kirish rejimi:
http://dev-
lab.info/2014/01/%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0
%BB%D0%B5%D1%80-%D0%B4%D0%BB%D1%8F
-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0
%B8%D1%85-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B
-%D0%BF%D1%80%D0%BE/
TURBO ASSEMBLER 2.0 dasturlash tizimi bo'yicha qo'llanma:

Download 52.45 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling