Tizimli dasturlash - bet 10

|
Tizimli dasturlash
|
bet | 10/64 | Sana | 13.05.2024 | Hajmi | 183,36 Kb. | | #230077 |
Bog'liq Системное программирование, практика................
Segment sanasidan foydalanish16
Quyida 32-bitli adreslashning asosiy farqlari keltirilgan.
Birinchi farq. 32-bitli registrlarning har qandayidan bazaviy va indeksli adreslash uchun foydalanish mumkin. Bundan tashqari, agar registrlardan biri asosiy bo'lsa esp yoki ebp , keyin manzillash segment registri orqali amalga oshiriladi ss , garchi segmentni qayta tayinlash mumkin bo'lsa. Adreslash foydalaniladigan registr turiga ko'ra emas, balki samarali manzilni shakllantirish usuliga ko'ra asosiy yoki indeks (ofset bilan yoki ofsetsiz) deb ataladi. EA .
Misol.
w_ t qodir dw 1,2,4,8,16,32
……………..
;Asosiy adreslash
mov eax , ofset w_jadval
mov bx,[eax + 6] ; Indeks k=3 boʻlgan roʻyxat elementi yuklanmoqda . bx
;(3 * w_table=6 yozing), T . e . bx ¬ 8. Bu yerda roʻyxatdan oʻting h.k -manzil ifoda elementi va
; yozishmalar turini ro'yxatga olish bx Va h.k talab qilinmaydi. Ma'lumotlar formatini yozing so'z Va
; holat aniqlangan bx .
......................
;Indeks manzillash
mov eax,6 ;eks ¬ 3* w_t qodir yozing
mov bx,[w_table + eax] ;bx ¬ 8. O'zgaruvchining turi w_ t qodir va registr bx mos ravishda
;bir-biringizga qichqiring.
Ikkinchi farq indeks registrining mazmunini masshtablash qobiliyatidir (har qandayidan tashqari esp ), ya'ni uni buyruqda ko'rsatilgan koeffitsientga ko'paytirish: 1, 2, 4 yoki 8. Indeks registrining turi manzillash amalga oshiriladigan segment registrini standart tanlashga ta'sir qilmaydi.
Misol masshtablash bilan asosiy indeks adreslash :
mov edx,[Array + ecx + eax * 4]
Bu erda Massiv dword tipidagi elementlarning ikki o'lchovli massividir, ecx - chiziqning asosiy manzili, h.k – qator elementi indeksi.
Dastur 16-bitli va 32-bitli registrlar bilan bir vaqtda ishlashi mumkinligi sababli ularni farqlash uchun Tasm avtomatik ravishda dasturning mashina kodiga 66 soatlik operand o'lchami prefiksini qo'shadi (agar biz operand turi haqida "gaplashayotgan bo'lsak") yoki manzil iboralarida kengaytirilgan registrlardan foydalanganda 67h manzil o'lchami prefiksi (albatta, bir vaqtning o'zida ikkala prefiksning mavjudligi holatlari aniq).
Biroq, ba'zi hollarda Tasm unday emas [12]. Shunday qilib, masalan, tsiklni tashkil etish jamoasidan oldin Kengaytirilgan registr yordamida tsikl ecx , buni dasturchining o'zi bajarishi kerak:
Mov ecx ,8008000 ;Tsikl hisoblagichi
Kechikish : db 67 h ;Manzil o'lchami prefiksi
Loop kechiktirish ;Buyruqni takrorlang Loop 800 8000 (mumkin ≤ 2 32 bir marta).
Agar bu bajarilmasa, tsikl faqat 8000 marta bajariladi (siz
≤ 2 16 - 1 marta). Boshqa usul - muqobil buyruq shakllaridan foydalanish loop: loopw (loopwe, loopwne, ...) hisoblagichdan foydalanganda cx Va loopd (loopde, loopdne, ...) foydalanish ecx.
Xulosa qilib shuni aytish kerakki, 32-bitli protsessorlarning qo'shimcha funktsiyalaridan real rejimdagi dasturlarda foydalanish imkoniyati aslida cheklangan. Yangi buyruqlar unchalik ko'p emas va ular fundamental xususiyatga ega emas va 32 bitli ma'lumotlar "assembler" amaliy dasturlarida nisbatan kam qo'llaniladi.
Ish uchun topshiriq. ijro tartibi :
1. Dasturni yig'ing va bog'lang hello.asm TD tuzatuvchisidan foydalanish imkoniyatlari bilan . Fayllarni o'rganish dasturini takrorlang salom.exe rejimida TD , nazariy materialdagi tavsiyalarga amal qilgan holda.
3-rasm - . Dastur segmentlarining joylashuvi diagrammasi Salom . exe hayolda
2. Vazifa variantiga muvofiq (4-jadval) dastur fayllarini yig'ing va TD uchun ro'yxatga olish va disk raskadrovka ma'lumotlarini olishni o'z ichiga olgan variantlar bilan bog'lang . Ikkala fayl uchun, rasmga o'xshash xotirada segmentlarni joylashtirish diagrammasini yarating. 1.7. Har qanday dastur segmentlarining joylashuvi haqidagi ma'lumotlar, shuningdek, yig'ish ro'yxatining oxirida joylashgan identifikator jadvalidagi ma'lumotlarga yoki dasturning xotira xaritasi faylidagi ma'lumotlarga mos kelishi kerak. Salom . xarita .
3.Keyingi amaliy darsda o'z dasturingiz ustida ishlaysiz va bu vaqtda assemblerdan bu borada qanday yordam kutish mumkinligini bilish foydali bo'ladi. Ppt dastur fayllarining nusxalarini yarating. 2 nomlari o'zgartirilgan, ularni yig'ish bo'yicha tajriba o'tkazish uchun (ro'yxatni olish: t asm/l ) kiritilgan sintaktik xatolar bilan (5-7 ta yetarli). Sintaktik jihatdan to'g'ri tuzilgan dasturlarga xatolarni kiritishda siz nazariy materialning mazmuniga amal qilishingiz mumkin.
Turbo Assembler ro'yxatda xatolar bilan birga ularga sharhlar ko'rsatadi. Yo'l qo'yilgan xatoning batafsil talqinini montaj xato fayliga murojaat qilish orqali topish mumkin Tasm_err.doc [6].
|
| |