Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.2.Instrukcjeprzesłańdanychorazoperacjearytmetyczne
...
MOVEAX,DWORDPTRA1;
ADDEAX,DWORDPTRA2;
MOVW,EAX;
MOVEAX,DWORDPTRA1+4;
ADCEAX,DWORDPTRA2+4;
MOVW+4,EAX
Młodszepodwójnesłowo
InstrukcjaustawiabitCrejestruflagowego
Zapismłodszegopodwójnegosłowawyniku
Starszepodwójnesłowo
Dodaniestarszychpodwójnychsłówzuwzgl.C
51
ArgumentyinstrukcjiADCiSBBanalogicznejakinstrukcjiADDiSUB.
Począwszyodprocesora80486,wprowadzonododatkowąinstrukcjędodawania
XADD,którazapamiętujeoperanddocelowynaczaswykonywaniaoperacji,poczymwpi-
sujegodooperanduźródłowego.Wykonaniekodu
MOVCX,1
MOVDX,2
XADDCX,DX
spowodujeumieszczeniewrejestrzeCXwynikudodawaniadwóchrejestrów(war-
tość3),natomiastdorejestruźródłowegoDXzostaniewpisanazawartośćrejestruCX
sprzedoperacjiXADD(wartość1).
Podczasomawianiainstrukcjidodawaniaiodejmowaniazwróćmyjeszczeuwagęna
instrukcjęzmianyznakuliczby
NEGarg
Argumentamiinstrukcjimogąbyć:r8,r16,r32,m8,m16,m32.Instrukcjazmienia
znakliczbynaprzeciwny,korzystajączkoduU2.
2.2.3.DodawanieiodejmowanieliczbdziesiętnychwkodzieBCD
Operacjearytmetycznenaliczbachdziesiętnychwykonujesięprzezsekwencyjneopera-
cjenaposzczególnychcyfrachdziesiętnych,analogiczniejakrobisiętoręcznienakart-
cepapieru.Natomiastoperacjearytmetycznenaposzczególnychcyfrachdziesiętnych
realizujesięwdwóchkrokach:
1.operacjadodawania/odejmowaniabinarnegozużycieminstrukcjiADD,ADC,SUB,
SBB;
2.operacjakorekcjidziesiętnejpododawaniu/odejmowaniu.
Procesoryrodzinyx86wyposażonewinstrukcjekorekcjipododawaniudlaliczb
dziesiętnychwnieupakowanymiupakowanymkodzieBCD.Korekcjadziesiętnapo
dodawaniurealizujenastępująceoperacje:
jeśli4młodszebitywynikudodawaniabinarnegodwóchcyfrdziesiętnych
mniejszeod10(przywyzerowanejfladzeAF),towynikjestpoprawny;
jeśli4młodszebitywynikudodawaniabinarnegodwóchcyfrdziesiętnychwięk-
szeod9(lubflagaAFjestustawiona),toinstrukcjakorekcjidziesiętnejdodajedo