Assembler proqramlaşdırma dili

Əlavə sürüşdürmə əmrləri

Əlavə sürüşdürmə əmrləri

Əlavə sürüşdürmə əmrlərinə ikiqat dəqiqlikli: SHLD (ikiqat dəqiqlikli sola sürüşdürmə, i80386) və SHRD (ikiqat dəqiqlikli sağa sürüşdürmə, i80386) əmrləri daxildir.

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

SHLD qəbuledici,mənbə, sayğac

Bu əmr, qəbuledicinin (söz və ya ikiqat söz uzunluğunda registr və ya dəyişən) soldan sürüşdürülən bitlərini, mənbə­nin (söz və ya ikiqatsöz uzunluğunda registr və ya dəyişən) soldan sıxışdırılan bitləri ilə sağdan əvəz edir. Sürüşdürülən bitlərin sayı sayğacın qiyməti ilə təyin olunur. Bu qiymət 0…31 diapazonda yerləşir. Bu qiymət ədəd və ya CL registrinin məzmunu kimi verilə bilər. Əmrin icrasından sonra mənbənin qiyməti dəyişməz qalır.

SHRD əmrin yazılışı aşağıdakı kimidir:

SHRD qəbuledici,mənbə, sayğac.

Bu əmr SHLD əmrinə analoji olaraq işləyir, ancaq burada bitlər sağdan sürüşdürülür.

64 bitlik sahədən 16 bitin sola sürüşdürülməsini yerinə yetirən proqrama baxaq:

MASM
MODEL SMALL
.386
.STACK 256
.DATA
; 64 bitlik 0FEDCBA9876543210h sahəsinin 
; inisiallaşdırılması
ll       DD  76543210h
hh      DD  0FEDCBA98h
.CODE
main:
        MOV  AX,@DATA
        MOV  DS,AX
        XOR  AX,AX
        MOV  CL,16
        MOV  EAX,ll
        SHLD hh,EAX,CL      ; hh=0BA987654h
        SHL  ll, CL         ; ll=3210 0000h
        MOV  AX,4C00h
        INT  21h
END     main

f