Assambleya tili Assembly language Assambleya tili


Download 124.19 Kb.
bet2/3
Sana06.04.2023
Hajmi124.19 Kb.
#1332415
1   2   3
S1 B FWD ...FWD EQU * ...BKWD EQU * ...S2 B BKWD
Yuqori darajadagi montajchilar
Keyinchalik murakkab yuqori darajadagi montajchilar quyidagi kabi abstraktsiyalarni taqdim eting:

  • Yuqori darajadagi protsedura / funktsiya deklaratsiyalari va chaqiruvlari

  • Murakkab boshqaruv tuzilmalari (IF / THEN / ELSE, SWITCH)

  • Ma'lumotlarning yuqori darajadagi mavhum turlari, shu jumladan tuzilmalar / yozuvlar, uyushmalar, sinflar va to'plamlar

  • Murakkab so'llarni qayta ishlash (garchi 1950-yillarning oxiridan boshlab oddiy montajchilarda mavjud bo'lsa ham, masalan IBM 700 seriyali va IBM 7000 seriyali va 1960 yildan beri IBM System / 360 (S / 360), boshqa mashinalar qatorida)

  • Ob'ektga yo'naltirilgan dasturlash kabi xususiyatlar sinflarob'ektlarmavhumlikpolimorfizm va meros olish[16]

Qarang Til dizayni batafsil ma'lumot uchun quyida.
Assambleya tili
Assambleya tilida yozilgan dastur bir qatordan iborat mnemonik protsessor ko'rsatmalari va meta-bayonotlar (turli xil ko'rsatmalar, psevdo-yo'riqnomalar va psevdo-ops sifatida tanilgan), sharhlar va ma'lumotlar. Assambleya tiliga oid ko'rsatmalar odatda an opkod mnemonic, so'ngra ma'lumotlar, argumentlar yoki parametrlar ro'yxati.[17] Bular tarjima qilingan montajchi ichiga mashina tili xotiraga yuklanishi va bajarilishi mumkin bo'lgan ko'rsatmalar.
Masalan, quyidagi ko'rsatma an x86 /IA-32 ko'chirish uchun protsessor darhol 8-bitli qiymat ichiga ro'yxatdan o'tish. Ushbu ko'rsatma uchun ikkilik kod 10110 va undan keyin registrdan foydalaniladigan 3-bitli identifikator mavjud. Uchun identifikator AL registri 000, shuning uchun quyidagilar mashina kodi yuklaydi AL 01100001 ma'lumotlari bilan ro'yxatdan o'ting.[17]
10110000 01100001
Ushbu ikkilik kompyuter kodini uni ifoda etish orqali inson tomonidan ko'proq o'qilishi mumkin o'n oltinchi quyidagicha.
B0 61
Bu yerda, B0 "Quyidagi qiymatning nusxasini ko'chiring ALva 61 bu 01100001 qiymatining o'n oltinchi ko'rsatkichi bo'lib, u 97 dyuymga teng o‘nli kasr. 8086 oilasi uchun yig'ilish tili quyidagilarni ta'minlaydi mnemonik MOV (ning qisqartmasi harakat qilish) kabi ko'rsatmalar uchun, shuning uchun yuqoridagi mashina kodini majmua tilida quyidagicha yozish mumkin, agar kerak bo'lsa, izohli sharh bilan to'ldirib, verguldan keyin. Buni o'qish va eslash ancha oson.
MOV AL, 61 soat ; ALni 97 kasrli (61 olti) bilan yuklang
Ba'zi bir yig'ilish tillarida (shu jumladan, shu jumladan) bir xil mnemonika, masalan, MOV, ma'lumotlarni yuklash, nusxalash va ko'chirish bo'yicha tegishli ko'rsatmalar oilasi uchun ishlatilishi mumkin, bu darhol qiymatlar bo'ladimi, registrlardagi qiymatlar yoki xotira joylari tomonidan ko'rsatilgan. registrlardagi qiymatlar yoki darhol (a / k / a) manzillar bo'yicha. Boshqa montajchilar alohida opkod mnemonikasidan foydalanishlari mumkin: masalan, "xotirani ro'yxatdan o'tkazish uchun ko'chirish" uchun L, ST "registrni xotiraga ko'chirish" uchun, LR "ro'yxatdan o'tkazish uchun ko'chirish" uchun, MVI "operandni tezkor xotiraga ko'chirish" va boshqalar.
Agar bir xil mnemonik turli xil ko'rsatmalar uchun ishlatilsa, demak mnemonik bir nechta turli xil ikkilik ko'rsatmalar kodlariga mos keladi, ma'lumotlardan tashqari (masalan, 61 soat mnemonikaga ergashgan operandlarga qarab). Masalan, x86 / IA-32 protsessorlari uchun Intel assambleyasi tili sintaksisi MOV AL, AH registr tarkibini harakatga keltiruvchi ko'rsatmani anglatadi AH ro'yxatga olish AL. The[nb 2] ushbu ko'rsatmaning o'n oltinchi shakli:
88 E0
Birinchi bayt, 88h, bayt o'lchamidagi registr bilan boshqa registr yoki xotira o'rtasida harakatlanishni aniqlaydi, va ikkinchi bayt E0h kodlangan (uchta bitli maydon bilan), ikkala operand ham registr, manba AHva manzil shu AL.
Xuddi shunday mnemonik bir nechta ikkilik buyruqni aks ettirishi mumkin bo'lgan bunday holatda, assambleyer operandlarni o'rganish orqali qaysi buyruqni yaratishni aniqlaydi. Birinchi misolda operand 61 soat haqiqiy o'n oltinchi raqamli doimiy va haqiqiy registr nomi emas, shuning uchun faqat B0 ko'rsatma qo'llanilishi mumkin. Ikkinchi misolda operand AH bu haqiqiy registr nomi va haqiqiy son doimiy emas (o'n oltinchi, o'nlik, sakkizli yoki ikkilik), shuning uchun faqat 88 ko'rsatma qo'llanilishi mumkin.
Assambleya tillari har doim shunday ravshanlik ularning sintaksisi tomonidan universal tarzda bajarilishi uchun ishlab chiqilgan. Masalan, Intel x86 assambleyasi tilida o'n oltilik doimiy doimiy ravishda raqamli raqam bilan boshlanishi kerak, shunda o'n oltinchi raqam 'A' (o'nli kasrga teng) quyidagicha yoziladi. 0Ah yoki 0AH, emas AH, xususan, bu registr nomi bo'lishi mumkin emasligi uchun AH. (Xuddi shu qoida, shuningdek, registrlar nomlari bilan noaniqlikni oldini oladi BHCHva DH, shuningdek, harf bilan tugaydigan foydalanuvchi tomonidan belgilangan har qanday belgi bilan H va aks holda faqat o'n oltita raqamli belgilar, masalan, "BEACH" so'zi mavjud.)
Asl misolga qaytsak, x86 opcode 10110000 (B0) 8-bitli qiymatni AL ro'yxatdan o'tish, 10110001 (B1) ichiga ko'chiradi CL va 10110010 (B2) shunday qiladi DL. Quyida keltirilganlar uchun assambleya tili misollari.[17]
MOV AL, 1 soat ; AL-ni darhol 1 qiymati bilan yuklangMOV CL, 2 soat ; Darhol qiymati 2 bo'lgan CLni yuklangMOV DL, 3 soat ; DL ni darhol qiymati 3 bilan yuklang
MOV sintaksisi ham murakkab bo'lishi mumkin, chunki quyidagi misollar ko'rsatib turibdi.[18]
MOV EAX, [EBX] ; EBX-dagi manzildagi xotiradagi 4 baytni EAX-ga o'tkazingMOV [ESI+EAX], CL ; CL tarkibini ESI + EAX manzilidagi baytga o'tkazingMOV DS, DX ; DX tarkibini DS segment registriga o'tkazing
Har ikkala holatda ham MOV mnemonic to'g'ridan-to'g'ri 88-8C, 8E, A0-A3, B0-BF, C6 yoki C7 opkodlaridan biriga assembler tomonidan tarjima qilinadi va dasturchi odatda qaysi birini bilishi yoki eslashi shart emas.[17]
O'rnatish tilini mashina kodiga aylantirish - bu montajchining ishi va buning teskarisiga kamida qisman erishish mumkin demontaj qiluvchi. Aksincha yuqori darajadagi tillar bor birma-bir yozishmalar ko'plab oddiy yig'ilish bayonotlari va mashina tiliga oid ko'rsatmalar o'rtasida. Biroq, ba'zi hollarda, assembler taqdim etishi mumkin yolg'on ko'rsatmalar (asosan makrolar), ular odatda kerakli funktsiyalarni ta'minlash uchun bir nechta mashina tilidagi ko'rsatmalarga kengayadi. Masalan, "katta yoki teng bo'lsa filial" buyrug'iga ega bo'lmagan mashina uchun montajchi mashinaning "kam bo'lsa" to'plamiga va "agar nol bo'lsa (o'rnatilgan ko'rsatma natijasi bo'yicha) tarmoqqa" kengayadigan psevdoinstruktsiyani taqdim etishi mumkin. . Ko'pgina to'liq jihozlangan montajchilar, shuningdek, boylikni ta'minlaydi so'l sotuvchilar va dasturchilar tomonidan yanada murakkab kod va ma'lumotlar ketma-ketligini yaratish uchun foydalaniladigan til (quyida muhokama qilinadi). Assambleyer muhitida aniqlangan psevdoinstruktsiyalar va makroslar haqidagi ma'lumotlar ob'ekt dasturida mavjud bo'lmaganligi sababli, demontaj qiluvchi so'l va psevdoinstruktsiya chaqiruvlarini qayta tiklay olmaydi, lekin faqat montajchining o'sha mavhum yig'ilish tili ob'ektlaridan yaratgan haqiqiy mashina ko'rsatmalarini demontaj qilishi mumkin. Xuddi shunday, assambleyer tomonidan assotsiatsiya tilidagi manba faylidagi izohlar e'tiborsiz qoldirilganligi va u yaratadigan ob'ekt kodiga ta'sir qilmasligi sababli, demontaj qiluvchi har doim ham manba izohlarini tiklay olmaydi.
Har biri kompyuter arxitekturasi o'ziga xos mashina tiliga ega. Kompyuterlar qo'llab-quvvatlaydigan operatsiyalar soni va turlari, registrlarning har xil o'lchamlari va raqamlari va saqlashdagi ma'lumotlarning namoyish etilishi bilan farq qiladi. Ko'pgina kompyuterlar asosan bir xil funktsiyalarni bajara olsalar ham, ularning bajarilish usullari bir-biridan farq qiladi; mos keladigan yig'ilish tillari ushbu farqlarni aks ettiradi.
Bir nechta to'plamlar mnemonika yoki assambleya tilidagi sintaksis odatda har xil assambleyer dasturlarida yaratilgan bitta ko'rsatma to'plami uchun mavjud bo'lishi mumkin. Bunday hollarda, eng ommabop, odatda protsessor ishlab chiqaruvchisi tomonidan ta'minlanadi va uning hujjatlarida ishlatiladi.
Ikki xil mnemonika to'plamiga ega bo'lgan protsessorlarning ikkita misoli Intel 8080 oilasi va Intel 8086/8088. Intel mnemonika (hech bo'lmaganda 1970 va 1980-yillarning boshlarida nashr etilgan hujjatlarning har bir sahifasida) mualliflik huquqini talab qilganligi sababli, Intel yo'riqnomalariga mos keladigan protsessorlarni mustaqil ravishda ishlab chiqaradigan ba'zi kompaniyalar o'zlarining mnemonikalarini ixtiro qildilar. The Zilog Z80 CPU, takomillashtirilgan Intel 8080A, barcha 8080A ko'rsatmalarini va boshqalarni qo'llab-quvvatlaydi; Zilog nafaqat yangi ko'rsatmalar uchun, balki 8080A yo'riqnomalari uchun ham butunlay yangi yig'ilish tilini ixtiro qildi. Masalan, Intel mnemonics-dan foydalanadigan joy MOVMVILDASTALXILDAXSTAXLHLDva SHLD turli xil ma'lumotlarni uzatish bo'yicha ko'rsatmalar uchun Z80 assambleyasi tili mnemonicdan foydalanadi LD ularning barchasi uchun. Shunga o'xshash holat NEC V20 va V30 CPU, Intel 8086 va 8088 mos ravishda yaxshilangan nusxalari. Zilog bilan Z80 kabi, NEC ham Intel mualliflik huquqini buzganlikda ayblanmaslik uchun 8086 va 8088 yo'riqnomalari uchun yangi mnemonika ixtiro qildi. (Bunday mualliflik huquqlari amal qilishi mumkinmi yoki keyinchalik protsessor kompaniyalari kabi savollar tug'diradi AMD[nb 3] va Cyrix Intel-ning x86 / IA-32 yo'riqnomasi mnemonikasini aynan na ruxsatsiz va na qonuniy jazo bilan qayta nashr etdi.) Amalda V20 va V30 ni dasturlashtirgan ko'plab odamlar Intelga emas, balki aslida NEC-ning yig'ilish tilida yozganliklari shubhali; bir xil ko'rsatmalar to'plamining arxitekturasi uchun har qanday ikkita montaj tili izomorfik (ingliz va cho'chqa lotin tillari singari) bo'lgani uchun, ishlab chiqaruvchining ushbu ishlab chiqaruvchining mahsulotlari bilan nashr etilgan montaj tilidan foydalanish shart emas.
Til dizayni
Advertisement
Asosiy elementlar
Assambleyerlarning mualliflari bayonotlarni turkumlash uslubida va ular ishlatadigan nomenklaturada katta xilma-xillik mavjud. Xususan, ba'zilari mashinadan mnemonik yoki kengaytirilgan mnemonikadan boshqasini psevdo-operatsiya (pseudo-op) deb ta'riflaydi. Odatiy assambleya tili dastur operatsiyalarini aniqlash uchun ishlatiladigan ko'rsatmalarning uchta turidan iborat:

  • Opcode mnemonika

  • Ma'lumotlarning ta'riflari

  • Assambleya ko'rsatmalari

Opcode mnemonics va kengaytirilgan mnemonics
Assambleya tilidagi ko'rsatmalar (bayonotlar) odatda, juda oddiy, ulardan farqli o'laroq yuqori darajadagi tillar. Umuman olganda, mnemonik - bu bitta bajariladigan kompyuter tili buyrug'ining ramziy nomi (an opkod ) va har bir mashina tilini o'qitish uchun kamida bitta opcode mnemonic aniqlangan. Har bir ko'rsatma odatda operatsiya yoki opkod ortiqcha nol yoki undan ko'p operandlar. Ko'pgina ko'rsatmalar bitta qiymatga yoki bir juft qiymatga tegishli. Operandlar darhol bo'lishi mumkin (ko'rsatmaning o'zida kodlangan qiymat), yo'riqnomada ko'rsatilgan yoki nazarda tutilgan registrlar yoki boshqa joyda joylashgan ma'lumotlar manzillari. Bu asosiy protsessor arxitekturasi bilan belgilanadi: assembler faqat ushbu arxitektura qanday ishlashini aks ettiradi. Kengaytirilgan mnemonika ko'pincha ma'lum bir operand bilan opcode kombinatsiyasini belgilash uchun ishlatiladi, masalan, System / 360 montajchilari foydalanadi B uchun kengaytirilgan mnemonik sifatida Miloddan avvalgi niqob bilan 15 va Yo'q ("OChAR YO'Q" - bir qadam uchun hech narsa qilmang) uchun Miloddan avvalgi 0 niqob bilan.
Advertisement

Download 124.19 Kb.

Do'stlaringiz bilan baham:
1   2   3




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