Změny

Skočit na navigaci Skočit na vyhledávání

SHLD/SHRD - instrukce dvojitého posuvu

Přidáno 1 972 bajtů, 24. 1. 2013, 18:28
bez shrnutí editace
;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]]

Navigační menu