Assembler proqramlaşdırma dili

İkilik bölmə əmrləri

İkilik bölmə əmrləri

İşarəsiz ədədləri bölmək üçün DIV (DIVide) əmrindən istifadə olunur və aşağıdakı formada yazılır:

DIV bölən

DIV əmri iki işarəsiz ikilik qiymətin bölünməsi əməliyyatını yerinə yetirir. Bölən yaddaşda və ya 8, 16 və ya 32 bitlik registrdə ola bilər. Bölünənin yeri mikroprosessorun strukturuna əsaslanır və əvvəlcədən (onun ayırılacaq yerin ölçüsü bölənin ölçüsündən asılı olaraq seçilir) məlum olur. Bölmənin nəticəsi qismət və qalıq kimi qeyd olunur. Bölmə zamanı operandların yerləşməsi və onların ölçüsü aşağıdakı cədvəldə göstərilmişdir:

Bu əmr bilavasitə ədədə bölməni inkar edir. Bölmə əmrinin icrasından sonra bayraqların qiyməti təyin olunmur. Ancaq, ” sıfra bölmək olmaz” adlanan sıfır nömrəli kəsilmə baş verə bilər. Bu kəsilmə aşağıdakı səbəblərin birisinə görə baş verə bilər:

– bölən sıfır olduqda;

– qismət onun üçün ayırılmış şəbəkə mərtəbəsində yerləşmədikdə.

Misallar:

a)
...
.DATA
bölünən_b  LABEL BYTE 
bölünən     DW 311
bölən       DB  29
.CODE
...
     XOR AX, AX
 ; Növbəti iki əmr bir MOV AX, bölünən  əmrinə 
 ; ekvivalentdir.
   
     MOV AH , bölünən_b+1     ; bölünənin böyük baytını 
                                           ; AH göndərmək
     MOV AL, bölünən_b          ; bölünənin kiçik baytını 
                                          ; AL göndərmək
     DIV bölən                            ; qismət AL-də, qalıq isə 
                                          ; AH-da yerləşir
b)
       MOV BX,10 
       DIV BX                             ; (DX):(AX) registrlər 
                                          ; cütünün məzmunu 10 
                                          ; bölmək 

İşarəli ədədləri bölmək üçün IDIV (Integer DIVide) əmrindən istifadə olunur və formatı belədir:

IDIV bölən

IDIV əmri işarəli verilənlərin bölünməsi əməliyyatını yerinə yetirir. Bu əmr də DIV əmri kimi icra olunur. IDIV əmri DIV əmrindən fərqli olaraq işarəli ədədlərlə işləyir.