• Assembler tilidan
  • 9-Ma’ruza Assembler dasturlash tili va uning imkoniyatlari Yuqori sath tillari hisoblangan C, C+ va Java kabi dasturlash tillarida yozilgan bitta operatorni amalga oshirish uchun, bir nechta mashina buyruqlarini bajarish kerak bo‘ladi




    Download 82,19 Kb.
    bet1/2
    Sana20.05.2024
    Hajmi82,19 Kb.
    #246191
      1   2
    Bog'liq
    9-Maruza


    9-Ma’ruza
    Assembler dasturlash tili va uning imkoniyatlari
    Yuqori sath tillari hisoblangan C, C+ va Java kabi dasturlash tillarida yozilgan bitta operatorni amalga oshirish uchun, bir nechta mashina buyruqlarini bajarish kerak bo‘ladi. Har bir operatorga bittadan mashina buyrug‘i to‘g‘ri keladigan til esa – assembler tili deb ataladi.
    Kompyuter texnikasining rivojlanishi dasturlash tillarida algoritmlarni yozib olish uchun turli xil yangi belgilar tizimlarining paydo boʻlish jarayonini belgilab berdi. Bunday tilning paydo boʻlishining maʼnosi dastur kodini soddalashtirishdan iborat edi. Dasturlash tillarini besh avlodga boʻlish qabul qilingan. Birinchi avlodga oʻtgan asrning 50-yillari boshlarida, birinchi kompyuterlar endigina paydo boʻlgan paytda tuzilgan tillar kiradi. Bu "bir satrda bir buyruq" prinsipi asosida qurilgan birinchi assembler tili edi.
    XX asr davomida kompilyatorlar nazariyasi boʻyicha olib borilgan izlanishlar yuqori darajadagi dasturlash tillarini yaratishga olib keldi, ular koʻrsatmalarni uzatish uchun qulayroq sintaksisdan foydalanadilar.
    Kompyuterning elektron qurilmalari ishlashning fizik tamoyillari shundan iboratki, kompyuter faqat bir va noldan iborat buyruqlarni — kuchlanishning pasayishi ketma-ketligini, yaʼni mashina kodini idrok eta oladi. Kompyuterlar rivojlanishining dastlabki bosqichida odam kompyuterga tushunarli tilda, mashina kodlarida dasturlar tuzishi kerak edi. Har bir koʻrsatma birliklar va nollarning turli kombinatsiyasi sifatida ifodalangan opkod hamda operand manzillaridan iborat edi. Shunday qilib, protsessor uchun har qanday dastur oʻsha paytda birlar va nollar ketma-ketligi sifatida qaragan. Keyinchalik kompyuter bilan muloqot qilish amaliyoti shuni koʻrsatdiki, bunday tilni oʻzlashtirish qiyin va noqulaydir. Uni ishlatganda 1 yoki 0 ni notoʻgʻri ketma-ketlikda yozib koʻplab xatolarga yoʻl qoʻyish ehtimoli juda yuqori edi. Dasturni boshqarish juda qiyin boʻlgan. Bundan tashqari, mashina kodlarida dasturlashda kompyuterning ichki tuzilishini, har bir blokning ishlash prinsipini yaxshi bilish kerak edi va bunday tildagi eng yomon narsashundaki, bu tildagi dasturlar — birlar va nollarning juda uzun ketma-ketligi mashinaga bogʻliq, yaʼni har bir kompyuter uchun oʻz dasturini tuzish kerak edi va mashina kodlarida dasturlash juda koʻp narsa: vaqt, ish va dasturchining eʼtiborini oshirishni talab etardi.
    Tez orada mashina kodini yaratish jarayonini avtomatlashtirish mumkinligi maʼlum boʻldi. 1950-yildan boshlab dasturlarni yozish uchun mnemonik til — Assembler tilidan foydalanila boshlandi. Assembler tili mashina kodini inson uchun qulayroq shaklda koʻrsatishga imkon berdi: buyruqlar va bu buyruqlar bajariladigan obyektlarni belgilash uchun buyruqning mohiyatini aks ettiruvchi ikkilik kodlar oʻrniga harflar yoki qisqartirilgan maxsus soʻzlar qoʻllanilgan. Masalan, assembler tilida ikkita raqamni qoʻshish boʻyicha koʻrsatma add soʻzi bilan ifodalanadi, uning mashina kodi 000010 tarzida boʻladi. Assembler quyi darajadagi dasturlash tilidir. Quyi darajadagi dasturlash tili, bu muayyan turdagi protsessorga yoʻnaltirilgan va uning xususiyatlarini hisobga oladigan dasturlash tili demakdir. Bunday holda, “quyi” “yomon” degani emas, balki bu shuni anglatadiki, til operatorlari mashina kodiga yaqin va maxsus protsessor koʻrsatmalariga qaratilgan boʻladi. Assemblar tilining paydo boʻlishi dasturchilarning hayotini sezilarli darajada osonlashtiradi, chunki endi ular koʻzda miltillovchi nollar va birlar oʻrniga oddiy tilga yaqin belgilardan iborat buyruqlar bilan dastur yozishlari mumkin edi. Oʻsha vaqt uchun bu til innovatsiya edi va mashhur edi, chunki u kichik dasturlarni yozishga imkon berardi, bu esa oʻsha davr mashinalari uchun muhim mezon sanalgan. Ammo u orqali yirik dasturiy taʼminotlar ishlab chiqish murakkabligi boʻlganligi bois uchinchi avlod tillari hisoblanmish yuqori darajadagi tillarning paydo boʻlishiga olib keldi. Ammo assemblerdan foydalanish shu bilan tugamadi, u bugungi kungacha tor doiralarda mashhur boʻlib kelmoqda. Hozirgi vaqtda u dasturlarning alohida qismlarini yozishda yoki baʼzan dasturlarning oʻzini yozishda qoʻllaniladi.

    • Dasturlash - bu dasturlash tilida yozilgan dasturiy mahsulotlarni yaratish san'ati.

    • Dasturlash tili - bu kompyuter tomonidan o'qiladigan dasturlarni yozish uchun yaratilgan rasmiy ishora tizimi.

    • Dasturlash tillari uch turga bo'linadi:

    • mashina tillari. Bu odam uchun juda tushunarsiz, ammo kompyuter uchun juda tushunarli.

    • past darajadagi tillar. Masalan, Assembler.

    • yuqori darajadagi dasturlash tillari. Masalan, Paskal, C, Java.

    M oris Uilkes – “Edsack” uchun mnemonik sxema va bitta tizimda (ingliz tilida assembly system deb nomlangan) yig‘ilgan dasturlar ketma-ketligidan iborat kutubhonani e’lon qiladi. U dasturlar bajarilishining ketma-ketligini tashkil qilgan bo‘lgan.

    Mnemokod

    Izoh

    LDA 0B00

    0B00 adresidan sonniolib yozish, yani xotiradagi sonni MPning birinchi ichki registry bo‘lgan akkumulyator (A)-ga yozish

    CMA

    (A)-da yozilgan sonni inkorlash

    STA 0B01

    Natija xotiraning 0B01 adresiga yozish

    RST 1

    Dasturni ishlashda to‘tatish

    4.1-rasm. Xotirada yozilgan sonni inkorlash dasturi



    Adres

    Son

    Izoh

    0800

    3A

    LDA buyrug‘ining mashina kodi.

    0801

    00

    Adresning kichik bayti

    0802

    0B

    Adresning katta bayti

    0803

    2F

    CMA buyrug‘ining mashina kodi

    0804

    32

    STA buyrug‘ining mashina kodi.

    0805

    01

    Adresning kichik bayti

    0806

    0B

    Adresning katta bayti

    0807

    CF

    RST 1 buyrug‘ining mashina kodi

    4.2-rasm. Assemblerlangan dastur.



    4.3-rasm. Dasturni xotira adreslari bo‘yicha joylashishi.



    Adres

    Mashina kodi

    Metka

    Mnemokod

    Izoh

    0800

    3A 000B




    LDA, 0B00

    Sonni olib yozish

    0803

    2F




    CMA

    Sonni inkorlash

    0804

    32 010B




    STA, 0B01

    0B01adresi bo‘yicha yozish

    0807

    CF




    RST 1

    Dastur to‘xtatish

    4.4-rasm. Dasturni bitta qatorda, bitta buyruq keltirilgan
    ko‘rinishda yozilgan holati.
    Assembler tilida ishlash oson emas. Biron bir dasturni assembler tilida yozish, o‘sha dasturni C, C+ va Java kabi dasturlash tillarida yozishga nisbatan ko‘p vaqt talab qiladi. Assemlerda dasturni to‘g‘ri ishlaydigan holatga keltirish ham (rus tilida – отладка программы) juda ko‘p vaqt talab qiladi. Shunday ekan assemblerda dasturlash nima uchun kerak - degan savol paydo bo‘ladi. Bunga asos qilib quyidagi ikki sababni ko‘rsatish mumkin: assembler tilida tuzilgan dasturlar unumdorligining yuqori bo‘lishi (rus tilida – высокая производительность программ) va ularda kompyuterning apparat vositalariga to‘g‘ridan-to‘g‘ri murojaat qila olish imkonining borligi. Yuqori malakaga ega bo‘lgan dasturchi, assembler tilida, yuqori sath tilida tuzilgan dasturga nisbatan, ancha kam xotira egallaydigan va anchagina tez ishlaydigan dasturlarni tuzishi mumkin. Ko‘p hollarda, yozilgan dasturning kamroq xotirani egallashi va tez bajarila olishi mumkinligi juda muhim ahamiyat kasb etadi. Hozirda ko‘pgina o‘rnatiladigan amaliy dasturlar, masalan – smart-kartalardagi va uyali telefonlardagi dasturlar, har-xil qurilmalarning drayverlari va BIOSning muolajalari (rus tilida – процедуры) ana shunday dasturlar sirasiga kiradi. Assembler tilini o‘rganish bilan biz, kompyuterning qanday ishlashini va uning ichki tuzilishi, ya’ni arxitekturasi qanday ekanligini mukammal o‘rganish imkoniyatiga ega bo‘lamiz.

      1. Assembler tili operatorlari va ularni qo‘llash

    Assembler tilida operator – unga mos mashina buyrug‘ining tuzilishini o‘zida ifodalaydi. Ammo turli xil kompyuterlar uchun ishlab chiqilgan assembler tillari, ko‘p jihatlari bilan o‘zaro o‘xshash bo‘lganliklari sababli, assembler tili haqida umumlashtirib ham gapirish mumkin. 4.5, 4.6 va 4.7-keltirilgan misollarda, Pentium 4, Motorola 680x0 va UltraSPARC protsessorlari asosida qurilgan kompyuterlar uchun assembler tilida yozilgan dasturlarning bo‘laklari keltirilgan. Barcha dasturlar N = I + J formulani hisoblashni amalga oshiradi. Barcha misollarda bo‘sh qatorgacha bo‘lgan operatorlar hisoblashlarni bajaradilar, bo‘sh qatordan pastda joylashgan operatorlar esa I, J va N o‘zgaruvchilar yozish uchun mo‘ljallangan xotirani ajratib qo‘yishni amalga oshiradilar.



    FORMULA:

    MOV
    ADD
    MOV

    EAX.I
    EAX.J
    N.EAX

    :Registr EAX=1
    :Registr EAX=I+J
    N=I+J

    I

    DD

    3

    4 bayt ajratish va ularga 3 qiymatini yozish

    J

    DD

    4

    4 bayt ajratish va ularga 4 qiymatini yozish

    N

    DD

    0

    4 bayt ajratish va ularga 0 qiymatini yozish


    Download 82,19 Kb.
      1   2




    Download 82,19 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    9-Ma’ruza Assembler dasturlash tili va uning imkoniyatlari Yuqori sath tillari hisoblangan C, C+ va Java kabi dasturlash tillarida yozilgan bitta operatorni amalga oshirish uchun, bir nechta mashina buyruqlarini bajarish kerak bo‘ladi

    Download 82,19 Kb.