Bo'lgan mashina ko'rsatmalarini yozish uchun formatdir
Download 52,45 Kb. Pdf ko'rish
|
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 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling