|
Assembler: identifikatorlar va direktivalar
|
bet | 3/9 | Sana | 16.01.2024 | Hajmi | 65,57 Kb. | | #138870 |
Bog'liq 2-Amaliy ish
Dastur ma'lum xotira manzillari bilan yagona tarzda bog'langan kamida ikkita holat mavjud. Birinchidan, mikroprotsessorning ichki registrlarida bo'lmagan, lekin xotirada saqlanadigan ba'zi o'zgaruvchilarga (ma'lumotlarga) kirishda. Va, ikkinchidan, o'tish paytida, ularsiz tarmoqli va tsiklik dasturlarni tashkil qilish mumkin emas. Ikkala holat ham ma'no jihatidan farq qilsa ham (ma'lumotlarga yoki dasturga kirish), rasmiy nuqtai nazardan, bu ikkala holat ham juda o'xshash ko'rinadi: aniq nima bo'lishidan qat'i nazar, ba'zi xotira kataklarining manziliga murojaat qilishingiz kerak.
Dasturlarda aniq manzillarning paydo bo'lishi uning harakatchanligini yo'qotishiga olib keladi. Misol uchun, agar biron sababga ko'ra o'zgaruvchining manzilini o'zgartirish kerak bo'lsa, ushbu o'zgaruvchiga havola qilingan barcha buyruqlarda tuzatish kiritishingiz kerak bo'ladi. Yoki faqat bitta mashina ko'rsatmasini kiritishda dasturning butun keyingi qismi siljiydi va uning manzillariga barcha o'tishlar xuddi shunday o'zgartirilishi kerak.
O'quvchilarga tasvirlangan qiyinchiliklar haqida bir oz tasavvur berish uchun biz Debug-da oddiy dasturni amalga oshiramiz.
Faraz qilaylik, r = x + y formulasi yordamida hisoblashdan iborat oddiy masalani kompyuterda yechmoqchimiz. Keling, yechim dasturini yozamiz va amalga oshiramiz, keyin formulamizga boshqa amalni qo'shmoqchi bo'lsak, nimani tuzatish kerakligini ko'rib chiqamiz, masalan: r = x + y – z.
Keling, barcha o'zgaruvchilar ikki baytli butun sonlar ekanligiga rozi bo'laylik. Faraz qilaylik, o'zgaruvchilarni saqlash maydoni "boshida" - 102-manzildan boshlab joylashgan bo'ladi. MS-DOS-da qabul qilingan konventsiyalarga ko'ra, dastur 100-manzildan boshlanadi, biz " ma'lumotlar maydonini chetlab o'tish.
jadval 2
|
| |