Új hozzászólás Aktív témák
-
#95904256
törölt tag
Az SHLD parancsnak 3 operandusa van.
formátum: SHLD céloperandus,forrás1,forrás2kezdeti állapot:
AL = a7 a6 a5 a4 a3 a2 a1 a0 ; 8 bit
BL = b7 b6 b5 b4 b3 b2 b1 b0 ; 8 bitSHLD AL,BL,3 ; 3 bites shiftelés
a7 a6 a5 a4 a3 a2 a1 a0 b7 b6 b5 b4 b3 b2 b1 b0 ; <== SHLD balra shiftel
eredmény:
AL = a4 a3 a2 a1 a0 b7 b6 b5 ; 3 bites eltolás történt
BL = b7 b6 b5 b4 b3 b2 b1 b0 ; a forrás opernadus nem változotta4 a3 a2 a1 a0 b7 b6 b5 b7 b6 b5 b4 b3 b2 b1 b0
Természetesen az SHLD 3 operandusa lehet a CL regiszter is. Ekkor az abban tárolt számú bitet forgatja be a céloperandusba.
Pl. egy 64 bites számot szeretnél shiftelni balra, akkor így teheted meg:
mov eax,[felso32bit]
mov ebx,[also32bit]
mov cl,[bitekszama]
shld eax,ebx,cl ;csak EAX módosult!
shl ebx,cl ;EBX-et egy sima shift utasítással korrigáljuk
mov [felso32bit],eax
mov [also32bit],ebx[ Szerkesztve ]