background image

1

1

Architektura Systemów Komputerowych

Wykład 3

Architektura wewnętrzna i rozkazy języka asembler.

background image

2

A

0

- A

3

B

0

- B

3

S

0

- S

3

M

F

0

- F

3

Sygnały sterujące do wyboru 

mikrooperacji logicznej (M=0) 

lub arytmetycznej (M=1)

Przykład 4 bitowego ALU SN74181

Blok arytmetyczno-logiczny

„

Blok arytmetyczno-logiczny (ALU) - jest uniwersalnym układem kombinacyjnym, który 

realizuje operacje matematyczne i logiczne w zależności od zaprogramowanej operacji 

tj. rozkazu umieszczonego w programie. 

„

Rozkazy mogą dotyczyć 

…

operacji dwuargumentowych: operacji arytmetycznych (dodawanie i odejmowanie) i 

operacji logicznych (sumowanie mnożenie, sumowanie mod 2, itp.)

…

operacji jednoargumentowych (np. negowanie bitów lub przesuwanie zawartości 

rejestrów)

„

Argumentami rozkazów są najczęściej dwa słowa binarne, od długości których mówi się 

o liczbie bitów ALU.

Lp.          S

0

- S

3               

M=0                     M=1

A

F

B

A

F

B

A

F

F

AB

F

B

F

B

A

F

B

A

F

B

A

F

B

A

F

B

F

AB

F

F

B

A

F

B

A

F

A

F

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

1

0

)

1

(

)

(

)

(

2

)

1

(

)

(

)

1

(

)

1

(

)

(

1

)

(

)

(

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

C

A

F

C

A

B

A

F

C

A

AB

F

C

A

F

C

AB

F

C

AB

B

A

F

C

B

A

F

C

AB

A

F

C

A

F

C

B

A

F

C

B

A

B

A

F

C

B

A

A

F

C

F

C

B

A

F

C

B

A

F

C

A

F

=

+

+

=

+

+

=

+

=

=

+

+

=

+

+

=

+

+

=

=

=

+

+

=

+

+

=

=

+

=

+

=

+

=

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

1111

0111

1011

0011

1101

0101

1001

0001

1110

0110

1010

0010

1100

0100

1000

0000

Układ sterowania

„

Najczęściej procesor wykonuje rozkazy nie w jednym kroku (jak np. 

dodawanie) ale w wielu krokach (np. mnożenie lub dzielenie jako ciąg 

dodawań i przesunięć).

„

W tym celu potrzebny jest złożony automat sekwencyjny, generujący 

odpowiednie ciągi słów podawanych na wejścia sterujące układu ALU -

układ sterowania. 

„

Cechy takiego automatu to:

…

konieczność posiadania bardzo dużej liczby stanów dostosowanych do 

wymaganej liczby wykonywanych rozkazów;

…

konieczność zapewnienia synchronizacji pracy układu sterowania i 

wykonawczego (uwzględnienie czasów wykonywania poszczególnych 

operacji).

„

W praktyce realizowane są jako:

…

generatory sekwencyjne

…

układy mikroprogramowalne

lub

stos

stos

Stos

„

Stos to wyróżniony obszar w pamięci używany wg reguł:

…

informacje zapisane są na stos do kolejnych komórek (pod 
kolejnymi adresami), przy czym żadnego adresu nie wolno 
pominąć

…

odczytujemy informacje w kolejności odwrotnej do ich zapisu 

…

informacje odczytujemy z ostatnio zapełnionej komórki, 
natomiast zapisujemy do pierwszej wolnej

„

Czyli obowiązuje reguła LIFO - ostatni wchodzi pierwszy wychodzi

Cykl rozkazowy procesora

Realizując program, system mikroprocesorowy wykonuje pewne 
powtarzające się czynności, polegające na cyklicznym pobieraniu 
kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania, a 
następnie realizacji rozkazu

Czas potrzebny na odczytanie kodu rozkazu z pamięci, na pobranie
argumentów, na wykonanie rozkazu i przesłanie wyniku operacji
nazywa się cyklem rozkazowym (instrukcyjnym)

Cykl rozkazowy składa się zwykle z faz pobierania (kodu rozkazu,
pobierania argumentu) i wykonania rozkazu

background image

3

Pami

ęć

CPU

cykl pobrania rozkazu

cykl 

pobrania 

argumentu I

cykl 

pobrania 

argumentu II

cykl zapisu wyniku

Cykl rozkazowy procesora

Faza pobrania:

1. adresowanie: podanie zawartości rejestrów adresujących pamięć (np. 

CS:IP) na magistralę adresową

2. odczyt zaadresowanej komórki pamięci do rejestru rozkazów (RR)

3. zwiększenie zawartości licznika rozkazów (IP)

Faza wykonania:

4. zdekodowanie kodu rozkazu i wytworzenie sygnałów sterujących 

realizujących dany rozkaz

Format rozkazu - to sposób rozmieszczenia informacji w kodzie rozkazu

Kod rozkazu:

• musi zawierać określenie rodzaju wykonywanej operacji (kod operacji) - w pierwszym 

bajcie (bajtach) kodu rozkazu

• może zawierać operandy i/lub adresy operandów wykonywanych operacji

Tryb adresowania to sposób określenia miejsca przechowywania argumentów
rozkazu

Argumenty rozkazu (dotyczy zarówno danych jak i wyników) mogą być przechowywane w:

• rejestrach

• pamięci

• kodzie rozkazu

Tryby adresowania
• adresowanie natychmiastowe
• adresowanie bezpośrednie
• adresowanie rejestrowe
• adresowanie pośrednie
• adresowanie indeksowe z przemieszczeniem

Format rozkazów i tryb adresowania

Przy adresowaniu bezpośrednim argument rozkazu zawarty jest w kodzie rozkazu

Argument jest umieszczany w kodzie rozkazu, więc musi być on znany w momencie pisania 
programu.

Kod rozkazu

Kod operacji

Argument

Przy adresowaniu bezpośrednim kod rozkazu zawiera adres komórki pamięci, w
której przechowywany jest argument rozkazu

W momencie pisania programu musimy zarezerwować adres przechowywania argumentu.

Kod rozkazu

Kod operacji

Adres

Argument

PA

M

IĘĆ

Tryby adresowania

Rozkazem (instrukcją maszynową) nazywamy najprostszą operację,
której wykonania programista może zażądać od procesora

Listą rozkazów nazywamy zestaw wszystkich instrukcji maszynowych
(rozkazów), jakie potrafi wykonać dany procesor

Podział rozkazów

• rozkazy przesłań
• rozkazy arytmetyczne i logiczne
• rozkazy sterujące (skoki, wywołania podprogramów, pętle, itp.)
• inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w 

trybie chronionym)

Rozkazy (jak inne informacje) są przechowywane w systemie mikroprocesorowym 

w postaci słów binarnych

Lista rozkazów

background image

4

Rozkazy przesłań:
MOV - move - przesłanie słowa między dwoma rejestrami
STR - store - przesłanie słowa ze wskazanego w rozkazie rejestru do komórki 
pamięci
LD - load - przesłanie słowa z pamięci do wskazanego rejestru
XCH - exchange - wymiana zawartości rejestrów 

Rozkazy arytmetyczno-logiczne:
ADD - addition - dodawanie
SUB - subtraction - odejmowanie
MUL - multiplication - mnożenie
DIV - division - dzielenie
NEG - negate - negacja
DEC - decrement - zmniejszanie wartości o jeden
INC - increment - zwiększanie wartości o jeden

Rozkazy sterujące pracą programu:
JMP - jump - skok bezwarunkowy do wyspecyfikowanego miejsca w pamięci
CALL - jump to subroutine - wywołanie podprogramu
RET - return - skok powrotny z podprogramu
SKIP - skip - przeskok przez jeden rozkaz

Rozkazy sterujące pracą procesora :
HALT - stop - zatrzymanie wykonania programu
NOP - no operation - rozkaz pusty

AND - conjuction - iloczyn
OR - disjunction - suma
EXOR - exclusive-OR -suma mod 2
NOT - complement - negacja

Przykładowe rozkazy

MOV AL, 9c

mnemonik argument

Sposób prezentowania rozkazu

Oznaczenie symboliczne rozkazu

Jest stosowane dla prezentacji programu człowiekowi lub przy 
pisaniu programów w asemblerze

Składa się ono z mnemonika (skrótu, który powinien sugerować 
rodzaj operacji) i pola argumentów

Przykład

Organizacja pamięci – kolejność bajtów

Bajty (słowa 8-bitowe) są umieszczone w kolejnych komórkach pamięci.

Odczyt zapis komórek pamięci jest możliwy na różne sposoby, np.:
odczyt/zapis bajtu (byte), słowa (word(16-bitów = dwa bajty), 
podwójnego słowa (dword) (32-bity)

Podstawową jednostką lokacji w pamięci jest bajt (każdy ma swój 
unikatowy adres). Odczyt lub zapis słów (word/dword) powoduje odczyt lub 
zapis dwu (lub czterech) kolejnych bajtów równocześnie.

Kolejność przyporządkowania poszczególnych części rejestru do kolejnych 
bajtów nazywana jest kolejnością bajtów (byte order).

Możliwe są dwie kolejności: Little Endian Big Endian

Little Endian

– stosowane np. w architekturze Intel x86

- mniej znaczące bajty zapisywane są w komórkach o niższych 
adresach

przykład
mov eax, 12345678h
mov [100], eax 
da w wyniku 
adresy ...|100|101|102|103|..
zawartość  

...|78h|56h|34h|12h|..

Big Endian

– stosowane np. w Motorola68000, PowerPC, Sparc,...

dla powyższego przykładu:
adresy    

...|100|101|102|103|..

zawartość

...|12h|34h|56h|78h|..

Organizacja pamięci – kolejność bajtów

background image

5

Informacja o żądanej liczbie bajtów do odczytu/zapisu procesor ma 
zawartą w kodzie instrukcji:

Przykłady:
mov AL, [100] - odczyt jednego bajtu z komórki o adresie 100 do części 
rejestru A (oznaczonej AL)

mov [220], AX – zapis dwu bajtów (AL i AH) do kolejnych komórek pamięci 
([220] <= AL, [221] <= AH)

Jeśli z kontekstu instrukcji nie wynika rozmiar argumentu, należy go 
określić wprost, za pomocą specjalnych dyrektyw (byte ptrword ptr lub 
dword ptr

):

np.
add [100], 10h
należy dopisać, np.:
add byte ptr [100], 10h

Organizacja pamięci – kolejność bajtów

Instrukcja MOV należy do grupy instrukcji przesyłania danych i
stanowi jeden z podstawowych rozkazów używanych w
asemblerze.

Zadaniem jej jest kopiowanie danej z jednego do drugiego
miejsca

(nie

można

jednak

przesyłać

danych

między

komórkami pamięci - musi się to odbywać poprzez rejestr
procesora).

Przykład:

mov operand1,operand2

źródło (skąd lub co?)

cel (gdzie?)

Rozkaz przesyłania danych - MOV

Tryb rejestrowy

W zależności od trybu adresowania użycie tej instrukcji może wyglądać:

Przykład:
MOV AX,BX

0000000100010111

0000000000100011

0000000000010000

0000000000000000

0000000000100011

0000000000010000

0000000000000000

0000000000100011

AX
BX
CX
DX

rejestry przed 

wykonaniem rozkazu

rejestry po 

wykonaniu rozkazu

AX
BX
CX
DX

Jeżeli argument znajduje się w rejestrze, to tryb adresowania nazywa się trybem

rejestrowym (register mode). Można zauważyć, że rozkaz zawiera numer rejestru

procesora, w którym przechowywany jest argument operacji.

KOD OPERACJI

NR REJESTRU

BLOK REJESTRÓW

ARGUMENT

Rozkaz przesyłania danych - MOV

Tryb natychmiastowy

Przykład:
MOV CL,5DH

0000000100010111

0000000000100011

0000000000010000

0000000000000000

0000000000100011

0000000001011101

0000000000000000

AX
BX
CX
DX

rejestry przed 

wykonaniem rozkazu

rejestry po 

wykonaniu rozkazu

AX
BX
CX
DX

5D

H

= 01011101

0000000100010111

Jeżeli argument znajduje się w kodzie rozkazu, to tryb adresowania nazywa się

trybem natychmiastowym (immediate mode). Można zauważyć, że stała 8-, 16- czy

32-bitowa jako argument źródłowy zawarta jest w rozkazie (umieszczona tam przez

asembler), a nie w rejestrze czy komórce pamięci.

KOD OPERACJI

ARGUMENT

Rozkaz przesyłania danych - MOV

background image

6

Rejestr jako argument pośredni zapisuje się w asemblerze w nawiasie kwadratowym

(w odróżnieniu od rejestru jako argumentu).

Przykład:

MOV AX,BX

do rejestru AX ładowana jest zawartość rejestru BX

Tryb adresowania pośredniego przez rejestr

MOV AX,[BX]   do rejestru AX ładowana jest zawartość komórki pamięci,

której adres od początku segmentu danych (offset) określa

rejestr BX

MOV BX,0001

.........................

MOV AX,[BX]

0000
0001
0002
0003
0004

8B

1A

1A8B

AX =

0001

BX =

bajt o adresie młodszym
bajt o adresie starszym 

młodszy bajt         starszy bajt 

Rozkaz przesyłania danych - MOV

Ograniczenia instrukcji MOV:

„

MOV nie może przenosić danych z jednej komórki pamięci do innej, 

np. instrukcja:

MOV [SI],[BX]  w procesie kompilacji będzie błędem

„

MOV nie może przenosić zawartości jednego rejestru 

segmentowego do innego np. instrukcja:

MOV CS,DS  w procesie kompilacji będzie błędem

Toteż by np. przenieść zawartość rejestru DS do CS trzeba wpierw             

przenieść zawartość DS do innego rejestru ogólnego przeznaczenia i dopiero  

jego zawartość do CS, np.
MOV AX,DS    

;AX:=DS

MOV CS,AX    

;CS:=AX

„

MOV nie może przenosić danych natychmiastowych do rejestru 

segmentowego, np. instrukcja:

MOV CS,0B80H  w procesie kompilacji będzie błędem

„

MOV nie może przenosić jednej z 8-bitowych połówek rejestru do 

rejestrów 16-bitowych i odwrotnie.

Rozkaz przesyłania danych - MOV

Rozkazy logiczne

„

Wszystkie te rozkazy, których działanie jest oparte bezpośrednio na 
zasadach logiki to rozkazy logiczne 

„

Rozkazy te operują na poszczególnych bitach wewnątrz rejestrów 
czy komórek pamięci. Z tego też względu rozkazy logiczne (wraz z 
rozkazami przesunięć) często są nazywane rozkazami operowania 
na bitach

„

Do najważniejszych rozkazów tej grupy należą:

…

Negacja logiczna (bajtu lub słowa) - NOT

…

Mnożenie logiczne (bajtu lub słowa) - AND

…

Dodawanie logiczne (bajtów lub słów) - OR

…

Logiczna nierównoważność (bajtów lub słów) - XOR

Rozkaz NOT neguje logicznie bity argumentu, tzn. odwraca stan
każdego bitu rejestru lub komórki pamięci. Nie wpływa na stan
rejestru znaczników (flag).

Przykład:

jeśli do rejestru BL przesłano liczbę

9C

H =

10011100B

, to po

użyciu rozkazu

NOT BL

, otrzymamy:

01100011B

=

63

H.

W języku asemblera można to przedstawić jako:

MOV BL,9C

;ładuj do BL wartość 9CH = 10011100B

NOT BL

;w BL otrzymamy liczbę 01100011 B = 63H

Rozkaz negacji logicznej - NOT

background image

7

Rozkaz AND wykonuje mnożenie logiczne odpowiadających sobie
bitów dwóch argumentów (operandów) i umieszcza wynik w miejscu
lewego argumentu (operandu).
Bit wyniku ma wartość 1 wówczas, gdy odpowiadające sobie bity w
obydwu argumentach mają wartość 1, w pozostałych przypadkach bit
wyniku ma wartość 0.

Przykład:

jeśli do rejestru AL przesłano liczbę

9C

H =

10011100

B, a do BL

4C

H =

01001100

B to po użyciu rozkazu

AND AL,BL

otrzymamy w rejestrze AL

liczbę

0C

H =

00001100

B.

Rozkaz mnożenia logicznego - AND

W języku asemblera można to przedstawić jako:

MOV AL,9C

;ładuj do BL wartość 9CH = 10011100B

MOV BL,4C

;w BL otrzymamy liczbę 01100011B = 63H

AND AL,BL

;w AL Otrzymamy liczbę 00001100B = 0CH

Rozkaz OR wykonuje dodawanie logiczne odpowiadających sobie bitów
dwóch argumentów (operandów) i umieszcza wynik w miejscu lewego
argumentu (operandu).
Bit wyniku ma wartość O wówczas, gdy odpowiadające sobie bity w obydwu
argumentach mają wartość O, w pozostałych przypadkach bit wyniku ma
wartość 1.

Przykład:

jeśli do rejestru AL przesłano liczbę

9C

H =

10011100

B, a do BL

4C

H =

01001100

B to po użyciu rozkazu

OR AL,BL

otrzymamy w rejestrze AL liczbę

DC

H =

11011100

B.

Rozkaz dodawania logicznego - OR

W języku asemblera można to przedstawić jako:

MOV AL,9C

;ładuj do BL wartość 9CH = 10011100B

MOV BL,4C

;w BL otrzymamy liczbę 01100011B = 63H

OR AL,BL

;w AL Otrzymamy liczbę 11011100B = DCH

Rozkazy arytmetyczne 

„

Do najważniejszych rozkazów tej grupy należą:

…

Dodawanie - ADD, ADC

…

Odejmowanie - SUB, SBB

…

Mnożenie - MUL, IMUL

…

Dzielenie - DIV, IDIV

…

Powielanie długości argumentu - CBW, CWD

…

Negacja lub uzupełnienie do dwóch - NEG

…

Inkrementacja i dekrementacja - INC, DEC

…

Porównywanie przeznaczenia ze źródłem - CMP

Dodawania całkowite dokonujemy za pomocą rozkazu ADD

ADD argument1,argument2

rejestr
komórka pamięci (z pewnymi wyjątkami)

rejestr
komórka pamięci (z pewnymi wyjątkami)
dana natychmiastowa

Do argumentu1 dodaj argument2 i wynik zapisz w argument1

Przykłady:
ADD AL,BL
ADD AL,4Ch

Rozkaz ten ma wpływ na następujące znaczniki rejestru flagowego (zależne od 
wyniku dodawania):

OF - flaga nadmiaru (przepełnienia)
SF - flaga znaku
ZF - flaga zera

AF - flaga przeniesienia pomocniczego

PF - flaga parzystości

CF - flaga przeniesienia

Dodawanie

background image

8

Odejmowania całkowitego dokonujemy za pomocą rozkazu SUB

SUB argument1,argument2

rejestr
komórka pamięci (z pewnymi wyjątkami)

rejestr
komórka pamięci (z pewnymi wyjątkami)
dana natychmiastowa

Od argumentu1 odejmij argument2 i wynik zapisz w argument1

Przykłady:
SUB AL,BL
SUB AL,4Ch

Rozkaz ten ma wpływ na następujące znaczniki rejestru flagowego (zależne od 
wyniku odejmowania):

OF - flaga nadmiaru (przepełnienia)
SF - flaga znaku
ZF - flaga zera

AF - flaga przeniesienia pomocniczego

PF - flaga parzystości

CF - flaga przeniesienia

Odejmowanie

Mnożenie liczb całkowitych bez znaku dokonujemy za pomocą rozkazu MUL

MUL argument2

rejestr (rej)
komórka pamięci (mem)

Pomnóż argument2 przez niejawny argument1 (wartość rejestru AL lub AX) a 

wynik zapisz w rejestrze AL lub AX

Rozkaz ten ma wpływ na następujące znaczniki rejestru flagowego (zależne od 
wyniku):

OF - flaga nadmiaru (przepełnienia)

CF - flaga przeniesienia

ROZMIAR 

ARGUMENTU 

argument1 argument2 iloczyn 

Bajt AL 

reg(8bit)/mem(8bit) 

AX 

Słowo AX 

reg(16bit)/mem(16bit) 

DX:AX 

 

przy czym jeśli ”górna” połowa wyniku znajdująca się w rejestrach AH lub DX 
zawiera same zera to OF i CF ustawiane są na wartość 0, w przeciwnym razie na 1.

Mnożenie

Dzielenie liczb całkowitych bez znaku dokonujemy za pomocą rozkazu DIV

DIV argument2

rejestr (rej)
komórka pamięci (mem)

Podziel niejawny argument1 (wartość rejestru AL lub AX) przez argument2 

wynik zapisz w rejestrze AL lub AX natomiast resztę z dzielenia w AH lub DX

ROZMIAR 

ARGUMENTU 

dzielna dzielnik  iloraz 

reszta 

Słowo/Bajt AX 

reg(8bit)/mem(8bit) 

AL  AH 

Podwójne 

Słowo/Słowo 

DX:AX reg(16bit)/mem(16bit)

AX 

DX 

 

Gdy iloraz nie pomieści się w AL czy AX, czy też nawet w przydzielonej mu 
specjalnej komórce pamięci, procesor wygeneruje przerwanie nr 0 (błąd 
dzielenia przez zero) i poinformuje o tym.

Dzielenie

Rotacje i przesunięcia logiczne oraz 
arytmetyczne

„

Rozkazy rotacji (przesunięcia cyklicznego): 

…

ROL,

…

ROR, 

…

RCL, 

…

RCR, 

„

rozkazy przesunięć logicznych:

…

SAL/SHL,

…

SHR 

„

przesunięć arytmetycznych: 

…

SAR, 

„

Wynik rotacji lub przesunięcia wpisywany jest zawsze w miejsce 

argumentu (operandu). 

„

Rotacja różni się tym od przesunięć, iż w przesunięciach następuje 

utrata bitów skrajnych przesuwanych rejestrów lub komórek 

pamięci, natomiast w rotacjach nie ma tej utraty

„

Rozkazy przesunięć oraz rozkazy rotacji oddziałują na znaczniki (flagi) 

CF i OF. 

przemieszczają bity rejestru lub 
komórki pamięci 8- lub 16-bitowej o 
1 bit (lub więcej) w prawo lub w 
lewo

background image

9

CF

0

1

2

3

13

14

15

ROL x,wielkość

CF

0

1

2

3

13

14

15

ROR x,wielkość

CF

0

1

2

3

13

14

15

RCL x,wielkość

CF

0

1

2

3

13

14

15

RCR x,wielkość

Rozkazy rotacji

Rozkaz ROL dokonuje przesunięcia cyklicznego argumentu1 w lewo, o 

liczbę bitów, określoną argumentem2. 

ROL argument1,argument2

gdy dokonujemy przesunięcia o liczbę bitów większą niż 1 to argumentem2

jest rejestr CL, który uprzednio należy załadować liczbą, określającą o ile

bitów należy przesunąć lewy argument.

W rotacji bit opuszczający rejestr (komórkę pamięci) z jednego końca,

wchodzi do niego (do niej) z drugiego końca, a jego wartość kopiowana jest

do rejestru znaczników, jako znacznik (flaga) przeniesienia, CF. Jeśli

podczas tej rotacji, o 1 bit w lewo, nie zmieni się zawartość bitu znaku, to

wówczas znacznik OF jest zerowany, w przeciwnym razie znacznik OF
przyjmuje wartość 1.

Przykłady:

......

ROL AL, 1

.......

MOV CL,14

ROL BX,CL

............

Rotacja w lewo - ROL

CF

0

1

2

3

13

14

15

Rozkaz ROR dokonuje przesunięcia cyklicznego argumentu1 w prawo, o 

liczbę bitów, określoną argumentem2. 

ROR argument1,argument2

gdy dokonujemy przesunięcia o liczbę bitów większą niż 1 to argumentem2 jest

rejestr CL, który uprzednio należy załadować liczbą, określającą o ile bitów należy

przesunąć lewy argument.

W rotacji bit opuszczający rejestr (komórkę pamięci) z jednego końca, wchodzi do

niego (do niej) z drugiego końca, a jego wartość kopiowana jest do rejestru

znaczników, jako znacznik (flaga) przeniesienia, CF. Jeśli podczas tej rotacji, o 1 bit w

lewo, nie zmieni się zawartość bitu znaku, to wówczas znacznik OF jest zerowany, w
przeciwnym razie znacznik OF przyjmuje wartość 1.

Przykłady:

......
ROR AL, 1
.......
MOV CL,14
ROR BX,CL
............

Rotacja w prawo - ROR

CF

0

1

2

3

13

14

15

Rozkaz RCL dokonuje przesunięcia cyklicznego argumentu1 w prawo, o 

liczbę bitów, określoną argumentem2 (jeśli więcej niż 1 bit to użyć rejestru 

CL). 

W tego rodzaju rotacji („rotacja długa”) bit CF jest łącznikiem między

najmłodszym a najstarszym bitem rolowanego argumentu (operandu).

Skrajny bit po opuszczeniu rolowanego argumentu wchodzi na miejsce

znacznika CF, podczas gdy poprzednia wartość CF wchodzi na brakujące
miejsce po stronie przeciwnej tegoż argumentu.
Rozkaz RCR działa analogicznie do rozkazu RCL

Rotacja w lewo (w prawo) z przeniesieniem -
RCL (RCR)

CF

0

1

2

3

13

14

15

RCL argument1,argument2

RCR argument1,argument2

CF

0

1

2

3

13

14

15

background image

10

CF

0

1

2

3

13

14

15

SHL x,wielkość

0

CF

0

1

2

3

13

14

15

SHR x,wielkość

0

Rozkazy SHL i SHR używane są w programach jako rozkazy

odpowiednio zastępujące: rozkaz mnożenia MUL i rozkaz dzielenia

DIV, jak też w sytuacjach związanych z tablicami, z uzyskiwaniem

dostępu do danego elementu tablicy.

Rozkazy przesunięcia logicznego w lewo 
(SHL) i prawo (SHR)

Przetwarzanie łańcuchów

„

Przez łańcuchy rozumiemy bloki kolejnych bajtów lub słów w pamięci, 

których rozmiar może sięgać do 64kB. 

„

Bloki te mogą się składać z:

…

wartości liczbowych, które są reprezentowane przez kody binarne lub 

kody BCD 

…

wartości alfanumeryczne

„

Rozkazy operujące na łańcuchach realizują pięć elementarnych 

operacji: 

…

kopiowanie

…

zapisywanie

…

odczytywanie

…

porównywanie

…

przeszukiwanie

„

Rozkazy łańcuchowe używają zawsze tych samych rejestrów do 

adresowania argumentów (operandów) oraz do zliczania powtórzeń: 

…

DS:SI - para rejestrów adresująca źródło danych 

…

ES:DI - para rejestrów adresująca miejsce przeznaczenia, wyniku

…

CX - rejestr powtórzeń, licznik