|
Wait_key-ga qo'ng'iroq qiling
|
bet | 26/64 | Sana | 13.05.2024 | Hajmi | 183,36 Kb. | | #230077 |
Bog'liq Системное программирование, практикаWait_key-ga qo'ng'iroq qiling
|
; pastki dasturga qo'ng'iroq qiling
|
|
cmp al, 27
|
; al dagi qiymatni 27 (ESC) kodi bilan solishtiring
;ha bo'lsa - keyin Quit_prog yorlig'iga
|
|
Quit_prog
|
|
cmp al,0
|
;kod kengaytirildimi? (F1-F12 va boshqalar)
|
|
Boshlang
|
;ha - so'rovni takrorlaymiz ...
|
|
Out_char ga qo'ng'iroq qiling
|
;bosilgan tugmani ekranda aks ettirish protsedurasini chaqiring
|
|
jmp Boshlash
|
yana kutamiz...
|
|
Chiqish_prog:
|
;ESC bosilsa, dastur yetib keladigan yorliq
|
|
mov al,32
|
AL ga joylashtiring
|
|
Out_char ga qo'ng'iroq qiling
|
alda belgini chiqarish protsedurasini chaqiring
|
|
int 20h
|
; chiqaylik...
|
|
Wait_key proc
|
; foydalanuvchidan kalitni kutish tartibi
|
|
harakat ah, 10h
|
; pastki dasturning oxiri
|
|
int 16 soat
|
; DOS uzilishi
|
|
ret
|
; DOS funktsiyasi "protsedurani tugatish"
|
|
Wait_key endp
|
; Wait_key protsedurasining oxiri
|
|
Out_char proc
|
; protsedura boshlanishi out_char
|
|
cx-ni bosing
|
;pastki dastur tomonidan o'zgartiriladigan barcha registrlarni saqlang...
|
|
boltani surish
|
;...keyinchalik chalkashlik bo'lmasligi uchun shunday qilamiz
|
|
surish es
|
;segment registrini saqlang
|
|
boltani surish
|
;Keling AX ni saqlaylik, chunki u bosilgan tugmaning kodini o'z ichiga oladi ...
|
|
mov ax, 0B800h
|
; ESni video bufer segmentiga o'rnating
|
|
harakat, bolta
|
|
mov di,0
|
; DI - birinchi qatorning birinchi belgisi
|
|
mov cx, 2000
|
; chiqish 2000 belgi (har bir satrda 80 belgi * 25 qator)
|
|
pop bolta
|
; kalit kodini tiklang
|
|
mov ah, 31
|
;ramz rangi
|
|
Next_sym:
|
;loop uchun yorlig'i
|
|
mov es:[di],ax
|
;kalit kodini va uning rangini kiriting (rang har doim 31)
|
|
inc di
|
;ko'rsatkichni 2 ga oshiring (birinchi bayt - belgi, ikkinchi bayt - rang)
|
|
inc di
|
|
Next_sym tsikli
|
;keyingi belgini qayta ishlash
|
|
pop es
|
;saqlangan registrlarni tiklang va stekni tekislang
|
|
pop bolta
|
|
pop cx
|
|
ret
|
;protseduradan qaytish
|
|
Out_char endp
|
; protsedura oxiri Out_char
|
|
tugatish Boshlash
|
; dastur kodini tugatish belgisi
|
Dastur quyidagilarni amalga oshiradi:
- foydalanuvchidan kalitni kutadi;
- agar u kengaytirilgan bo'lsa ASCII (F1-F12, o'qlar), keyin uni e'tiborsiz qoldiradi;
- agar bu kengaytirilmagan bo'lsa ASCII (AZ, 0-9 va boshqalar) - ekranni ushbu belgi bilan to'ldiring;
- agar biz ESC (27 yoki 1Bh) ni bossak, ekranni bo'sh joylar bilan to'ldiring (mov al,32) va chiqing.
Bajarilishi kerak bo'lgan vazifa:
1 CEMU 8086 emulyator muharriridan foydalanib , ushbu laboratoriya ishi misollarida manba matni berilgan dasturlarni yozing.
2 * tipidagi bajariladigan fayllarni yarating. com .
3 Olingan dasturlarning ishlashini o'rganish.
4 DS registrining mazmunini aks ettirish dasturini yozing (2.1-misol asosida). Dasturingiz natijasini va tuzatuvchi nimani ko'rsatayotganini solishtiring.
DIV, PUSH , POP , SHL , TEST buyruqlarining ishlashini tavsiflang .
6 Stakka surilgan raqamlar qayerda ekanligini aniqlang (manzillarni toping va yozib oling).
CS registrining mazmunini aks ettirish dasturini yozing (3.1-misol asosida).
8 Muammolarni hal qilishning boshqa usullarini taklif qiling.
Amalga oshirish tartibi:
1. Nazariy materialni o‘rganish.
2.Dastur tuzing.
3. Hisobot tuzing.
Nazorat savollari:
TEST o'rniga SHL buyrug'idan foydalanishning afzalliklari (1.1-misol)?
Jamoalar qanday farq qiladi?
SHL dx , 1
Va
SHL dx, cl
X ning tarkibini stekga qanday surish va uni qaytarib olish mumkin?
O'nlik sanoq sistemasida bayt qiymatini ko'rsatish usulini aytib bering?
O‘n oltilik sanoq sistemasida bayt qiymatini ko‘rsatish usulini aytib bering?
X registrda yozilgan sonning ikkilik kodini chiqarish texnikasini tavsiflab bering
Stak. Ish printsipi. Stack bilan ishlash buyruqlari.
Tandem jamoalari ishidagi farqlarni ko'rsating
DS ni bosing
pop ES
dan
DS ni bosing
pop ES
Tavsiya etilgan o'qish: 2,.3.
6- son LABORATORIYA ISHI
Mavzu: Tsikllarning ishlashiga KIRISH
Ishning maqsadi : mehnat ko'nikmalarini rivojlantirish dasturdagi tsikllarning tuzilishi va amalga oshirilishi bilan.
Ishlash vaqti 2 soat
Nazariy material
Dasturning ma'lum bir qismini bir necha marta bajarishga imkon beruvchi tsikllar har qanday tilda eng keng tarqalgan konstruktsiyalardan biridir. MP 86 buyruqlar tizimida looplar birinchi navbatda loop buyrug'i yordamida amalga oshiriladi , garchi halqalarni tashkil qilishning boshqa usullari mavjud. Ko'pgina hollarda, tsikldagi qadamlar soni CX registrining mazmuni bilan belgilanadi , shuning uchun maksimal qadamlar soni 64 K ni tashkil qiladi.
Yuqori darajali tillarda ham, assembler tilida ham tsiklik o'tishlarni tashkil qilish - bu bajariladigan dastur kodini sezilarli darajada kamaytirishga imkon beruvchi ajoyib vosita.
Umuman olganda, har qanday sikl assemblerda shartli sakrash sifatida yoziladi.
LOOP buyrug'i yordamida siklni tashkil qilish
( Birinchi usul ).
Loop buyrug'i CX (hisoblagich) registrining mazmunini kamaytiradi va agar u 0 bo'lmasa, -128... + 127 bayt oralig'ida bir xil dastur segmentidagi ko'rsatilgan belgiga oldinga yoki orqaga o'tadi. Odatda yorliq sikl tanasining birinchi bandidan oldin joylashtiriladi va sikl buyrug'i tsikldagi oxirgi buyruqdir. CX registrining mazmuni ishorasiz butun son sifatida ko'rib chiqiladi, shuning uchun tsiklga kiritilgan ko'rsatmalar guruhining maksimal takrorlanish soni 65536 ni tashkil qiladi (agar tsiklga kirishdan oldin CX = 0 bo'lsa ). Buyruq protsessor bayroqlariga ta'sir qilmaydi.
|
| |