Assembler proqramlaşdırma dili

Ümumi təyinatlı göndərmə əmrləri

Ümumi təyinatlı göndərmə əmrləri

MOV əmri mənbənin məzmununu qəbulediciyə göndərir və bu zaman mənbənin məzmunu dəyişməz qalır. MOV əmrinin ümumi yazılışı aşağıdakı kimidir:

MOV <qəbuledici >, <mənbə>

Mənbə kimi ümumi təyinatlı registrlərdən, seqment registrlərindən, dəyişənlərdən və bilavasitə operanddan (ədəddən), qəbuledici kimi isə ümumi təyinatlı və seqment (CS registrindən başqa) registrlərindən və ya dəyişənlərdən istifadə oluna bilər. Hər iki operand eyni ölçülü olmalıdır. Operandlar bayt, söz və ya ikiqat söz uzunluğunda ola bilər. Misallar:

MOV AL, BL      ; baytı BL registrindən 
                              ; AL registrinə göndərir
MOV AX, DS     ; sözü DS registrindən 
                             ; AX registrinə göndərir
MOV AX, K1      ; K1 yaddaş xanasının məzmununu 
                              ; AX registrinə göndərir
MOV K1, AX      ; registrin məzmununu yaddaş 
                              ; xanasına göndərir
MOV  CX, 25     ; ədədi registirə göndərir
MOV  K, 25       ; ədədi yaddaşa göndərir

MOV əmrindən istifadə edərkən aşağıdakıları nəzərə almaq lazımdır:

1. Bir yaddaş xanasının məzmununu başqa yaddaş xanasına birbaşa (sətr elementlərinin göndərilməsi müstəsnə olmaqla) göndərmək olmaz. Bunun üçün əvvəlcə yaddaşdakı informasiya ümumi təyinatlı registrdən birinə göndərilir və oradan isə tələb olunan yaddaş sahəsinə göndərilir. Məsələn, K1 yaddaş xanasının məzmunu K2 yaddaş xanasına göndərmək üçün aşağıdakı əmrləri yerinə yetirmək lazımdır:

MOV   AX, K1         ; əvəlcə  K1 yaddaş xanasının
                                   ; məzmunu AX registrinə yüklənir
MOV   K2, AX         ;sonra isə  AX registrinin məzmunu
                                   ; K2 yaddaş xanasına göndərilir

1. Bilavasitə ünvanlaşdırılan operandı birbaşa seqment reqistrinə göndərmək olmaz. Bu əməliyyatı ÜTR-dən istifadə edərək yerinə yetirirlər. Məsələn, data ünvanını DS verilənlər seqmenti registrinə göndərmək üçün aşağıdakı bir cüt əmrdən istifadə etmək olar:

MOV AX, data

MOV DS, AX

2. Bir seqment registrinin məzmununu birbaşa digər seqment registrinə ötürmək olmaz.

Məsələn:

MOV AX, ES

MOV DS, AX

4. Əmrlər seqmentinin registrindən qəbuledici kimi istifadə etmək olmaz.

Aşağıdakı cədvəldə, bu və ya digər şərt ödənildikdə, mənbənin məzmunun qəbulediciyə köçürülməsi əmrləri göstərilmişdir:

Mənbə kimi ümumi təyinatlı registr və ya dəyişən, qəbuledici kimi isə yalnız registr götürmək olar. Bu əmrlər P6 (Pentium Pro, Pentium II/III) modellərinə aiddir. Cədvəldəki “kiçik” və ya ”böyük” sözləri işarəli ədədlərin, “aşağı” və ”yuxarı” sözləri isə işarəsiz ədədlərin müqayisəsinə aiddir.

Tələb olunan şərtin ödənilməsi EFLAGS registrinin cədvəldə göstərilən bayraqlarının qiymətlərinin uyğun olaraq 0 və ya 1 vəziyyətində olmasından asılıdır. Əgər CMP (müqayisə) əmrinin icrasından dərhal sonra həmin operandlarla CMOV XX əmrindən istifadə etsək şərtlər xüsusi məna daşıyar. Məsələn:

CMP AX, BX ; AX və BX müqayisə edilir

CMOVL AX, BX ; Əgər AX<BX olarsa

; BX məzmunu AX köçürülür.