Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
20
2.2.
Asembler.Wykładyićwiczenia
Rejestrywskaźnikoweiindeksowe
RejestrSIpodobniejakrejestrBX,możebyćużytyjakowskaźnikpamięci.Naprzy-
kład:
MOVAX,0
;prześlijdorejestruAXwartość0
MOVDS,AX
;prześlijdorejestruDXzawartośćrejestruAX
MOVSI,18
;prześlijdorejestruSIwartość18
MOVAL,[SI]
;prześlijdorejestruALzawartośćpamięcispodadresu
DS.:SI
Natomiastciągrozkazów...
000
CLD
MOVAX,0
MOVDS,AX
MOVSI,18
LODS;
000
;znacznikkierunkuDFprzyjmujewartość0
;prześlijdorejestruAXwartość0
;prześlijdorejestruDSzawartośćrejestruAX
;prześlijdorejestruSIwartość18
;prześlijbajtspodadresuDS:SIdorejestruAL.
...nietylkoładujerejestrAX(częśćAL),aleidodatkowozwiększarejestrSIo1(DF=0).
Takiciągrozkazówmożebyćbardzoefektywnypodczaswykonywaniarozkazówłańcu-
chowych,wktórychprzesyłaneciągitekstów,znakpoznaku.
RejestrDIjestbardzopodobnywużyciudorejestruSI.Możebyćużytyjakowskaźnik
pamięci;maspecjalnewłasności,gdyzostaniezastosowanywrozkazachzwiązanych
złańcuchamiznakowymi.Naprzykład:
000
MOVAX,0
MOVDS,AX
MOVDI,1024
ADD;L,[DI]
000
;prześlijdorejestruAXwartość0
;prześlijdorejestruDSzawartośćrejestruAX
;prześlijdorejestruDIwartość1024
;dodajdoBLzawartośćpamięcispodadresuDS:DI
RejestryDIiSIwespółzrejestremDSzwiązanezadresowaniemłańcuchówznako-
wych,ztymżerejestrDIwystępujezawsze,gdyadresowaniedotyczyźródładanych,zaś
rejestrSIwystępujewówczas,gdyadresowanietodotyczyprzeznaczenia(celu).RejestrySI
iDIużytejakowskaźnikipamięcizniełańcuchowymirozkazamiodnosząsięzawszewzglę-
demrejestrusegmentowegoDS.Naprzykład:
000
CLD
MOVDX,0
MOVES,AX
MOVDI,2048
STOS;
000
;znacznikkierunkuDFprzyjmujewartość0
;prześlijdorejestruDXwartość0
;prześlijdorejestruESzawartośćrejestruAX
;prześlijdorejestruDIwartość2048
;prześlijbajtzrejestruALdopamięciadresowanejreje−
stramiES:DI