Assembler proqramlaşdırma dili

Məntiq əmrləri

Məntiq əmrləri

Məntiq əmrlərinə ANDORXORNOT və TEST əmrləri daxildir. Bu əmrlər uyğun əməliyyatlardan fərqli olaraq proqramın translyasiyası zamanı deyil, proqramın icrasında təsir göstərir. NOT (bir operandlı) əmrindən başqa bütün məntiq əmrləri iki operandlıdır. Onları aşağıdakı kimi təsvir etmək olar:

ƏK qəbuledici,mənbə

NOT qəbuledici

Burada ƏK yerində ANDORXOR və ya TEST sözlərindən biri yazıla bilər. Qəbuledici kimi registr və ya dəyişən, mənbə kimi isə ədəd, registr və ya dəyişən götürülə bilər. Qəbuledici və mənbə eyni zamanda dəyişən ola bilməz.

AND əmri qəbuledici və mənbə bitləri üzərində bit-bit “məntiqi VƏ” (konyunksiya) əməliyyatını aparır və nəticəni qəbuledicidə yerləşdirir. Əmr icra olunduqda qəbuledici və mənbənin uyğun bitləri vahid isə qəbuledicinin uyğun bitinə vahid, əks halda isəsıfır (hesabi vurmada olduğu kimi) yazılır ki, bundan da qəbuledicinin müəyyənbitlərini sıfırlaşdırmaq üçün istifadə oluna bilər.

Misallar:

a)  AND AL, 00001111b ; AL registrinin dörd böyük 
                       ; mərtəbəsinə   sıfır yazılır.
b)  AND data1, 9712h

OR əmri mənbə və qəbuledicinin bitləri üzərində bit-bit “məntiqi VƏ YA”(duzyunksiya) əməliyyatını aparır və nəticəni qəbuledicidə yerləşdirir. Bu əmrdən qəbuledicinin müəyyən bitlərinə 1 yazmaq üçün istifadə olunur. Əmrin icrasından sonra, mənbənin 1 olan bitlərinə uyğun gələn qəbuledici bitlərinə 1 yazılırvə 0bitlərinə uyğun gələn qəbuledici bitlərin məzmunu isə dəyişməz qalır.

Misallar:

a) OR AL, 00001111b  ; AL registrinin kiçik dörd
                   ; mərtəbəsinə vahid yazılır.
                         
b) OR EAX,12345678h ; ikiqat söz ölçülü operand 
                    ; üzərində “VƏ YA” əməliyyatı 
                    ; aparılır.

XOR əmri qəbuledici və mənbə bitləri üzərində bit-bit “məntiqi VƏ YA –nın İNKARI” əməliyyatını aparır və nəticəni qəbuledicidə yerləşdirir. Əmrin işləmə qaydası belədir: mənbənin 1 bərabər olan bitlərinin qiyməti, qəbuledinin uyğun bitlərini inversiya etdirir, 0 bərabər olan bitlərinə uyğun olan qəbuledici bitləri isə öz məzmununu dəyişmir. Əmrdən registlərin məzmununu təmizləmək üçün istifadə olunur.

Misallar:

XOR AX, AX   ; AX registrinin məzmununu 
                  ;  təmizləyir (sıfırlaşdırır).
XOR AL,10b    ; AL  registrinin 1-ci bitini inversia etmək 
JZ perehod        ; əgər AL  registrinin 1-ci biti 
                  ; vahiddirsə  keçid.

TEST əmri qəbuledici və mənbə bitləri üzərində bit-bit (qəbuledicinin məzmununu yoxlayır) “məntiqi VƏ”əməliyyatını aparır və əmrin icrasından sonra qəbuledici və mənbənin məzmunu dəyişməz qalır. Yoxlamanın nəticəsi uyğun olaraq SFZF və PF bayraqlarının qiymətini tənzimləyir. SFZF və PF bayraqlarının vəziyyətinin dəyişməsinə əsaslanaraq (baxmayaraq ki, yoxlamanın nəticəsi operandların heç birində qeyd olunmur) yoxlamanın nəticəsini analiz etmək olur.

Məsələn, əgər ZF=0 olarsa, onda məntiqi vurmada sıfır olmayan nəticə alınmışdır. Başqa sözlə, maskanın heç olmasa bir vahid biti qəbuledicinin uyğun biti ilə üst-üstə düşərsə ZF=0 olacaq. Əgər ZF=1 olarsa, onda məntiqi vurmada sıfır nəticəsi alınmışdır. Başqa sözlə maskanın heç olmasa bir vahid biti qəbuledicinin uyğun vahid biti ilə üst-üstə düşməzsə ZF=1 olacaq.

Misal:

TEST EAX,00000010h
JNZ kech    ; əgər  4-cü bit  1 bərabərdirsə keçid 
            ; (ZF=0) JNZ –əgər yoxlamanın nəticəsi 
            ; sıfra bərabər deyilsə keçid 

NOT əmri, məntiqi inkar əmri olaraq, qəbuledicinin hər bitinin cari qiymətini inkar edir. Yəni sıfırın yerinə vahid və əksinə, vahidin yerinə sıfır yazır. Əmrin icrasından sonra, onun nəticəsi qəbuledicidə yerləşdirilir.

Misal:

NOT AX
AND əmrinin tətbiqinə aid aşağıdakı proqramı nəzərdən keçirək:
;SHR və AND əmrlərindən istifadə etməklə verilənlərin 
; kodlarinin ekranda əks etdirilməsi 
SSEG  	SEGMENT STACK
	DB  256 DUP(?)
SSEG    ENDS
    DSEG 	SEGMENT
NUMUNE	DB 	'VALEH! sozundeki isharelerin ascii kodlari',0AH,0DH,'$'
TBL	DB 	'01234567879ABCDEF'
DSEG   ENDS
CSEG	SEGMENT
	ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START	PROC FAR
            PUSH  	DS
	PUSH  AX
	MOV  BX,DSEG
	MOV  DS,BX
 	CALL  MAIN
	MOV	AH,4CH
	INT	21H
	RET
START	ENDP

MAIN	PROC  NEAR
	MOV	AH,9H
	LEA	DX,NUMUNE
	INT	21H
	MOV	CX,6
	XOR	SI,SI    
DOV:	MOV	BX,0
   ;OUTPUT OF THE 4 LEFTMOST BITS
	MOV	BL,NUMUNE[SI]
	PUSH	CX
	MOV	CL,4
	SHR	BL,CL
	MOV	DL,TBL[BX]
	MOV	AH,6
	INT   	21H	
   ;OUTPUT OF THE 4 RIGHTMOST BITS
	MOV	BL,NUMUNE[SI]
	AND	BL,00001111B
	MOV	DL,TBL[BX]
	INT 	21H
	MOV	DL,'H'
	INT	21H
	MOV	DL,' '
	INT	21H
	INC	SI
	POP	CX
	LOOP	DOV
	RET	
MAIN	ENDP
CSEG	ENDS
	END   	START