ASK w4 id 70603 Nieznany

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 i 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 i 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 ptr, word 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 a

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


Wyszukiwarka

Podobne podstrony:
ASK w2 id 70602 Nieznany (2)
IiP z w4 2 id 210531 Nieznany
PodstEle w4 id 369044 Nieznany
PK W4 id 359505 Nieznany
ASK egzamin id 70515 Nieznany
IiP z w4 id 210530 Nieznany
ML1 W4 2 id 303804 Nieznany
Oe i To1 w4 id 333222 Nieznany
Fizyka W3 W4 id 177236 Nieznany
ASK w2 id 70602 Nieznany (2)
ASK id 70513 Nieznany (2)
ask egzamin Grupa A id 70516 Nieznany (2)
MSI w4 konspekt 2010 id 309792 Nieznany
Optymalizacja w4 pdf id 338947 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)

więcej podobnych podstron