Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari universiteti
Amaliy ish № 1
Texnik topshiriq
" HI-TECH divan modelini ishlab chiqarish uchun
" modulini ishlab chiqish uchun
To‘ldiruvchi: Abdurashidov Bexruz
Guruh:316_21
Qabul qildi: Ishmuhamedov A.
Toshkent 2023
3-Amaliy ish (siz qaysi dasturlash tilini bilasiz shu haqida to’liq tushuncha bering)
Berilgan misollarni jurnalda keltirilgan tartib raqamingizga mos ravishda tanlang va uni keltirilgan ifodalar bo‘yicha Assembler tilida dasturini tuzing.
a) Assembler tilini va dastur uchun foydalanadigan ID ni (Integrashgan muhit) tavsiflang
b) Natijani izohlarda to‘laqonli yoritib bering
c) Natija markaziy protsessorda (CПУ) qanday ifodalanishini ko‘rsating (Tafsiya: Delphi muhiti ) C++
Variant 2: b+5(a+c)*2
x86 arxitekturasidan foydalangan holda "b+5(a+c)*2" ifodasini hisoblash uchun assembler tilida dastur yozishga misol.
a) Ushbu dastur uchun biz x86 arxitekturasini qo'llab-quvvatlaydigan har qanday assembler tili va IDE dan foydalanishimiz mumkin. Ba'zi mashhur tanlovlar - NASM, MASM, TASM va FASM. IDE-ga kelsak, biz assembler tili sintaksisini ajratib ko'rsatishni qo'llab-quvvatlaydigan har qanday matn muharriridan foydalanishimiz mumkin yoki Visual Studio yoki integratsiyalashgan assemblerga ega Code::Blocks kabi IDE-dan foydalanishimiz mumkin.
b) NASM sintaksisidagi misol dasturi:
section .data
a dd 2
b dd 3
c dd 4
section .text
global main
main:
mov eax, dword [a] ; load a into eax
add eax, dword [c] ; add c to eax
imul eax, 5 ; multiply by 5
add eax, dword [b] ; add b to eax
shl eax, 1 ; multiply by 2 using a left shift
ret
Bu dastur avval ma'lumotlar bo'limidagi b, a va c qiymatlarini registrlarga yuklaydi. Keyin a+c ifodasini hisoblab, uni o‘ziga 4 marta qo‘shib 5*2 ga ko‘paytiradi. Natijani b ga qo'shadi va yakuniy natijani o'ziga ikki marta qo'shish orqali 2*2 ga ko'paytiradi. Nihoyat, u natijani cx registriga o'tkazadi va natija bilan dasturdan chiqadi.
c) Protsessorda dastur xotiradan b, a va c qiymatlarini mov ko'rsatmasi yordamida registrlarga yuklaydi. Keyin ifodani hisoblash uchun registrlarda arifmetik amallarni bajaradi. Qo'shish buyrug'i ikkita registr yoki registr va xotira joylashuvining qiymatlarini qo'shadi, mov buyrug'i esa registrlar va xotira o'rtasida ma'lumotlarni o'tkazadi. Dastur shuningdek, natija bilan dasturdan chiqish uchun tizim chaqiruvini chaqirish uchun int ko'rsatmasidan foydalanadi. Natija cx registrida saqlanadi.
|