Přidáno 1 972 bajtů,
24. 1. 2013, 17:28 ;Instrukce
: SHLD/SHRD - instrukce dvojitého posuvu
;Časování
: 3-7
;Popis
: Instrukce SHLD/SHRD posouvají operand reprezentujíci číslo v dvojité přesnosti doleva nebo doprava tak, aby vzniklo číslo v jednoduché přesnosti. Registr nebo hodnota paměťového místa je posunutá v závislosti na hodnote v trětím operandu instrukce který je čítačem. Tento posuv se líši od posuvu u čísel v jednoduché přesnosti v tom, že dvojitý posuv používa registrový operand pro specifikaci bitů, které se mají posouvat, zatímco jednoduchý posuv přesouva jen nuly nebo jedničky. Registr nebo paměťové místo (reg/mem) specifikuje vstupní operand. Registr (reg) specifikuje bity, které mají být vsunuty a třetí operand (immediate/CL) obsahuje počet posuvu.
:Pro [[SHLD]] obsahuje registr nebo paměťový operand vyšší bity čísla v dvojité přesnosti a registr (druhý operand) obsahuje nižší bity čísla. První operand je posunut doleva, přičemž vyšší bity druhého operandu jsou vsunutý doprava (na místo nižšího řádu). Výsledek je uložen v prvním operandu.
:Pro [[SHRD]] obsahuje registr nebo paměťový operand nižší bity čísla ve dvojité přesnosti a registrový (druhý) operand obsahuje vyšší bity. První operand je posunut doprava a nižší bity registrového operandu jsou vsunuty doleva (na místo vyššího řádu). Výsledek je uložen v prvním operandu.
;Syntaxe
: SHLD reg/mem, reg, immediate_operand
: SHLD reg/mem, reg, CL
;Ovlivňuje příznaky
: [[CF]] je nastaven na hodnotu posledního vysouvaného bitu [[OF]] je nastaven jestliže posunutí posledního bitu způsobilo přetečení [[SF]], [[ZF]] a [[PF]] jsou nastaveny podle hodnoty výsledku.
;Nedefinované příznaky
: [[AF]]
;Příklad
SHLD AX, BL, 0AH ; 0AH = bezprostrědní operand
SHRD AL, BL, CL ; CL = počet posuvu
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]