|
Birinchi operand biti 0101
|
bet | 32/64 | Sana | 13.05.2024 | Hajmi | 183,36 Kb. | | #230077 |
Bog'liq Системное программирование, практикаBirinchi operand biti 0101
|
Natija biti 0 001
|
Ikkinchi operand biti 0011
|
SF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi belgi biti o'rnatilgan raqamga olib kelsa.
ZF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi natijasida faqat ikkilik nollardan iborat raqam paydo bo'lsa.
PF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi natijasida uning bitlarida juft sonli ikkilik raqamlar mavjud bo'lsa.
1-misol
test AX,1
jne label 2 : ;Agar AX-da 0 bit o'rnatilgan bo'lsa, o'tish
je label 1 : ;Agar AX dagi 0 biti tozalangan bo'lsa, o'tish
10-jadval - 1.4.1.1-misol
1.
|
.model kichkina
|
; kod, ma'lumotlar va stek segmentlari birlashtirilgan xotira modeli.
|
|
.kod
|
; ma'lumotlarni o'z ichiga olgan kod segmenti.
|
|
org 100h
|
; COM faylining boshlanishi
|
|
boshlanishi:
|
; dastur kodini boshlash belgisi
|
|
mov SX , <1-raqam>
|
; CX ga 1 raqamini yuklang
|
|
mov BX , <2-raqam>
|
; B X ni 2 raqami bilan yuklang
|
|
test cx, bx
|
; cx registrlaridagi raqamlarni bx bilan mantiqiy taqqoslang
|
|
jne label2
|
; agar qiymatlardan biri 0 bo'lmasa, 2 yorlig'iga o'ting
|
|
yorliq1
|
; agar qiymatlardan biri 0 bo'lsa, 1 yorlig'iga o'ting
|
|
r et
|
; DOS funktsiyasi "dasturni tugatish" (bajarilmaydi)
|
|
label1:
|
; blokning boshlanishi teglar Yorliq 1
|
|
mov ah, 9
|
; AN registriga DOS funksiyasining “chiqish liniyasi (9)” raqamini joylashtiramiz.
|
|
mov dx, ofset qatori
|
ma'lumotlar segmentining boshlanishiga nisbatan String yorlig'ining ofsetini joylashtiradi
|
|
int 21 soat
|
; DOS funktsiyasi "chiziq chiqishi"
|
|
r et
|
; DOS funktsiyasi "dasturni tugatish"
|
|
string db "raqamlardan biri 0$"
|
; chiqish ma'lumotlarini o'z ichiga olgan c qator.
|
|
label2:
|
; blokning boshlanishi teglar Yorliq 2
|
|
mov ah, 9
|
; AN registriga DOS funksiyasining “chiqish liniyasi (9)” raqamini joylashtiramiz.
|
|
mov dx, ofset string1
|
String1 ning ofsetini ma'lumotlar segmentining boshidan DX registriga joylashtiradi
|
|
int 21 soat
|
; DOS funktsiyasi "chiziq chiqishi"
|
|
r et
|
; DOS funktsiyasi "dasturni tugatish"
|
|
s tring1 db '0$ ga teng emas'
|
; chiqish ma'lumotlarini o'z ichiga olgan c qator.
|
|
oxiri boshlanadi
|
; dastur kodini tugatish belgisi
|
Ushbu misol ikkita qiymatni taqqoslaydi (6-qator), agar ikkita qiymatdan biri nolga teng bo'lsa, tegga o'ting label 1 (satr (10)), keyin buyruqlar bajariladi, bo'lsa, ushbu belgidan keyin agar ikkita qiymatdan biri nolga teng bo'lsa, 2- yorlig'iga o'ting
2-misol
test SI,8
jne bitities ;SIda 3-bit oʻrnatilgan boʻlsa, oʻtish
bitno ;Agar AX dagi 0 biti tozalansa, o‘tish
3-misol
test DX, 0FFFFh
jz null ;DX=0 bo'lsa, sakrash
jnz smth ;Agar DX 0 boʻlmasa, oʻtish
EMAS buyruq .
NOT ko'rsatmasi ( NOT Inversion, 1 ning to'ldiruvchisi, mantiqiy inkori) ko'rsatilgan operandning bitlarini inversiyani amalga oshiradi, 0 ni 1 bilan almashtiradi va aksincha. Operand sifatida siz registrni (segment registridan tashqari) yoki bayt yoki so'z hajmidagi xotira katakchasini belgilashingiz mumkin. Operand sifatida bevosita qiymatdan foydalanishga ruxsat berilmaydi. Buyruq protsessor bayroqlariga ta'sir qilmaydi.
Bitli inversiya qoidalari:
Operand biti 0 1
|
Natija biti 10
|
1-misol
mov AX,0FFFFh
AX emas ;AX=0000h
2-misol
mov SI, 5551h
SI emas;SI=AAAEh
Mantiqiy operatsiyalar guruhlari ishining tipik misollari.
Quyidagi bir-biriga bog'liq bo'lmagan misollar uchun, deb taxmin qiling:
- AL tarkibida 1100 0101 mavjud
- BH tarkibida 0101 1100:
1. VA AL,BH ; AL 0100 0100 ga sozlang
2. YOKI BH,AL ; BH 1101 1101 da oʻrnatilgan
3. XOR AL,AL ; AL 0000 0000 ga oʻrnatiladi
4. VA AL,00 ; AL 0000 0000 ga oʻrnatiladi
5. VA AL,0FH ; AL 0000 0101 ga oʻrnatiladi
6. YOKI CL,CL ; SF va ZF bayroqlarini o'rnatadi
3 va 4-misollar registrni qanday tozalashni ko'rsatadi.
5-misol AL registrining chap to'rt bitini tozalaydi.
OR buyrug'idan quyidagi maqsadlarda foydalanishingiz mumkin :
1. YOKI CX, CX ;CX nol uchun tekshirilmoqda
JZ ;Nol bo'lsa, o'tish
2. YOKI CX, CX ;CX da belgi tekshirilmoqda
JS ;Agar manfiy bo'lsa, o'tish
Bajarilishi kerak bo'lgan vazifa.
EMU 8086 emulyatorini ishga tushiring .
Assembler dasturlarini loyihalash qoidalaridan foydalanib, 1.4.1.1 misol kodini kiriting va kodni bajarish uchun ishga tushiring.
1.4.1.1-sonli kod misolining ishini tahlil qiling
Yordamdan foydalanish EMU 8086 emulyatori , buyruqlar qanday ishlashini bilib oling ( jne , je , js , jz )
O'qituvchingizdan topshiriq oling (to'rt variantdan biri (buyruqlar ( va , yoki , xor , test , emas ))) va montaj dasturlarini loyihalash qoidalaridan foydalanib, raqamlar (ikkilik) bilan qanday ishlashini tavsiflovchi (ko'rsatadigan) uchta dastur yozing. , o'nlik, o'n oltilik tizimlarning yozuvlari) berilgan misollar ro'yxatiga muvofiq .
Ishingiz natijalarini o'qituvchiga ko'rsating.
Amalga oshirish tartibi:
1. Nazariy materialni o‘rganish.
2.Dastur tuzing.
3. Hisobot tuzing.
|
| |