Zbekiston respublikasi toshkent shahar al-xorazmiy nomidagi toshkent axborot
Download 70.77 Kb. Pdf ko'rish
|
1-topshiriq
- Bu sahifa navigatsiya:
- Assambler kodidan namunalarni ko’rish mumkin
- Foydalanilgan adabiyotlar 1. https://www.tutorialspoint.com/assembly_programming /index.htm 2.
section
. text global _start ; must be declared for using gcc _start : ; tell linker entry point ; create the file mov eax , 8 mov ebx , file_name mov ecx , 0777 ; read , write and execute by all int 0x80 ; call kernel mov [ fd_out ], eax ; write into the file mov edx , len ; number of bytes mov ecx , msg ; message to write mov ebx , [ fd_out ] ; file descriptor mov eax , 4 ; system call number ( sys_write ) int 0x80 ; call kernel ; close the file mov eax , 6 mov ebx , [ fd_out ] ; write the message indicating end of file write mov eax , 4 mov ebx , 1 mov ecx , msg_done mov edx , len_done int 0x80 ; open the file for reading mov eax , 5 mov ebx , file_name mov ecx , 0 ; for read only access mov edx , 0777 ; read , write and execute by all int 0x80 mov [ fd_in ], eax ; read from file mov eax , 3 mov ebx , [ fd_in ] mov ecx , info mov edx , 26 int 0x80 ; close the file mov eax , 6 mov ebx , [ fd_in ] int 0x80 ; the info mov eax , 4 mov ebx , 1 mov ecx , info mov edx , 26 int 0x80 mov eax , 1 ; system call number ( sys_exit ) int 0x80 ; call kernel section . data file_name db 'myfile.txt' msg db 'Welcome to Tutorials Point' len equ $ - msg msg_done db 'Written to file' , 0xa len_done equ $ - msg_done section . bss fd_out resb 1 fd_in resb 1 info resb 26 Mana bu esa yuqoridagi kodning natijasi hisoblanadi: sys_brk() tizim chaqirishi xotirani keyinchalik ko'chirishni talab qilmasdan ajratish uchun yadro tomonidan taqdim etiladi. Ushbu qo'ng'iroq xotiradagi dastur tasvirining orqasida xotirani ajratadi. Ushbu tizim funksiyasi ma'lumotlar bo'limida mavjud bo'lgan eng yuqori manzilni o'rnatish imkonini beradi. Ushbu tizim chaqiruvi o'rnatilishi kerak bo'lgan eng yuqori xotira manzili bo'lgan bitta parametrni oladi. Bu qiymat EBX registrida saqlanadi. Har qanday xato bo'lsa, sys_brk() -1ni qaytaradi yoki salbiy xato kodini o'zi qaytaradi. Quyidagi misol dinamik xotira taqsimotini ko'rsatadi. Natija: Ko'pgina assembler tili ko'rsatmalari operandlarni qayta ishlashni talab qiladi. Operand manzili qayta ishlanadigan ma'lumotlar saqlanadigan joyni ko'rsatadi. Ba'zi ko'rsatmalar operandni talab qilmaydi, ba'zi boshqa ko'rsatmalar esa bitta, ikkita yoki uchta operandni talab qilishi mumkin. Ko'rsatma ikkita operandni talab qilganda, birinchi operand odatda registr yoki xotira joyidagi ma'lumotlarni o'z ichiga olgan maqsad, ikkinchi operand esa manba hisoblanadi. Manba yetkazib beriladigan ma'lumotlarni (darhol manzilni) yoki ma'lumotlarning manzilini (registrda yoki xotirada) o'z ichiga oladi. Odatda, operatsiyadan keyin manba ma'lumotlari o'zgarmaydi. Assambler kodidan namunalarni ko’rish mumkin: Natija: Natija: Natija: Xulosa Assembly tili - bu odatda bir nechta tizimlarda ko'chma bo'lgan yuqori darajadagi dasturlash tillaridan farqli o'laroq, ma'lum bir kompyuter arxitekturasiga xos bo'lgan kompyuter yoki boshqa dasturlashtiriladigan qurilma uchun past darajadagi dasturlash tili. Assembler tili NASM, MASM va boshqalar kabi assembler deb ataladigan yordamchi dastur tomonidan bajariladigan mashina kodiga aylantiriladi. Men ushbu mustaqil ishni yozish davomida assambler dasturlash tilining asosiy qoidalari, bu til kompyuter qurilmalari bilan qanday aloqa qilishini tushundim. Va ba’zi bir odatiy dasturlarni yozib amalda tekshirib ko’rdim. Foydalanilgan adabiyotlar 1. https://www.tutorialspoint.com/assembly_programming /index.htm 2. https://www.allaboutcircuits.com/technical-articles/how -to-write-assembly-basic-assembly-instructions-ARM-in struction-set/ 3. https://www.cs.virginia.edu/~evans/cs216/guides/x86.ht ml 4. http://eceweb.ucsd.edu/~gert/ece30/CN2.pdf Nazorat savollari 1. Assembler tili nima? 2. Assembler qanday ishlashini tushuntirib bera olasizmi? 3. Assembler tiliga nisbatan dastur hisoblagichi qanday ishlaydi? 4. Assembler tilidan foydalanadigan real dasturlarga misollar keltira olasizmi? 5. C yoki Java kabi yuqori darajali tilda kod yozish ancha oson bo‘lsa, nima uchun kimdir assembler tilini o‘rganishni va undan foydalanishni xohlaydi? 6. 8051, PIC, AVR va ARM protsessorlarining farqi nimada? Qaysi birini birinchi bo'lib o'rganishim kerak? 7. Assembler tilidan Python kabi yuqori darajadagi tillardan foydalanishning afzalligi bormi? 8. Assembler tilini o‘rganishni boshlashning eng yaxshi yo‘li nima? 9. Assembler tilini dasturlashni yaxshi bilish uchun maslahatlaringiz bormi? 10. Assambleya tilini dasturlashni endigina boshlayotgan odamlar qanday xatolarga yo‘l qo‘yishadi? 11. Bu sohada yangi bo'lganlar uchun tavsiya qilishingiz mumkin bo'lgan manbalar bormi? 12. Assembler tilida kod yozishda nimani yodda tutishimiz kerak? 13. Mnemonika nima va ular assemblerlar tili bilan ishlashda qayerda qo‘llaniladi? 14. Assembler tilida dasturlar yozishda qanday yaxshi kodlash usullariga amal qilish kerak? 15. Assembler tilidagi dasturni disk raskadrovka qilishda qanday muhim bosqichlar mavjud? 16. Assembler tili bilan qanday makroslar kontekstda ekanligini tushuntirib bera olasizmi? 17. Yorliqlar nima va ular assembler tilida qanday ishlatiladi? 18. Literallar nima? 19. Assembler tili kontekstida qanday registrlar ekanligini tushuntirib bera olasizmi? 20. Assembler tilida adreslash rejimlarining qanday turlari mavjud? Download 70.77 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling