Assembler proqramlaşdırma dili

İkilik toplama əmrləri

İkilik toplama əmrləri

Mikroprosessor operandların toplanmasını, ikilik ədəd­lərin toplanması qaydasına uyğun yerinə yetirir. Burada, toplamanın nəticəsinin qəbuledici operand sahəsində yerləşib-yerləşmədiyini müəyyən edən, xüsusi vasitələr möcuddur. Belə vasitələrdən biri CF köçürmə bayrağıdır. O, EFLAGS/FLAGS registrinin sıfırıncı bitində yerləşir və toplama nəticəsində qəbuledicinin böyük mərtəbəsindən köçürülmə baş verdikdə CF bayrağının qiyməti vahid vəziyyətinə gətrilməklə bu halı qeyd edir.

İkilik ədədlərin toplanması üçün mikroprosessorun əmrlər sistemindəki aşağıdakı üç əmrdən istifadə olunur:

ADD (ADDition),

ADC (ADdition with Carry) ,

INC (INCrement).

ADD əmri aşağıdakı yazılış formasına malikdir:

ADD qəbuledici, mənbə

Burada qəbuledici kimi registr, yaddaş sahəsinin məzmunu, mənbə kimi isə registr, yaddaş sahəsinin (dəyişən) məzmunu və bilavasitə ədəd götürülə bilər. Bu əmr qəbuledici ilə mənbənin məzmununu toplayır və nəticəni qəbuledicidə yerləşdirir:

Qəbuledici= qəbuledici+ mənbə

ADD əmrinin operandları bayt, söz və ya ikiqat söz ola bilər. Əgər qəbuledici bayt mənbə isə, söz və ya ikiqat söz uzunluğunda olarsa, onda qəbuledicinin ölçüsünüişarə mərtəbəsinin qiyməti ilə mənbənin ölçüsünə qədərgenişləndirib (verilənlərin genişləndirilməsi əmrlərinə bax) sonra toplama aparmaq lazımdır. Əgər nəticə qəbuledicidə yerləşməzsə, qəbuledicinin mərtəbə şəbəkəsinin daşması nəzərə alınmır (bu halda səhv nəticə alına bilər). ADD əmri işarəli və işarəsiz ədədləri fərqləndirmir. Məsələn:

a) ADD EAX, 1855654321h ;registrin məzmunu

; bilavasitə ədədlə toplanır

b) ADD A1,AX ; 2 bayt uzunluqlu yaddaş sahəsinin

; məzmunu ilə (AX) registri toplanır

v) ADD A2, 111 ; yaddaş sahəsinin məzmunu

; bilavasitə ədədlə toplanır

ADC əmrində, ADD əmrindən fərqli olaraq, CF köçürmə bayrağının qiyməti nəzərə alınır. ADC əmri aşağıdakı kimi yazılır:

ADC qəbuledici, mənbə

Bu əmr ADD əmrinə analoji işləyir və qəbuledicinin, mənbənin və CF köçürmə bayrağının məzmunlarını hesabi olaraq toplayır və nəticəni qəbulediciyə yerləşdirir. Yəni,

qəbuledici=qəbuledici+mənbə+CF _qiyməti

kimi təyin olunur. Proqramda ADC əmrindən adətən ADD əmrindən sonra istifadə olunur.

ADC əmrinin istifadə olunmasına aşağıdakı proqrama baxaq:

MASM
MODEL SMALL
.STACK 256
.DATA
A        DB 254         ; 0FEh
AA      DB 'AA=       $'
.CODE
	  EXTRN CON2:FAR
main:
        MOV AX,@DATA
        MOV DS, AX
        XOR AX, AX    ; AX registrini təmizləmək
        ADD AL, 17      ;  (AL=00h) ilə  17 (11h) 
                                    ; ədədi toplanır 
        ADD AL, A      ; Toplamanın nəticəsində 
                               ;AL-də  0Fh (0FEh+11h) yazılacaq,
                               ;CF=1-ə tənzimlənəcək ,
                               ;  AH registrində isə sıfırlar qalacaq 
        JNC m1        ; Əgər köçürmə varsa,  
                              ; m1 nişanına keçid
        ADC AH, 0  ; Bu əmr AH  registrinin məzmunu ilə
                               ;  CF bayrağının qiymətini toplayır. 
                               ;  nəticədə  AX-ə 010Fh (271) yazılır
m1:
	  LEA BX, AA+3
	  CALL CON2
	  LEA DX, AA
	  MOV AH, 9
	  İNT 21h
         MOV AX, 4C00h
         INT 21h
         END     main

ADD:ADC əmrlər cütlüyünün köməyi ilə ədədləri böyük dəqiqliklə toplamaq olar. Məsələn, iki 64 bitlik tam ədədin toplanmasına baxaq. Fərz edək ki, bunlardan biri EDX:EAX registrlər cütündə, kiçik ikiqat söz ( 0-31 bitləri) EAX registrində və böyük ikiqat söz isə (32-63 bitləri) EDX registrində yerləşir, ikincisi isə eyni qayda ilə EBX:ECX (uyğun olaraq ECX və EBX) registrlər cütündə yerləşdirilib:

ADD EAX,ECX     ;əgər kiçik ikiqat sözlərin 
                                  ; toplanmasında
                                  ; böyük  mərtəbədən köçürmə 
                                  ; (CF=1) varsa, 
ADC EDX,EBX     ;  bu ADC əmrində nəzərə alınacaq. 
                                  ; böyük ikiqat sözlərin toplanması

INC əmri aşağıdakı kimi yazılır:

INC qəbuledici

INC əmri qəbuledicinin qiymətini bir vahidartırır.

Məsələn:

a) INC AL         ; (AL)-in məzmununu bir vahid artırır
b) INC EDX     ; (EDX) -in məzmununu bir vahid artırır
c) INC mem1    ;mem1 dəyişənin (yaddaş sahəsinin) 
                ; məzmununu bir vahid artırır

Toplama əmrlərinə XADD (eXchange and ADD i80486) əmrini də daxil etmək olar və o aşağıdakı kimi yazılır:

XADD qəbuledici, mənbə

Bu əmr qəbuledici ilə mənbənin məzmununu dəyişdirərək toplama aparır və cəmi qəbuledicidə yerləşdirir. Qəbuledici kimihəmişə registr, mənbə kimiisə registr və ya dəyişən götürülə bilər.