XOR (Logical Exclusive OR)
buyrug‘i ikkita operandda mantiqiy (bit
bo‘yicha) EXCLUSIVE OR amalini bajaradi. Amaliyot natijasi birinchi operandni
almashtiradi; ikkinchi operand o‘zgarmaydi. Operandlarning tegishli bitlari har xil
bo‘lsa, har bir natija biti 1 ga o‘rnatiladi va operandlarning mos bitlari bir xil bo‘lsa,
0 ga o‘rnatiladi. XOR buyrug‘ining birinchi operandi registr (bir segmentdan
tashqari) yoki xotira katakchasi bo‘lishi mumkin, ikkinchi operand registr (bir
segmentdan tashqari), xotira katakchasi yoki tezkor qiymat bo‘lishi mumkin, lekin
bunga ruxsat berilmaydi. Ikkala operandni bir vaqtning o‘zida xotira sifatida
aniqlanadi. Operandlar bayt yoki so‘z bo‘lishi mumkin. Buyruqlar OF, SF, ZF, PF
va CF belgilanishlariga ta’sir qiladi, OF va CF belgilanishlari
har doim tozalanadi,
qolgan flaglar esa natijaga qarab o‘rnatiladi.
XOR qoidalar:
Birinchi operand biti 0101
Natija biti 0110
Ikkinchi operand biti 0011
1-misol
mov AX,0Fh
mov AX,0FFFFh ;AX=FFF0h
2-misol
mov AX,00101001b
mov BX, 11110111b
xor ax, bx
; 11011110b
3-misol
mov SI, 0AAAAh
mov BX, 5555h
xor SI, BX
;SI=FFFFh, BX=5555h
4-misol
mov BX, BX
;BX qayta tiklanmoqda
TEST (Mantiqiy solishtirish)
buyrug‘i ikkita operandda mantiqiy
ko‘paytirish AND amalini bajaradi va natijaga qarab SF, ZF va PF belgilanishlarni
o‘rnatadi. OF va CF belgilanishlari o‘chiriladi va AF aniqlanmagan. Keyin shartli
o‘tish ko‘rsatmalari yordamida belgilanishlarning holatini tahlil qilish mumkin.
TEST ko‘rsatmasi hech qaysi operandni o‘zgartirmaydi. TEST buyrug‘ining
birinchi operandi registr (segmentdan tashqari) yoki xotira katakchasi bo‘lishi
mumkin, ikkinchi operand registr (segmentdan tashqari), xotira katakchasi yoki
tezkor qiymat bo‘lishi mumkin, lekin uni aniqlashga ruxsat berilmaydi. Ikkala
operand ham bir vaqtning o‘zida xotira sifatida operandlar bayt yoki so‘z bo‘lishi
mumkin va imzolangan yoki imzosiz raqamlarni ifodalaydi.
Bit bo‘yicha ko‘paytirish qoidalari:
Birinchi operand biti 0101
Natija biti 0 001
Ikkinchi operand biti 0011
SF bayrog‘i 1 o‘rnatiladi, agar buyruq bajarilishi belgi biti o‘rnatilgan
raqamga olib kelsa. ZF bayrog‘i 1 o‘rnatiladi, agar buyruq bajarilishi natijasida faqat
ikkilik nollardan iborat raqam paydo bo‘lsa. PF 1 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
Umumiy misol
.model tiny
;ma’lumotlar va stek segmentlari birlashtirilgan
xotira modeli.
.code
; ma’lumotlarni o‘z ichiga olgan kod segmenti.
org 100h
; COM faylining boshlanishi
begin:
; dastur kodini boshlash belgisi
mov СX,
; CX ni son1 bilan o‘zlashtirish
mov BX,
; BX ni son2 bilan o‘zlashtirish
test cx, bx
; cx va bx qiymatlarini mantiqiy taqqoslash
jne label2
; agar qiymatlardan biri 0 bo‘lmasa, label2 o‘tadi
je label1
; agar qiymatlardan biri 0 bo‘lsa, label1 o‘tadi
ret
; DOS funktsiyasi “dasturni tugatish”
label1:
; blokning boshlanishi teglari label1
mov ah,9
; AH registriga DOS funksiyasining “chiqish
liniyasi (9)” raqamini joylashtirsh.
mov dx, offset string
ma’lumotlar segmentining boshlanishiga nisbatan
String yorlig‘ining ofsetini joylashtiradi
int 21h
; DOS funktsiyasi “chiziq chiqish”
ret
; DOS funktsiyasi “dasturni tugatish”
String db 'biri 0$'
; chiqish ma’lumotlarini o‘z ichiga olgan c qator.
label2:
; blokning boshlanishi label2
mov ah, 9
; AH registriga DOS funksiyasining “chiqish
liniyasi (9)” raqamini joylashtiradi.
mov dx, offset string1
String1 ning ofsetini ma’lumotlar segmentining
boshidan DX registriga joylashtiradi
int 21h
; DOS funktsiyasi “chiziq chiqishi”
ret
; DOS funktsiyasi “dasturni tugatish”
string1 db '0$ ga emas' ; chiqish ma’lumotlarini o‘z ichiga olgan c qator.
end begin
; dastur kodini tugatish belgisi
Ushbu misol ikkita qiymatni taqqoslaydi (6-qator), agar ikkita qiymatdan biri
nolga teng bo‘lsa, tegga o‘tib label 1 (satr (10)), keyin buyruqlar bajariladi, agar
ikkita qiymatdan biri nolga teng bo‘lsa, 2- yorlig‘iga o‘tadi.
2-misol
test SI,8
jne bityes
;SIda 3-bit oʻrnatilgan boʻlsa, oʻtish
je 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
|