1.1.3 Assembler tili operatorlari va ularni qo‘llash
Buyruqlarni tavsiflashda odatda ularning mnemonik belgilashlari (mnemonik kodlar) ishlatiladi, ular yig'ilish tilida dasturlash paytida buyruqni o'rnatish uchun ishlatiladi. Assemblerning turli xil versiyalari uchun ba'zi buyruqlarning mnemonik kodlari farq qilishi mumkin. Masalan, subroutine call buyrug'i uchun mnemonic code ishlatiladiQo'ng'iroq qiling yoki JSR ("O'tish SubRoutine”). Shu bilan birga, mikroprotsessorlarning asosiy turlari uchun ko'pgina buyruqlarning mnemonik kodlari bir-biriga to'g'ri keladi yoki bir-biridan ozgina farq qiladi, chunki ular bajarilayotgan operatsiyani aniqlaydigan mos keladigan inglizcha so'zlarning qisqartmasi. Protsessorlar uchun qabul qilingan buyruqlarning mnemonik kodlarini ko'rib chiqingPentium. Buyruqlarni yo'naltirish. Ushbu guruhning asosiy jamoasi bu jamoadirMOV , bu ikki registr o'rtasida yoki registr bilan xotira katakchasi o'rtasida ma'lumotlarni uzatishni ta'minlaydi. Ba'zi mikroprotsessorlar ikkita xotira katakchalari o'rtasida uzatishni, shuningdek bir nechta registrlar tarkibini xotiradan ommaviy uzatishni amalga oshiradilar. Masalan, 68 oilaning mikroprotsessorlarimotorola-dan xxx buyruqni bajaring HARAKAT , bitta xotira hujayrasidan boshqasiga uzatishni va buyruqni ta'minlash HARAKAT , bu xotiraga yozadi yoki xotiradan ma'lum registrlar to'plamini (16 registrgacha) yuklaydi. Jamoa XCHG protsessorning ikkita registri yoki registri va xotira katakchasining tarkibini o'zaro almashishni amalga oshiradi. Buyruqlarni kiritish IN va olib chiqish Chiqdi ma'lumotlarni protsessor registridan tashqi qurilmaga uzatish yoki tashqi qurilmadan registrga ma'lumotlarni qabul qilish. Ushbu buyruqlar orqali ma'lumotlar uzatiladigan interfeys qurilmasining raqami (I/U porti) ko'rsatilgan. Ko'pgina mikroprotsessorlarda tashqi qurilmalarga kirish uchun maxsus buyruqlar mavjud emasligiga e'tibor bering. Bunday holda tizimdagi ma'lumotlarni kiritish va chiqarish buyruq yordamida amalga oshiriladiMOV , unda kerakli interfeys qurilmasining manzili o'rnatiladi. Shunday qilib, tashqi qurilma xotira yacheykasi sifatida murojaat qilinadi va tizimga ulangan interfeys qurilmalarining (portlarining) manzillari joylashgan manzil maydonida ma'lum bir bo'lim ajratiladi. Arifmetik buyruqlar. Ushbu guruhdagi asosiy buyruqlar bir qator variantlarga ega bo'lgan qo'shish, ayirish, ko'paytirish va bo'lish buyruqlaridir. Qo'shish buyruqlari QO'ShIMChA va ayirish Sub bilan tegishli operatsiyalarni bajarishvikkita registr, registr va xotira joylashuvi yoki darhol operanddan foydalanish bilan ovora. Buyruqlar Mil C , SB B qo'shish va ayirish atribut qiymatini hisobga olgan holda amalga oshiriladiC, bu avvalgi operatsiya paytida transfer shakllanganda o'rnatiladi. Ushbu ko'rsatmalar bitlarning soni protsessor hajmidan oshib ketadigan operandlarni ketma-ket qo'shilishini amalga oshirish uchun ishlatiladi. Jamoa NEG operand belgisini o'zgartiradi, uni komplement kodiga aylantiradi. Ko'paytirish va bo'lish amallarini imzolangan raqamlar (buyruqlar) bo'yicha bajarish mumkinMen MUL, Men DIV ) yoki imzosiz (buyruqlar) MUL, DIV Operandlardan biri har doim registrda ajratiladi, ikkinchisi registrda, xotiraning joylashgan joyida yoki darhol operand bo'lishi mumkin. Amaliyot natijasi registrda joylashgan. Ko'paytirishda (buyruqlarMUL , IMUL ), natija ikki raqamli natijadir, buning uchun ikkita registr ishlatiladi. Bo'linishda (buyruqlarDIV , IDIV ) dividend sifatida ikkita registrda joylashgan ikki xonali operand ishlatiladi va natijada miqdor va qoldiq ikkita registrga yoziladi. Mantiqiy buyruqlar ... Deyarli barcha mikroprotsessorlar mantiqiy operatsiyalarni bajaradi AND, OR, Exclusive OR, bu buyruqlar yordamida operandlarning bir xil bitlarida bajariladi. VA, YOKI, X Yoki ... Amaliyotlar ikkita registr tarkibida, registrda va xotirada joylashgan joyda yoki darhol operand yordamida amalga oshiriladi. Jamoa YO'Q operandning har bir biti qiymatini teskari tomonga o'zgartiradi. Shift buyruqlari... Mikroprotsessorlar adreslangan operandlarning arifmetik, mantiqiy va tsiklik siljishlarini bir yoki bir necha bitga bajaradi. Ko'chirilgan operand registrda yoki xotira joyida bo'lishi mumkin va smenali bitlarning soni yo'riqnomada mavjud bo'lgan yoki belgilangan registrning mazmuni bilan aniqlangan operand yordamida aniqlanadi. Ko'chirish belgisi odatda smenani amalga oshirishda ishtirok etadiC holat registrida (SR yoki EFLAGLAR), unda operandning oxirgi biti mavjud bo'lib, u registrdan yoki xotira katagidan ko'chiriladi. Jamoalarni taqqoslang va sinovdan o'tkazing ... Operandlarni taqqoslash odatda buyruq yordamida amalga oshiriladi CMP , xarakterli qiymatlarni belgilash bilan operandlarni olib tashlaydi N, Z, V, C natijaga muvofiq holat registrida. Bunday holda, ayirish natijasi saqlanmaydi va operandlarning qiymatlari o'zgartirilmaydi. Olingan xususiyat qiymatlarini keyingi tahlil qilish nisbiy qiymatni aniqlashga imkon beradi (\u003e,<, =) операндов со знаком или без знака.
Ba'zi mikroprotsessorlar test buyrug'ini bajaradilar TST , bu taqqoslash buyrug'ining bitta operandli variantidir. Ushbu buyruqni ishga tushirish N, Z manzilli operandning belgisi va qiymatiga (nolga teng yoki teng emas) ko'ra. Bit operatsiyalari buyruqlari ... Ushbu buyruqlar atribut qiymatini o'rnatadiC sinov qilingan bitning qiymatiga muvofiq holat registridabn manzilli operandda. Ba'zi mikroprotsessorlarda bitni sinash natijalariga ko'ra belgi o'rnatilganZ... Sinov bit raqamin yoki buyruqda ko'rsatilgan registrning mazmuni yoki darhol operand tomonidan o'rnatiladi. Ushbu guruhning buyruqlari sinovdan o'tgan bitni o'zgartirish uchun turli xil variantlarni amalga oshiradi. BT ushbu bitning qiymatini o'zgarmaydi. B T S sinovdan so'ng qiymatni o'rnatadi bn\u003d 1 va buyruq B T C - qiymat bn\u003d 0 buyruq B T C bn bit qiymatini sinovdan o'tkazgandan so'ng uni teskari tomonga o'zgartiradi. Dasturni boshqarish operatsiyalari. Dasturni boshqarish uchun juda ko'p buyruqlardan foydalaniladi, ular orasida: - so'zsiz boshqarishni uzatish buyruqlari; - sakrashning shartli buyruqlari; - dastur tsikllarini tashkil etish bo'yicha jamoalar; - interrupt buyruqlari; - funktsiyalarni o'zgartirish uchun buyruqlar. Boshqaruvning shartsiz uzatilishi buyruq orqali amalga oshiriladiJMP bu dastur hisoblagichiga yuklanadiKompyuter yangi tarkib, bu bajariladigan navbatdagi buyruqning manzili. Ushbu manzil to'g'ridan-to'g'ri buyruqda ko'rsatilganJMP (to'g'ridan-to'g'ri manzil) yoki joriy tarkibning yig'indisi sifatida hisoblanadiKompyuter va imzo qo'yilgan raqam (nisbiy manzil) bo'lgan ofset buyrug'i. SifatidaKompyuter dasturning navbatdagi buyrug'ining manzilini o'z ichiga oladi, oxirgi usul esa o'tish manzilini o'rnatadi, keyingi manzildan belgilangan baytlar soniga o'tadi. Ijobiy ofset bilan dasturning keyingi buyruqlariga o'tish, salbiy ofset bilan - oldingilariga o'tish amalga oshiriladi. Subroutine chaqiruvi buyruq yordamida boshqarishni so'zsiz o'tkazish orqali amalga oshiriladiQo'ng'iroq qiling (yoki JSR ). Biroq, bu holda, ichiga yuklamasdan oldinKompyuter pastki dasturning birinchi buyrug'i manzilini belgilaydigan yangi tarkib, dastur bajarilgandan so'ng asosiy dasturga (yoki pastki dasturlarni joylashtirishda oldingi dasturga) qaytishni ta'minlash uchun uning joriy qiymatini (keyingi buyruq manzili) saqlash kerak. Shartli filial buyruqlari (dastur filiallari) yuklanadiKompyuter odatda vaziyat registridagi turli xil belgilarning joriy qiymatiga mos ravishda o'rnatiladigan muayyan shartlar bajarilsa, yangi tarkib. Agar shart bajarilmasa, u holda dasturning navbatdagi buyrug'i bajariladi. Xususiyatlarni boshqarish buyruqlari yozishni ta'minlaydi - xususiyatlar saqlanadigan holatlar registri tarkibini o'qish, shuningdek individual xususiyatlarning qiymatlarini o'zgartirish. Masalan, Pentium protsessorlarida buyruqlar bajariladi LAHF va SAHF status registridagi alomatlarni o'z ichiga olgan past baytni yuklaydigan EFLAG registrning past baytiga EAX va past baytni to'ldirish EFLAGLAR registrdan E AX.. Jamoalar CLC, STC uzatish belgisi CF \u003d 0, CF \u003d 1 va buyruq qiymatlarini o'rnatishni amalga oshiring CMC ushbu atribut qiymatining teskari tomonini keltirib chiqaradi. Belgilar shartli sakrashlar paytida dasturning bajarilish yo'nalishini belgilab berganligi sababli, odatda dasturni boshqarish uchun belgilarni o'zgartirish buyruqlari ishlatiladi. CPU buyruqlari ... Ushbu guruhga to'xtatish buyruqlari, operatsiyalarning yo'qligi va protsessor yoki uning alohida bloklarining ishlash rejimini belgilaydigan bir qator buyruqlar kiradi. JamoaHLT dasturning bajarilishini tugatadi va protsessorni to'xtash holatiga qo'yadi, undan chiqib ketish uzilish yoki qayta ishga tushirish signali qabul qilinganda paydo bo'ladi (Qayta o'rnatish). Jamoa Yo'q Hech qanday operatsiyani bajarishga olib kelmaydigan ("Bo'sh" buyrug'i) dasturning kechikishini amalga oshirish yoki dasturda hosil bo'lgan bo'shliqlarni to'ldirish uchun ishlatiladi. Maxsus buyruqlar CLI, STI uzilish so'rovlari xizmatini o'chirib qo'ying va yoqing. ProtsessorlardaPentium Buning uchun boshqaruv biti (bayroq) ishlatiladiIF reestrda EFLAGLAR. Ko'pgina zamonaviy mikroprotsessorlar foydalanuvchi yoki boshqa qurilmaga ma'lum tizimda ishlatiladigan protsessor turi to'g'risida ma'lumot olish imkoniyatini beruvchi identifikatsiya buyrug'ini bajaradi. Protsessorlarda Pentuim Buning uchun buyruq ishlatiladi CPUID , bajarilgandan so'ng, protsessor haqidagi kerakli ma'lumotlar registrlarga tushadi EAX,EBX,ECX,EDX va undan keyin foydalanuvchi yoki operatsion tizim tomonidan o'qilishi mumkin. Protsessor tomonidan amalga oshiriladigan ish rejimlariga va ishlov berilayotgan ma'lumotlarning belgilangan turlariga qarab, bajariladigan ko'rsatmalar to'plami sezilarli darajada kengaytirilishi mumkin. Ba'zi protsessorlar arifmetik amallarni ikkilik-o'nli raqamlar bilan bajaradilar yoki bunday sonlarni qayta ishlashda natijani to'g'irlash uchun maxsus buyruqlarni bajaradilar. Ko'pgina yuqori samarali protsessorlarga quyidagilar kiradiFPU - raqamlarni qayta ishlash birligiv Suzuvchi nuqta. Bir qator zamonaviy protsessorlar bir nechta butun sonlar yoki raqamlarni guruhli qayta ishlashni amalga oshiradilarv Bitta ko'rsatma bilan suzuvchi nuqtaSIMD (“Yagona ko'rsatma - bir nechta ma'lumotlar ”) -“ Bitta buyruq - Ko'p ma'lumotlar ”. Bir vaqtning o'zida bir nechta operandlarda operatsiyalarni bajarish video va audio ma'lumotlar bilan ishlashda protsessor ishini sezilarli darajada yaxshilaydi. Bunday operatsiyalar tasvirni qayta ishlash, audio signallari va boshqa dasturlarda keng qo'llaniladi. Ushbu operatsiyalarni bajarish uchun protsessorlarga tegishli ko'rsatmalar to'plamini amalga oshiradigan maxsus bloklar kiritildi, ular turli xil protsessorlarda (Pentium, Athlon) nomi berilganMMX (“ Milti- Media kengaytmasi ”) - Multimedia kengaytmasi,SSE ("Oqimli SIMD kengaytmasi") - Oqimli SIMD - kengaytma, “3 D. – Kengaytma” - 3D kengayish. Kompaniya protsessorlarining o'ziga xos xususiyatiIntel 80286 modelidan boshlab, protsessor himoyalangan virtual manzil rejimida ishlayotganida ta'minlanadigan xotiraga kirishda ustuvor boshqaruv ta'minlanadi - “Himoyalangan rejim "(Himoyalangan rejim). Ushbu rejimni amalga oshirish uchun qabul qilingan ustuvor kirish algoritmiga muvofiq xotirani himoyalashni tashkil etishga xizmat qiladigan maxsus buyruq guruhlari ishlatiladi. Maqsadga ko'ra siz buyruqlarni tanlashingiz mumkin (Qavsda IBM PC kabi kompyuterning assembler buyruqlari operatsiyalarining mnemonik kodlari misollari): arifmetik operatsiyalarni bajarish (ADD va ADC - o'tkazish bilan qo'shish va qo'shish, SUB va SBB - qarz bilan olib tashlash va olib tashlash, MUL va IMUL - imzosiz va imzolangan ko'paytirish, DIV va IDIV - imzosiz va imzolangan bo'linish, CMP - taqqoslashlar va hokazo.); l mantiqiy operatsiyalarni bajarish (OR, AND, NOT, XOR, TEST va boshqalar); l ma'lumotlar uzatish (MOV - yuborish, XCHG - almashinish, IN - mikroprotsessorga kirish, OUT - mikroprotsessordan chiqish va hk); l boshqaruvni uzatish (dastur tarmoqlari: JMP - shartsiz filial, CALL - protsedurani chaqirish, RET - protseduradan qaytish, J * - shartli filial, LOOP - pastadir nazorati va boshqalar); l belgilar satrlarini qayta ishlash (MOVS - o'tkazmalar, CMPS - taqqoslashlar, LODS - yuklashlar, SCAS - skanerlash. Ushbu buyruqlar, odatda, prefiks (takrorlash modifikatori) REP bilan ishlatiladi; l dasturning uzilishlari (INT - dasturiy ta'minotning uzilishi, INTO - toshib ketganda shartli uzilishlar, IRET - uzilishdan qaytish); l mikroprotsessorni boshqarish (ST * va CL * - bayroqlarni o'rnatish va tozalash, HLT - to'xtash, WAIT - kutish, NOP - bo'sh turish va hk). Assambleyer buyruqlarining to'liq ro'yxatini ishlarda topish mumkin. Ma'lumotlarni uzatish buyruqlari l MOV dst, src - ma'lumotlarni uzatish (ko'chirish - src dan dst ga o'tkazish). O'tkazmalar: bitta bayt (agar src va dst bayt formatida bo'lsa) yoki bitta so'z (agar src va dst so'z formatida bo'lsa) registrlar o'rtasida yoki registr va xotira o'rtasida, shuningdek darhol qiymatni registrga yoki xotiraga yozadi. Dst va src operandlari bir xil bayt yoki so'z formatida bo'lishi kerak. Src turi bo'lishi mumkin: r (registr) - registr, m (xotira) - xotira, i (impedans) - darhol qiymat. Dst r, m turdagi bo'lishi mumkin. Siz bitta buyruqda quyidagi operandlardan foydalana olmaysiz: rsegm i bilan birga; m tipidagi ikkita operand va rsegm turdagi ikkita operand). I operand oddiy ibora ham bo'lishi mumkin: mov AX, (152 + 101B) / 15 Ifoda faqat tarjima paytida baholanadi. Bayroqlarni o'zgartirmaydi. l PUSH src - so'zni stakka surish (surish) - surish; src-dan stakka suring). Src tarkibini, har qanday 16-bitli registrni (segmentlarni o'z ichiga olgan holda) yoki 16-bitli so'zni o'z ichiga olgan ikkita xotira joyini stekning yuqori qismiga surib qo'yadi. Bayroqlar o'zgarmaydi; l POP dst - so'zni to'plamdan chiqarib tashlash (pop - pop; ststdan dstgacha o'qish). Stekning yuqori qismidagi bir so'zni chiqarib, uni dst-ga joylashtiring - har qanday 16-bitli registr (shu jumladan segment) yoki ikkita xotira joyi. Bayroqlar o'zgarmaydi. Mashina inson buyruqlarini apparat darajasida bajara olishi uchun "nol va bir" tilida ma'lum harakatlar ketma-ketligini o'rnatish kerak. Ushbu masalada montajchi yordamchiga aylanadi. Bu buyruqlarni mashina tiliga tarjima qilish bilan ishlaydigan yordamchi dastur. Biroq, dastur yozish juda mashaqqatli va murakkab jarayon. Ushbu til oson va sodda amallarni yaratish uchun mo'ljallanmagan. Ayni paytda har qanday ishlatiladigan dasturlash tili (Assembler juda yaxshi ishlaydi) sizga apparatning ishlashiga katta ta'sir ko'rsatadigan maxsus samarali vazifalarni yozishga imkon beradi. Asosiy maqsad mikroinstruktsiyalar va kichik kodlarni yaratishdir. Ushbu til, masalan, Paskal yoki S ga qaraganda ko'proq imkoniyatlarni taqdim etadi.
Do'stlaringiz bilan baham: |