5. Mikroprocesory 8086 i 8088

Wielkość: px
Rozpocząć pokaz od strony:

Download "5. Mikroprocesory 8086 i 8088"

Transkrypt

1 Mikroprocesory 8086 i Mikroprocesory 8086 i 8088 Mikroprocesory 8086 i 8088 (ich twórca - firma Intel - stosuje oznaczenia iapx86 i iapx88 odpowiednio) są układami wielkiej skali integracji (LSI) o długości słowa równej 6 bitom, co oznacza, że są zdolne do wykonywania równolegle operacji na szesnastobitowych ciągach zerojedynkowych. Omawiane mikroprocesory różnią się od siebie tym, że szerokość szyny danych magistrali mikroprocesora 8086 wynosi 6 b, zaś szerokość szyny danych magistrali 8088 wynosi tylko 8 b. Różnica ta powoduje mniejszą szybkość działania mikroprocesora 8088 i znaczne zwiększenie liczby dostępów do pamięci względem 8086 przy wykonywaniu tego samego programu. Oba mikroprocesory dostępne są w czterdziestokońcówkowych plastikowych obudowach dwurzędowych (dual-in-line DIL). Dalej omawiany będzie mikroprocesor 8086, należy pamiętać, że niniejszy tekst stosuje się również do 8088 z uwzględnieniem wymienionej wyżej różnicy. Generator impulsów synchronizujących 8086 jest zrealizowany jako tzw. zegar - generator fali prostokątnej o współczynniku wypełnienia /2 i częstotliwości, w zależności od wykonania od 4.77 MHz do 8 MHz. Znany IBM PC/XT wersja "turbo" wykorzystuje mikroprocesor z zegarem 8 MHz. Uwaga: Komputery IBM PC/AT zawierają mikroprocesor Przestrzeń adresowa Przestrzeń adresowa pamięci mikroprocesora 8086 obejmuje MB (tzn. 220 adresów komórek jednobajtowych). Przestrzeń adresowa wejścia/wyjścia obejmuje 64 KB rejestrów. Obie przestrzenie są rozłączne. Wszelkie rejestry mikroprocesora 8086 są ośmio- lub szesnastobitowe, dotyczy to również wykorzystywanych konstrukcji logicznych, natomiast zaadresowanie komórki pamięci w przestrzeni adresowej MB wymaga dwudziestobitowego adresu. W związku z tym przyjęto regułę tworzenia adresów fizycznych pamięci ("adresów do pamięci") zawsze z dwóch szesnastobitowych wartości, z których jedna (oznaczana dalej jako SEGMENT) określa adres początkowy pewnego segmentu, zaś druga (oznaczana dalej jako OFFSET) jest adresem względnym względem początku tego segmentu. Segmentem nazywa się dowolny spójny obszar pamięci rozpoczynający się od adresu podzielnego bez reszty przez 6 (0H). Wspomniana wcześniej szesnastobitowa wartość określająca adres początkowy segmentu stanowi po prostu szesnaście najbardziej znaczących bitów dwudziestobitowego adresu segmentu. Należy zauważyć, że w przestrzeni adresowej MB można wyróżnić 64 K różnych (lecz nie rozłącznych) segmentów. W zapisie heksadecymalnym wartość określająca adres początku segmentu stanowi cztery najbardziej znaczące cyfry pięciocyfrowego adresu fizycznego początku segmentu. Adres względny nazywany bywa również przesunięciem lub wskaźnikiem (występuje tu przypadkowa zbieżność z nazwą jednobitowego rejestru). W 39

2 Wstęp do systemów komputerowych mikroprocesorze 8086 zasadę tworzenia adresu fizycznego można przedstawić wzorem: adres fizyczny = SEGMENT * 6 + OFFSET lub w postaci binarnej: SEGMENT OFFSET Adres fizyczny Przyjęto zasadę zapisu adresów fizycznych w następującej konwencji: SEGMENT:OFFSET np. zapis 20H:0H oznacza adres fizyczny 20H (zaś 0FEDBH:BH wyznacza adres 0FEDCBH). Przeniesienie jest ignorowane (0FEDBH:H = 0FECH). Należy też zwrócić uwagę, że istnieje wiele sposobów zapisu tego samego adresu fizycznego, np. adres 0400H można zapisać jako 40H:0, 0H:300H, 20H:200H, 30H:00, 0:400H, FH:20H itd. Podczas działania procesora w rozkazach określa się tylko przesunięcia (adresy względne), zaś SEGMENT pobierany jest z jednego z tzw. rejestrów segmentów (segment registers). Konstruktorzy mikroprocesora 8086 założyli, że programista będzie wykorzystywał strukturę danych nazywaną stosem, co więcej - stos będzie intensywnie wykorzystywany do przekazywania sterowania na potrzeby systemu przerwań i wywołań programowych. Abstrahując od konkretnego rozwiązania w 8086 stos (stack) można określić jako taką bezadresową strukturę danych, na której można wykonać dwie operacje: odłożenia słowa na stos i zdjęcia słowa ze stosu. Odłożenie na stos słowa powoduje, że znajduje się ono na tzw. wierzchołku stosu i może być jako pierwsze zdjęte ze stosu. Odłożenie kolejnego słowa na stos uniemożliwia dostęp do poprzednio odłożonych słów - mogą one być zdejmowane tylko w porządku odwrotnym do odkładania. Stąd stos nazywany jest też kolejką LIFO (last in, first out - "ostatni wchodzący - pierwszym wychodzącym"). Nota bene stos w mikroprocesorze 8086 organizowany jest w obszarze pamięci operacyjnej, zatem istnieje możliwość dostępu do jego zawartości w innym porządku niż tu opisany Rejestry procesora Mikroprocesor 8086 zawiera 4 szesnastobitowych rejestrów widocznych dla programisty: 40

3 Mikroprocesory 8086 i Rejestry ogólnego przeznaczenia Akumulator AX AH AL Rejestr bazowy BX BH BL Rejestr zliczający (licznik) CX CH CL Rejestr danych DX DH DL Rejestry adresowe Wskaźnik rozkazu IP Wskaźnik wierzchołka stosu Wskaźnik bazy Indeks źródła Indeks celu Rejestry segmentowe Rejestr segmentu kodu Rejestr segmentu stosu Rejestr segmentu danych Rejestr segmentu dodatkowego Rejestr stanu Rejestr znaczników SP BP SI DI CS SS DS. ES F. Rejestry ogólnego przeznaczenia, służące głównie do przechowywania wyników pośrednich, ich zawartości mogą być argumentami większości rozkazów: AX - akumulator; niektóre rozkazy dotyczące tego rejestru wykonują się szybciej niż na innych rejestrach ogólnych lub są o bajt krótsze. BX - rejestr bazowy (base register); dodatkowo może być wykorzystany do tzw. adresowania bazowego - zawiera wówczas przesunięcie (OFFSET) argumentu. CX - rejestr zliczający lub licznikowy (count register); dodatkowo może być wykorzystany w wielu rozkazach jako licznik wykonań - jest wówczas zmniejszany o za każdym wykonaniem i jego zawartość podlega badaniu, czy nie uległa wyzerowaniu. DX - rejestr danych (data register), jako jedyny może być wykorzystywany do adresowania obiektów w przestrzeni adresowej wejścia/wyjścia (portów) w 4

4 Wstęp do systemów komputerowych rozkazach wejścia/wyjścia, a także w rozkazach o argumentach lub wynikach długości większej niż jedno słowo (np. rozkazy mnożenia lub dzielenia). Szesnastobitowe rejestry ogólnego przeznaczenia mogą być interpretowane jako pary ośmiobitowych rejestrów stanowiących mniej i bardziej znaczącą część rejestru szesnastobitowego. Identyfikator rejestru stanowiącego mniej znaczącą część rejestru ogólnego kończy się na L, zaś identyfikator rejestru stanowiącego bardziej znaczącą część rejestru ogólnego kończy się na H (por. rysunek na następnej stronie). Argumentami rozkazów mogą być zarówno rejestry ogólne jako całości, jak i ich ośmiobitowe części. 2. Rejestry adresowe, służące głównie do przechowywania adresów względnych (OFFSET), chociaż mogą być też wykorzystywane jako rejestry robocze - możliwości użycia ich zawartości jako argumentów rozkazów są tylko w niewielkim stopniu ograniczane w porównaniu z rejestrami ogólnego przeznaczenia: IP - wskaźnik rozkazu (instruction pointer), zawiera zawsze adres względny (względem początku segmentu określanego przez zawartość rejestru CS) aktualnie pobieranego do wykonania rozkazu; uwaga: rejestr ten stanowi z punktu widzenia programisty (wraz z rejestrem CS) część licznika rozkazów; rejestr IP nie może być jawnie zmieniany przez program. SI - rejestr indeksu źródła (miejsca, z którego pobierane są dane w operacjach przesyłania danych - source index); zwykle zawiera adres danych względem początku segmentu określonego zawartością rejestru DS; rejestr SI wykorzystywany jest do tzw. adresowania indeksowego oraz w rozkazach łańcuchowych (na ciągach), może też być wykorzystywany do innych celów. DI - rejestr indeksu celu (destination index); zwykle zawiera adres danych względem początku segmentu określonego zawartością rejestru DS; rejestr DI wykorzystywany jest do tzw. adresowania indeksowego oraz w rozkazach łańcuchowych - w tym przypadku jednak zawiera adres względem początku segmentu określonego zawartością rejestru ES; może też być wykorzystywany do innych celów. 3. Rejestry segmentowe służą do przechowywania wartości (SEGMENT) określających adresy początkowe segmentów przy odwołaniach do pamięci: CS - rejestr segmentu kodu programu (code segment) określa adres początku segmentu używany w przypadku wszystkich dostępów do pamięci z adresowaniem względnym za pomocą rejestru IP, tzn. pobierania rozkazów (instructions fetch). Z punktu widzenia programisty rejestr CS wraz z rejestrem IP tworzy licznik rozkazów mikroprocesora 8086 (CS:IP). SS - rejestr segmentu stosu (stack segment) określa adres początku segmentu używany w przypadku wszystkich dostępów do pamięci z adresowaniem względnym za pomocą rejestru SP lub BP (o ile nie zadano inaczej za pomocą specjalnego rozkazu) oraz jeśli zadano wykorzystanie tego rejestru specjalnym rozkazem. 42

5 Mikroprocesory 8086 i 8088 DS - rejestr segmentu danych (data segment) określa adres początku segmentu używany w przypadku wszystkich dostępów do pamięci do danych (np. za pomocą rejestrów BX, SI, DI lub za pomocą adresu podanego bezpośrednio w rozkazie - o ile nie zadano inaczej za pomocą specjalnego rozkazu) oraz jeśli zadano wykorzystanie tego rejestru specjalnym rozkazem. ES - rejestr segmentu dodatkowego (extra segment) określa adres początku segmentu używany w przypadku dostępów do pamięci do danych w rozkazach łańcuchowych - działania na ciągach adresowanych za pomocą rejestru DI, a ponadto jeśli zadano wykorzystanie tego rejestru specjalnym rozkazem. Rejestry segmentowe mogą być argumentami wyłącznie rozkazów przesyłania MOV, PUSH i POP. 4. Rejestr znaczników F (flag register) jest konstrukcją składającą się z szeregu jednobitowych rejestrów (wskaźników) określających stan procesora. Rejestr znaczników zawiera tzw. słowo stanu (status word). Słowo stanu SW ma następującą postać: X X X X OF DF IF TF SF ZF X AF X PF X CF Nadmiar (overflow) I I I I I I I I Kierunek (direction) I I I I I I I Maska przerwań (interrupt enable) I I I I I I Przerwanie po każdym rozkazie (trap enable) I I I I I Wskaźnik ujemnego wyniku (sign) I I I I Wskaźnik zera wyniku (zero) I I I Przeniesienie pomocnicze (auxillary carry) I I Wskaźnik parzystości (parity) I Przeniesienie globalne (carry) X oznacza nieistotną wartość. Poszczególne bity rejestru wskaźników dzielą się na dwie grupy: a. Wskaźników określających sposób działania procesora: TF - bit 8 SW, powoduje (stan ) przerwanie nr 3, z jednoczesnym zgaszeniem TF, po wykonaniu jednego rozkazu - wykorzystywany przez specjalistyczne oprogramowanie uruchomieniowe; IF - bit 9 SW, zezwala (stan ) na przyjmowanie przerwań zewnętrznych; wyzerowanie tego bitu powoduje zablokowanie przyjmowania przerwań zewnętrznych, poza tzw. przerwaniem niemaskowalnym (NMI); DF - bit 0 SW, określa czy zawartości rejestrów SI i DI w trakcie wykonywania rozkazów łańcuchowych mają być zwiększane (DF=0), czy zmniejszane (DF=). b. Wskaźników ustawianych w wyniku wykonywania różnych rozkazów: CF - wskaźnik przeniesienia globalnego, zmieniany rozkazami arytmetycznymi i przesunięć, zerowany rozkazami logicznymi; OF - wskaźnik nadmiaru, zmieniany rozkazami arytmetycznymi i zerowany rozkazami logicznymi; OF jest zmieniany również w rozkazach przesunięć, których drugi argument jest równy ; 43

6 Wstęp do systemów komputerowych SF - wskaźnik znaku (ujemnego wyniku), zmieniany rozkazami arytmetycznymi i logicznymi; ZF - wskaźnik zera wyniku, zmieniany rozkazami arytmetycznymi i logicznymi; PF - wskaźnik parzystej liczby jedynek w zapisie binarnym najmniej znaczącego bajtu wyniku, zmieniany rozkazami arytmetycznymi i logicznymi; AF - wskaźnik przeniesienia pomocniczego (z bitu 3 na 4) ustawiany na potrzeby rozkazów arytmetyki dziesiętnej Lista rozkazów Na potrzeby opisu języka wewnętrznego mikroprocesora 8086 stosuje się zapis zbliżony do zapisu stosowanego w assemblerze (MASM firmy Microsoft lub ASM86 firmy Intel), w którym rozkazy zapisywane są w następującej postaci: mnemo {id_argumentu_{,id_argumentu_2}} gdzie: mnemo - oznacza mnemoniczny skrót angielskiej nazwy funkcji rozkazu; id_argumentu_ - oznacza identyfikator argumentu ; id_argumentu_2 - oznacza identyfikator argumentu 2; nawiasami klamrowymi oznaczono elementy zapisu nie zawsze występujące. W uproszczeniu - skrót mnemoniczny (nazywany też czasem mnemonikiem), po analizie pozostałej części zapisu rozkazu, przekładany jest przez kompilator assemblera w kod operacji rozkazu, zaś identyfikatory, w miarę potrzeb, w adresy rozkazu. Zapis assemblerowy jest o tyle uzasadniony, że jest on znacznie łatwiejszy w użyciu od kodowania w zapisie szesnastkowym, zaś wszystkie narzędzia wykorzystywane do uruchamiania, czy analizy programów (tzw. debugger'y i disassembler'y) stosują tę samą, lub bardzo zbliżoną, konwencję zapisu. Identyfikatory argumentów mogą być w różnych postaciach, nazywanych trybami adresowania (chociaż poprawniejsza byłaby chyba nazwa "tryby identyfikowania argumentów"). Wyróżnia się następujące tryby adresowania:. Natychmiastowy, gdy identyfikatorem jest zadana wartość argumentu (stała), np. w rozkazie MOV AX,23 gdzie stałą podkreślono. 2. Rejestrowy, gdy identyfikatorem jest nazwa rejestru, którego zawartość ma być argumentem rozkazu np. w rozkazie MOV AX,23 gdzie podkreślono nazwę rejestru. 3. Bezpośredni, gdy identyfikatorem jest adres (OFFSET) jednostki informacji przechowywanej w pamięci, np. w rozkazie MOV AX,[23] gdzie podkreślono zapis adresu (dostęp nastąpi pod adres DS:23). 4. Bazowy, gdy identyfikatorem jest adres (OFFSET) zawarty przynajmniej częściowo w rejestrze bazowym BX lub BP, np.: MOV DX,[BX+0E2H] gdzie podkreślono zapis adresu (dostęp nastąpi pod adres DS:(bx+0E2H), gdzie bx oznacza zawartość rejestru BX). 44

7 Mikroprocesory 8086 i Indeksowy, gdy identyfikatorem jest adres (OFFSET) zawarty przynajmniej częściowo w rejestrze indeksowym SI lub DI, np.: MOV DX,[SI+0E2H] gdzie podkreślono zapis adresu (dostęp nastąpi pod adres DS:(si+0E2H), gdzie si oznacza zawartość rejestru SI). 6. Bazowo-indeksowy, gdy identyfikatorem jest adres (OFFSET) zawarty przynajmniej częściowo w jednym z rejestrów bazowych BX lub BP oraz w jednym z rejestrów indeksowych SI lub DI, np. rozkaz: MOV DX,[BX+SI+0E2H] gdzie podkreślono zapis adresu (dostęp nastąpi pod adres DS:(bx+si+0E2H), bx i si oznaczają odpowiednio zawartości rejestrów BX i SI). 7. Rozkazy o tych samych mnemonikach lecz wykorzystujące różne tryby adresacji będą miały różną postać wynikową, w szczególności mogą mieć różną długość. Należy zwrócić uwagę na kilka reguł, których należy przestrzegać pisząc rozkazy w zapisie assemblerowym : identyfikator argumentu zmienianego rozkazu, o ile taki argument występuje, musi być na miejscu bezpośrednio za mnemonikiem (jedynym rozkazem o dwóch argumentach zmienianych jest XCHG, kolejność identyfikatorów jest w tym przypadku obojętna); w pojedynczym rozkazie może wystąpić co najwyżej jedno odwołanie do danych w pamięci operacyjnej; oba argumenty w rozkazach dwuargumentowych muszą być tej samej długości (bajt lub słowo); nie może wystąpić sytuacja, w której żaden z argumentów nie ma jednoznacznie określonej długości (słowo lub bajt); w takim przypadku assemblerze identyfikator jednego z argumentów powinien być opisany za pomocą operatora PTR, np.: MOV BYTE PTR [BX],0 lub MOV WORD PTR [BX],0; w niektórych debuggerach kod operacji powinien w omawianym przypadku być rozszerzony o literę B w przypadku rozkazów bajtowych, np.: MOVB [BX],0 lub o literę W w przypadku rozkazów działających na słowach MOVW [BX],0; błędny jest zapis MOV [BX],0. Dla wspomnianego powyżej operatora PTR obowiązuje konwencja zapisu: typ PTR identyfikator_argumentu gdzie: typ {BYTE,WORD,DWORD,QWORD,TWORD,NEAR,FAR}. Argumentem zmienianym nazwano ten z argumentów, który skutkiem wykonania rozkazu ulegnie zmianie, gdyż w jego miejscu zostanie umieszczony wynik rozkazu. Pierwszy bajt pobierany z pamięci w cyklu rozkazowym przez sterowanie mikroprocesora 8086 traktowany jest jako kod operacji rozkazu. Część zbioru możliwych wartości takiego bajtu stanowi zbiór tzw. kodów niezdefiniowanych powodujących przerwanie o numerze 6. Niezdefiniowane kody operacji są fragmentami tzw. rozkazów nielegalnych, których stosowanie nie jest zalecane przez producenta. 45

8 Wstęp do systemów komputerowych Rozkazy mikroprocesora 8086 można podzielić na kilka grup, obejmujących rozkazy tego samego typu: rozkazy przenoszenia, arytmetyczne stałoprzecinkowe, arytmetyczne dziesiętne, logiczne, łańcuchowe (działające na ciągach), przenoszące niesekwencyjnie sterowanie i inne Rozkazy prefiksujące Jednobajtowe rozkazy, które zmieniają sposób wykonania następnego (w pamięci) rozkazu mikroprocesora 8086 nazwano rozkazami prefiksującymi lub prefiksami. Do grupy tej należą rozkazy SEG, LOCK i REP. Rozkazy prefiksujące nie zmieniają wartości znaczników (flag w słowie stanu). Rozkaz SEG poleca w następnym rozkazie podczas odwołania do pamięci użyć jako wartości określającej początkowy adres segmentu (SEGMENT) zawartości tego rejestru segmentowego, którego nazwa stanowi identyfikator argumentu rozkazu SEG. Format rozkazu SEG jest następujący: SEG nazwa_rejestru_segmentowego gdzie nazwa_rejestru_segmentowego {CS,DS,ES,SS}. Np. w rozkazie MOV AX,[BX] nastąpi odczytanie słowa spod adresu DS:BX do rejestru AX, natomiast w przypadku poprzedzenia tego rozkazu prefiksem SEG: SEG CS MOV AX,[BX] nastąpi odczytanie słowa spod adresu CS:BX do rejestru AX. W assemblerze nie wykorzystuje się jawnie tego rozkazu - w przypadku, gdy żądane jest użycie innego niż wynikający z domniemania rejestru segmentowego podczas odwołania do pamięci, identyfikator argumentu powinien być poprzedzony nazwą żądanego rejestru segmentowego oddzieloną odeń dwukropkiem. Odpowiednik poprzedniego przykładu to: MOV AX,CS:[BX] (omawianą konstrukcję wytłuszczono). Rozkaz LOCK poleca zająć magistralę na czas wykonywania następnego rozkazu; stosowany jest do realizacji semaforów w systemach wieloprocesorowych, typowa konstrukcja: LOCK XCHG AX,semafor zapewnia, że żaden inny użytkownik nie dostanie się do pamięci między odwołaniami rozkazu XCHG. Rozkaz REP (REPZ, REPE) poleca powtarzać następujący po nim rozkaz łańcuchowy i zmniejszać CX o do wyzerowania CX. Dla rozkazów CMPS i SCAS powtarzanie kończy się ponadto gdy ZF=0; dla tychże rozkazów powtarzanie kończyć się będzie gdy ZF=, jeśli użyty zostanie rozkaz REPNZ (lub REPNE - odmiana REP). Dla pozostałych rozkazów łańcuchowych MOVS, LODS lub STOS wykonania rozkazów REPNZ, REPNE, REPZ, REPE i REP nie różnią się Rozkazy przesyłania Rozkazy przesyłania (przenoszenia danych) to rozkazy, które powodują przeniesienie jednostek informacji (bajtów lub słów) w komputerze. Do rozkazów 46

9 Mikroprocesory 8086 i 8088 przesyłania zalicza się rozkazy MOV, XCHG, XLAT, PUSH, POP, IN i OUT. Rozkazy przesyłania nie zmieniają wartości wskaźników. Rejestry segmentowe mogą być argumentami tylko rozkazów MOV, PUSH i POP. Dwuargumentowy rozkaz MOV poleca przenieść wartość stałej do rejestru lub pamięci, zawartość rejestru do rejestru lub pamięci lub zawartość komórki pamięci do rejestru. Np.: MOV AX,5 ; wartość 0005H do AX MOV AL,5 ; wartość 05H do AL MOV AL,[5] ; bajt spod adresu DS:5 do AL MOV BX,[23] ; słowo spod adresu DS:23 do BX MOV [BX],AX ; słowo z AX pod adres DS:BX MOV BH,AL ; bajt z AL do BH w przypadku przesyłania stałej do pamięci powinna być określona długość argumentów: MOV BYTE PTR [SI],5 ; bajt 05H pod adres DS:SI MOV WORD PTR [DI],5 ; słowo 0005H pod adres DS:DI. Dwuargumentowy rozkaz XCHG poleca zamienić miejscami argumenty. Jest to jedyny rozkaz, którego oba argumenty są zmieniane - kolejność argumentów jest obojętna; żaden z argumentów nie może być stałą. Np.: XCHG AX,BX ; AX <---> BX XCHG BH,AL ; BH <---> AL XCHG AX,[23] ; AX <---> słowo spod adresu DS:23 Bezargumentowy rozkaz XLAT nazywany jest rozkazem translacji - powoduje zapisanie do AL bajtu z pamięci spod adresu DS:[BX+AL]. Zwykle w BX znajduje się adres tablicy przekodowania, początkowa wartość AL stanowi wskaźnik tej tablicy, wynikiem jest wskazywana wartość. W assemblerze można użyć argumentu (nazwy tablicy), ale nie będzie on miał znaczenia dla wykonania rozkazu - zawartość BX musi być wcześniej poprawnie ustawiona. Jednoargumentowy rozkaz PUSH powoduje odłożenie na stosie argumentu, tzn. wykonanie dwu działań: SP:=SP-2 tzn. zmniejszenie wskaźnika stosu o 2 (długość słowa); zapisanie argumentu pod adres SS:SP. Argumentem rozkazu PUSH może być rejestr lub komórka pamięci, zawsze o długości słowa, np.: PUSH AX; dla odłożenia na stosie słowa stanu należy użyć rozkazu PUSHF bez argumentu. Należy zwrócić uwagę, że w rozkazie PUSH możliwe jest niejawne podwójne odwołanie do pamięci, np.: PUSH [BX+5] powoduje odczyt spod adresu DS:(bx+5) i zapis pod adres SS:SP (po zwiększeniu SP o 2). Jednoargumentowy rozkaz POP powoduje zdjęcie ze stosu argumentu, tzn. wykonanie dwóch działań: odczytanie słowa do argumentu spod adresu SS:SP; SP:=SP+2 tzn. zwiększenie wskaźnika stosu o 2 (długość słowa). Argumentem rozkazu POP może być rejestr lub komórka pamięci, zawsze o długości słowa, np.: POP AX; dla zdjęcia ze stosu słowa stanu należy użyć rozkazu POPF bez 47

10 Wstęp do systemów komputerowych argumentu. Należy zwrócić uwagę, że w rozkazie POP możliwe jest niejawne podwójne odwołanie do pamięci. Np.: POP [BX] powoduje odczyt spod adresu SS:SP i zapis pod adres DS:BX. Rozkaz IN jest rozkazem wejścia polecającym odczytać zawartość rejestru wejściowego (zlokalizowanego w przestrzeni adresowej wejścia/wyjścia) do rejestru AL lub AX. Numer rejestru może być podany w rejestrze DX lub, jeśli jest mniejszy od 256, bezpośrednio w rozkazie: IN AL,0 ; odczytywany bajtowy rejestr nr 0, IN AX,254 ; odczytywany słowowy rejestr nr 254, IN AL,DX ; odczytywany bajtowy rejestr wg DX, IN AX,DX ; odczytywany słowowy rejestr wg DX. Rozkaz OUT jest rozkazem wyjścia polecającym zapisać zawartość AL lub AX do rejestru wyjściowego (zlokalizowanego w przestrzeni adresowej wejścia/wyjścia). Numer rejestru może być podany w rejestrze DX lub, jeśli jest mniejszy od 256, bezpośrednio w rozkazie: OUT 0,AL ; zapisywany bajtowy rejestr nr 0, OUT 254,AX ; zapisywany słowowy rejestr nr 254, OUT DX,AL ; zapisywany bajtowy rejestr wg DX, OUT DX,AX ; zapisywany słowowy rejestr wg DX Wybrane rozkazy arytmetyczne Rozkazy arytmetyczne pozwalają na wykonanie dodawania, odejmowania, mnożenia, dzielenia, porównania, wyznaczania liczby przeciwnej, zwiększania i zmniejszania o. Rozkazy arytmetyczne powodują ustawienie znaczników CF, OF, ZF, SF, PF, AF. W niniejszym podrozdziale przedstawiono niektóre rozkazy arytmetyczne wystarczające na potrzeby tworzenia programów organizacyjnych : ADD - dodawanie; ADC - dodawanie z przeniesieniem; SUB - odejmowanie; SBB - odejmowanie z przeniesieniem; CMP - porównanie; NEG - wyznaczenie liczby przeciwnej; INC - zwiększenie o ; DEC - zmniejszenie o. Rozkazy ADD, ADC, SUB, SBB i CMP są dwuargumentowe. Identyfikatory argumentów mogą dotyczyć: rejestru i stałej, dwu rejestrów, rejestru i pamięci, pamięci i stałej lub też pamięci i rejestru. Oba argumenty traktowane są jako zapisane w kodzie uzupełnieniowym i w wyniku wykonania operacji ustawiane są wskaźniki (flagi w słowie stanu) przeniesienia globalnego CF i nadmiaru OF. Do znacznika zera wyniku ZF ładowany jest rezultat badania wyniku na zero, bit znaku wyniku kopiowany jest do wskaźnika znaku SF. Ustawiany jest wskaźnik PF w zależności od liczby jedynek wyniku. Rozkaz dodawania ADD poleca wykonać dodawanie dwu argumentów i wynik umieścić w miejscu pierwszego z nich. Rozkaz dodawania z przeniesieniem 48

11 Mikroprocesory 8086 i 8088 ADC poleca wykonać dodawanie argumentów jak w rozkazie ADD i wynik powiększyć o wartość początkową wskaźnika CF. Rozkaz odejmowania SUB poleca wykonać odejmowanie dwu argumentów i wynik umieścić w miejscu pierwszego z nich. Rozkaz odejmowania z przeniesieniem SBB poleca wykonać odejmowanie od pierwszego argumentu wartości drugiego argumentu powiększonego wstępnie o wartość początkową wskaźnika CF, zaś wynik umieścić w miejscu pierwszego argumentu. Operacja rozkazu CMP wykonywana jest identycznie jak w rozkazie SUB (odejmowania) lecz wynik jest ignorowany - żaden z argumentów nie zmienia wartości, jedynym efektem jest ustawienie wskaźników w słowie stanu. Rozkazy NEG, INC i DEC są jednoargumentowe, przy czym argument może znajdować się w rejestrze (poza segmentowymi) lub pamięci. Należy zadbać o to, aby długość argumentu (BYTE lub WORD) była jednoznacznie określona, np.: DEC BYTE PTR [SI] lub INCW [BX]. Rozkaz wyznaczania liczby odwrotnej (przeciwnej) NEG powoduje wyznaczenie uzupełnienia argumentu i zapisanie go w miejscu argumentu, np.: NEG AX. Rozkazy INC i DEC powodują zwiększenie lub zmniejszenie (odpowiednio) argumentu o modulo 28 lub 26. Uwaga: rozkazy INC i DEC nie zmieniają stanu wskaźnika CF, lecz zmieniają OF, ZF, SF, PF i AF Rozkazy logiczne i przesunięcia Do rozkazów logicznych zalicza się rozkazy dokonujące: AND - iloczynu logicznego; OR - sumy logicznej; XOR - różnicy symetrycznej; TEST - sprawdzenia; NOT - negacji. Z wyjątkiem rozkazu NOT, są to rozkazy dwuargumentowe. We wszystkich tych rozkazach (poza rozkazem TEST) zmianie ulega pierwszy argument. Zmieniane są również wartości wskaźników SF, ZF i PF; wskaźniki OF i CF są zerowane, a wartość AF nieokreślona. Rozkaz TEST dokonuje, podobnie jak rozkaz AND iloczynu logicznego obu argumentów, lecz wynik tego działania jest ignorowany - jedynym efektem jest ustawienie wskaźników. Jednoargumentowy rozkaz NOT powoduje zanegowanie wszystkich bitów argumentu. Rozkazy przesunięć dzielą się na przesunięcia arytmetyczne, logiczne i obroty: SAL - przesunięcie arytmetyczne w lewo; SAR - przesunięcie arytmetyczne w prawo; SHL - przesunięcie logiczne w lewo ; SHR - przesunięcie logiczne w prawo; RCL - przesunięcie cykliczne (obrót) w lewo przez CF; RCR - przesunięcie cykliczne (obrót) w prawo przez CF; ROL - przesunięcie cykliczne (obrót) w lewo; ROR - przesunięcie cykliczne (obrót) w prawo. 49

12 Wstęp do systemów komputerowych Wszystkie rozkazy przesunięć są dwuargumentowe - pierwszym argumentem, którego zawartość podlega przesuwaniu, jest rejestr lub komórka pamięci (o długości bajtu lub słowa), drugim zaś argumentem, określającym liczbę przesunięć jest stała lub rejestr CL. Przesunięcia może odbywać się zatem o lub o zawartość rejestru CL, używaną modulo 32. Sposób wykonywania przesunięć przedstawiono na rysunkach: SHL i SAL CF 0 SAR SHR S CF CF ROR CF ROL RCR CF CF RCL CF Rozkazy przesunięć arytmetycznych i logicznych powodują ustawienie OF, ZF, SF, PF i CF, zaś AF przyjmuje nieokreśloną wartość. Rozkazy obrotów zmieniają wartości tylko wskaźników OF i CF. Wskaźnik OF jest należycie zmieniany tylko przy przesunięciach o. 50

13 Mikroprocesory 8086 i Wybrane rozkazy łańcuchowe Do rozkazów łańcuchowych, czyli działających na ciągach słów lub bajtów, zalicza się rozkazy: MOVS - przesyłania bloków; CMOS - porównywania bloków; LODS - odczytu z bloku do akumulatora; STOS - wypełniania bloku zawartością akumulatora; SCAS - poszukiwania wg akumulatora. Rozkazy łańcuchowe są rozkazami bezargumentowymi (w zapisie), dlatego wymagają określenia długości argumentu, np. przez dodanie liter B lub W do skrótu mnemonicznego rozkazu (MOVSB lub MOVSW dla rozkazu MOVS). Zawartości użytych rejestrów SI i DI, które określają położenie argumentów, zmieniane są o (w przypadku rozkazu bajtowego) lub o 2 (w przypadku słowowego). Kierunek zmian zależy od wartości znacznika DF: dla DF=0 zachodzi zwiększanie, zaś dla DF= zmniejszanie. Rozkaz MOVS powoduje wykonanie następujących działań: ES:[DI] := DS:[SI] (słowo/bajt); SI := SI±d DI := DI±d ; gdzie: d= dla rozkazu bajtowego; d=2 dla rozkazu słowowego. Rozkaz CMPS powoduje wykonanie następujących działań: wykonanie odejmowania (słów lub bajtów) DS:[SI] - ES[DI] z ignorowaniem wyniku i ustawieniem znaczników; SI := SI±d ; DI := DI±d. Rozkaz STOS powoduje wykonanie następujących działań: ES:[DI] := AL w przypadku rozkazu STOSB; ES:[DI] := AX w przypadku STOSW; DI := DI±d. Rozkaz LODS powoduje wykonanie następujących działań: AL := DS:[SI] w przypadku rozkazu STOSB; AX := DS:[SI] w przypadku STOSW; SI := SI±d. Rozkaz SCAS powoduje wykonanie odpowiednika rozkazu CMP AL,ES:[DI] lub CMP AX,ES:[DI] dla SCASB i SCASW odpowiednio (z ustawieniem znaczników) oraz zmianę wskaźnika DI := DI±d Rozkazy przenoszące sterowanie Do rozkazów przenoszących sterowanie zaliczono rozkazy skoków bezwarunkowych i warunkowych, rozkazy przerwań i powrotu. Mnemoniki rozkazów skokowych zaczynają się od litery J (Jump). Argumentami rozkazów skokowych są adresy docelowe, tzn. adresy umieszczane w liczniku rozkazów w 5

14 Wstęp do systemów komputerowych przypadku skoku efektywnego. Rozkazy skokowe nie zmieniają zawartości rejestru F (słowa stanu). Rozkaz JMP jest rozkazem skoku bezwarunkowego, pozwalającym na przeniesienie sterowania w obrębie ok. ±28 najbliższych bajtów (skok wewnątrzsegmentowy krótki SHORT o kodzie dwubajtowym), w obrębie segmentu określonego zawartością rejestru CS (skok wewnątrzsegmentowy NEAR o trzybajtowym zwykle kodzie) oraz w obszarze całej ( MB) przestrzeni adresowej pamięci mikroprocesora (skok międzysegmentowy FAR zwykle o pięciobajtowym kodzie). Adres skoku może być podany bezpośrednio w rozkazie (tej sytuacji dotyczą wcześniejsze uwagi o długości kodów rozkazowych), mówi się wówczas o skokach bezpośrednich. Rozkazy skokowe zawierające po kodzie operacji identyfikator miejsca, w którym znajduje się właściwy adres, do którego ma nastąpić przeniesienie sterowania nazywają się skokami pośrednimi. W przypadku, gdy rozkaz skokowy w swym kodzie zawiera informację o ile należy zmienić licznik rozkazów aby osiągnąć miejsce docelowe skoku, rozkaz taki nosi nazwę skoku względnego. W mikroprocesorze 8086 skoki względne mogą zawierać jednobajtową wartość zmiany, traktowaną jako liczba w kodzie uzupełnieniowym ze znakiem, co oznacza, że zmiana licznika rozkazów, a dokładniej: zawartości rejestru IP, nie może przekraczać wartości ok. 28 B "w przód" i "w tył". Krótkie (SHORT) rozkazy skoku bezwarunkowego są zawsze skokami bezpośrednimi względnymi, z uwagi jednak na prostotę posługiwania się nimi, zarówno assemblery, jak i debuggery jako argumenty takich rozkazów prezentują adresy bezwzględne np.: JMP SHORT adres. Rozkazy skoku wewnątrzsegmentowego (NEAR) są skokami bezpośrednimi, lub pośrednimi. W przypadku skoków pośrednich adres skoku może być umieszczony w rejestrze, np. JMP BX, lub w słowie pamięci, np.: JMP [BX]. Wykonanie skoków wewnątrzsegmentowych polega na umieszczeniu adresu docelowego skoku w rejestrze IP. Rozkaz skoku międzysegmentowego może być skokiem pośrednim tylko wówczas, gdy adres docelowy mieści się w pamięci - zajmuje dwa słowa, przy czym słowo mniej znaczące mieści żądaną wartość rejestru IP, zaś słowo bardziej znaczące - żądaną wartość rejestru CS. Wykonanie skoku polega na wpisaniu nowych wartości do rejestrów CS i IP (licznika rozkazów). Np.: JMP DWORD PTR [BX] lub JMP FAR adres. Skokami bezwarunkowymi w 8086 są również rozkazy CALL i RET związane z wykonywaniem podprogramów. Rozkaz CALL - wywołanie podprogramu - powoduje odłożenie na stos zawartości licznika rozkazów (wskazującego na początek następnego rozkazu po CALL) oraz skok bezwarunkowy pod adres będący argumentem rozkazu. Rozkaz ten może być skokiem bezpośrednim lub pośrednim, wewnątrzsegmentowym lub międzysegmentowym, np.: CALL adres ; wewnątrzsegmentowy, bezpośredni CALL AX ; wewnątrzsegmentowy, pośredni CALL WORD PTR adres[si] ; wewnątrzsegmentowy, pośredni CALL FAR adres ; międzysegmentowy, bezpośredni CALL DWORD PTR [BX] ; międzysegmentowy, pośredni 52

15 Mikroprocesory 8086 i 8088 skoki wewnątrzsegmentowe powodują odłożenie na stosie tylko zawartości rejestru IP, zaś skoki międzysegmentowe kolejno rejestrów CS i IP. Rozkaz powrotu z podprogramu RET jest rozkazem bezargumentowym lub jednoargumentowym, przy czym jeśli występuje argument, to jest on zawsze stałą (adresowanie natychmiastowe). Wykonuje się jako skok bezwarunkowy, przy czym zakłada się że adres skoku znajduje się na wierzchołku stosu. Występują rozkazy RET wewnątrzsegmentowe (NEAR) i międzysegmentowe (FAR); w przypadku rozkazu wewnątrzsegmentowego zakłada się, że na wierzchołku stosu znajduje się żądana nowa wartość rejestru IP; w przypadku rozkazu międzysegmentowego zakłada się, że na wierzchołku stosu znajduje się żądana nowa wartość rejestru IP, zaś bezpośrednio po niej żądana zawartość rejestru CS. Wykonanie rozkazu RET polega na zdjęciu ze stosu informacji i umieszczeniu jej w liczniku rozkazów. Ponadto, w przypadku, gdy rozkaz RET posiada argument, to jego wartość jest dodawana do zawartości rejestru SP po zdjęciu ze stosu adresu powrotu - zwykle zatem powinna być to wartość parzysta. Rozkazy skoków warunkowych w mikroprocesorze 8086 mogą być wyłącznie skokami względnymi - względem bieżącej wartości licznika rozkazów o ograniczeniu zakresu skoku do { } względem początku następnego (w pamięci) rozkazu. Warunki badane dla ustalenia efektywności wykonania rozkazu dotyczą tylko stanu wskaźników OF, CF, SF, ZF i PF w słowie stanu (rejestrze flag F) : rozkazy skoku warunkowego warunki efektywności JA, JNBE CF=0 i ZF=0 JAE, JNB, JC CF=0 JB, JC, JNAE CF= JBE, JG, JNA, JNLE CF=0 lub ZF=0 JE, JZ ZF= JGE, JNL SF=OF JL, JNGE SF OF JLE, JNG SF OF lub ZF= JNE, JNZ ZF=0 JNO OF=0 JNP, JPO PF=0 JNS SF=0 JO OF= JP, JPE PF= JS SF=. Poniżej przedstawiono rozwinięcia skrótów mnemonicznych rozkazów skoku warunkowego: JA Jump If Above; JAE Jump If Above or Equal; JB Jump If Below; JBE Jump If Below or Equal; JC Jump If Carry; JCXZ Jump if CX Register Zero; JE Jump If Equal; JG Jump If Greater; JGE Jump If Greater or Equal; JL Jump If Less; JLE Jump If Less or Equal; JNA Jump If Not Above; JNAE Jump If Not Above or Equal; JNB Jump If Not Below; 53

16 Wstęp do systemów komputerowych JNBE Jump If Not Below or Equal; JNC Jump If No Carry; JNE Jump If Not Equal; JNG Jump If Not Greater; JNGE Jump If Not Greater or Equal; JNL Jump If Not Less; JNLE Jump If Not Less or Equal; JNO Jump If No Overflow; JNP Jump If No Parity; JNS Jump If No Sign; JNZ Jump If Not Zero; JO Jump If Overflow; JP Jump If Parity; JPE Jump If Parity Even; JPO Jump If Parity Odd; JS Jump If Sign; JZ Jump If Zero. 54

17 Mikroprocesory 8086 i 8088 Specyficznym rozkazem skoku warunkowego jest jednoargumentowy rozkaz pętli LOOP. Rozkaz ten służy zwykle do zamykania pętli programowej, w której licznikiem wykonań jest rejestr CX. Wykonanie polega na zmniejszeniu rejestru CX o i zbadaniu wyniku, czy jest on różny od zera. Skok jest efektywny, gdy zawartość CX po zmniejszeniu jest różna od zera. Odmianami tego rozkazu są LOOPE i LOOPZ, w których dla efektywności skoku dodatkowo musi być spełniony warunek ZF=, oraz LOOPNE i LOOPNZ, w których dla efektywności skoku dodatkowo musi być spełniony warunek ZF=0. Rozwinięcia skrótów mnemonicznych: LOOP Loop on Count; LOOPE Loop While Equal; LOOPNE Loop While Not Equal; LOOPNZ Loop While Not Zero; LOOPZ Loop While Zero. Należy pamiętać, że rozkazy pętli, podobnie jak pozostałe rozkazy skokowe nie zmieniają wartości wskaźników (słowa stanu w rejestrze F). Wśród rozkazów skoków warunkowych jeden - JCXZ - wykonywany jest nie w zależności od wartości wskaźników, lecz w zależności od wyniku badania zawartości rejestru CX: skok jest efektywny, gdy zawartość CX jest równa zeru. W przestrzeni adresowej pamięci mikroprocesora 8086 wydzielony został obszar początkowy o pojemności KB: od adresu 00000H do 003FFH, przeznaczony na tzw. wektory przerwań. Wektorem przerwania o numerze x nazywa się zawartość dwóch kolejnych słów pamięci o adresach 4*x i 4*x+2. Numer przerwania nazywany jest także typem przerwania. Łatwo zauważyć, że w obszarze wektorów mieści się 256 wektorów przerwań. Wektor przerwania interpretowany jest zawsze jako adres międzysegmentowy (typu FAR) gdzie wartość OFFSET pamiętana jest pierwsza (adres 4*x) zaś SEGMENT jako druga (adres 4*x+2). Sekwencja przerwania o numerze x w mikroprocesorze 8086 składa się z następujących kroków: wykonanie działań odpowiadających rozkazowi PUSHF, czyli odłożenie na stos zawartości rejestru znaczników F; wykonanie działań odpowiadających wykonaniu rozkazu CALL DWORD PTR 0000H:(4*x), czyli: odłożenie na stos zawartości rejestru CS; odłożenie na stos zawartości rejestru IP; ładowanie do rejestru IP zawartości słowa o adresie 4*x, zaś do rejestru CS słowa spod adresu 4*x+2; wyzerowanie flag IF i TF. Sekwencja przerwania może zostać spowodowana sygnałem żądania przerwania wymuszanym sprzętowo, lub też zostać zainicjowana w wyniku wykonania jednoargumentowego rozkazu przerwania INT x. Argumentem rozkazu INT jest zawsze stałą (adresowanie natychmiastowe) o wartości równej numerowi żądanego przerwania, z zakresu <0..255>. Poza omawianą postacią rozkazu INT - np. INT 5, występuje postać bezargumentowa tego rozkazu: INT (tzw. breakpoint), 5

18 Wstęp do systemów komputerowych wykonywana identycznie jak rozkaz INT 3; występuje ponadto jedyny rozkaz przerwania warunkowego INTO (przerwanie przy nadmiarze), bezargumentowy, wykonywany jak INT 4 jeśli OF=, zaś nie powodujący żadnych działań jeśli OF=0. Bezargumentowy rozkaz powrotu z przerwania IRET powoduje w mikroprocesorze 8086 wykonanie sekwencji powrotu, czyli: - zdjęcie ze stosu słowa do rejestru IP; - zdjęcie ze stosu słowa do rejestru CS; - zdjęcie ze stosu słowa do rejestru znaczników F Inne wybrane rozkazy Następujące bezargumentowe rozkazy pozwalają manipulować stanem wskaźnika CF (przeniesienia globalnego) w mikroprocesorze 8086: CLC - polecający wyzerować CF; STC - powodujący ustawienie CF w stan ; CMC - powodujący zmianę stanu CF na przeciwny. W mniejszym zakresie można sterować stanami flag DF (kierunku dla rozkazów łańcuchowych) oraz IF (maski przerwań), służą do tego bezargumentowe rozkazy: CLD - zerujący DF; STD - ustawiający DF w stan ; CLI - zerujący IF; STI - ustawiający IF w stan. Rozkazem nie powodującym żadnego działania jest bezargumentowy rozkaz NOP zajmujący bajt w pamięci. Istnieje bezargumentowy rozkaz stopu HLT wprowadzający mikroprocesor w stan zatrzymania ("stopu"). W stanie stopu po wykonaniu rozkazu HLT procesor nie pobiera rozkazów, ale przyjmuje sygnały żądania przerwań zewnętrznych (NMI zawsze, pozostałe, jeśli są niezamaskowane, tzn. IF=); stan licznika rozkazów wskazuje na następny rozkaz po HLT. Sekwencja przerwania powoduje wyjście procesora ze stanu zatrzymania. 6

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu Rozkaz cmp jest opisany w grupie rozkazów arytmetycznych (załącznik do ćwiczenia 3). Rozpatrzmy rozkazy procesorów

Bardziej szczegółowo

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT Laboratorium: Wprowadzenie Pojęcia. Wprowadzone zostaną podstawowe pojęcia i mechanizmy związane z programowaniem w asemblerze. Dowiemy się co to są rejestry i jak z nich korzystać. Rejestry to są wewnętrzne

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych

Bardziej szczegółowo

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.

Bardziej szczegółowo

Sterowanie pracą programu

Sterowanie pracą programu Sterowanie pracą programu Umożliwia podejmowanie decyzji w oparciu o określone warunki. Skoki bezwarunkowe Podstawową instrukcją umożliwiającą przeniesienie sterowania do innego punktu programu oznaczonego

Bardziej szczegółowo

organizacja procesora 8086

organizacja procesora 8086 Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja

Bardziej szczegółowo

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I

Bardziej szczegółowo

Programowanie komputera

Programowanie komputera Programowanie komputera Program jest algorytmem przetwarzania danych zapisanym w sposób zrozumiały dla komputera. Procesor rozumie wyłącznie rozkazy zapisane w kodzie maszynowym (ciąg 0 i 1). Ponieważ

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat

Bardziej szczegółowo

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania

Bardziej szczegółowo

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler ASSEMBLER J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler Geneza (8086, 8088). Rejestry Adresowanie pamięci Stos Instrukcje Przerwania

Bardziej szczegółowo

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor. Zadaniem centralnej jednostki przetwarzającej CPU (ang. Central Processing Unit), oprócz przetwarzania informacji jest sterowanie pracą pozostałych układów systemu. W skład CPU wchodzą mikroprocesor oraz

Bardziej szczegółowo

Organizacja typowego mikroprocesora

Organizacja typowego mikroprocesora Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają

Bardziej szczegółowo

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot Procesor Intel 8086 model programisty Arkadiusz Chrobot 5 października 2008 Spis treści 1 Wstęp 2 2 Rejestry procesora 8086 2 3 Adresowanie pamięci 4 4 Ważne elementy języka Pascal 6 1 1 Wstęp Głównym

Bardziej szczegółowo

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania

Bardziej szczegółowo

Informacje wstępne. Historia Maszyna Turinga

Informacje wstępne. Historia Maszyna Turinga Informacje wstępne 1 Wykład obejmuje wprowadzenie do techniki mikroprocesorowej omówienie budowy i sposobu działania mikroprocesora pamięci cyfrowe magistrale urządzenia wejścia wyjścia rozwiązania stosowane

Bardziej szczegółowo

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot Procesor Intel 8086 model programisty Arkadiusz Chrobot 26 września 2011 Spis treści 1 Wstęp 2 2 Rejestry procesora 8086 2 3 Adresowanie pamięci 4 4 Ważne elementy języka Pascal 8 1 1 Wstęp Głównym celem

Bardziej szczegółowo

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 8 Jan Kazimirski 1 Assembler x86 2 Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 5 Jednostka Centralna Zadania realizowane przez procesor Pobieranie rozkazów Interpretowanie rozkazów Pobieranie danych Przetwarzanie danych Zapisanie danych Główne zespoły

Bardziej szczegółowo

Technika mikroprocesorowa I Wykład 2

Technika mikroprocesorowa I Wykład 2 Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,

Bardziej szczegółowo

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin Podstawy techniki cyfrowej Mikroprocesory Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin 1 Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji zdolny do wykonywania

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

Struktura i działanie jednostki centralnej Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala

Bardziej szczegółowo

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,

Bardziej szczegółowo

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej

Bardziej szczegółowo

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje: INSTRUKCJE Instrukcje przeniesienia: mov, lea, les, push, pop, pushf, popf Instrukcje konwersji: cbw, cwd, xlat Arytmetyczne instrukcje: add, inc sub, dec, cmp, neg, mul, imul, div, idiv Logiczne instrukcje:

Bardziej szczegółowo

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit. Architektura 8086 8086 posiada 4 rejestry ogólnego użytku AX, BX, CX, DX, 2 rejestry indeksowe SI, DI, 3 rejestry wskaźnikowe SP, BP, IP, 4 rejestry segmentowe CS, DS, SS i ES oraz rejestr flag FLAG AH

Bardziej szczegółowo

Architektura Systemów Komputerowych

Architektura Systemów Komputerowych Jarosław Kuchta Architektura Systemów Komputerowych ćwiczenie 3 Arytmetyka całkowita instrukcja laboratoryjna Wprowadzenie Celem ćwiczenia jest zapoznanie się z budową i sposobem działania jednostki arytmetyczno-logicznej

Bardziej szczegółowo

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86 Wprowadzenie do Architektury komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych grup: 1. Rozkazy przesłania danych w

Bardziej szczegółowo

Programowanie w asemblerze Architektura procesora

Programowanie w asemblerze Architektura procesora Programowanie w asemblerze Architektura procesora 17 stycznia 2017 Zwana też ISA (Instruction Set Architecture). Klasyfikacja stos; akumulator; jeśli dodatkowe rejestry specjalizowane (np. adresowy), to

Bardziej szczegółowo

Procesory rodziny x86. Dariusz Chaberski

Procesory rodziny x86. Dariusz Chaberski Procesory rodziny x86 Dariusz Chaberski 8086 produkowany od 1978 magistrala adresowa - 20 bitów (1 MB) magistrala danych - 16 bitów wielkość instrukcji - od 1 do 6 bajtów częstotliwośc pracy od 5 MHz (IBM

Bardziej szczegółowo

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze. Struktura programu typu program.com ; program według modelu tiny name "mycode" ; nazwa pliku wyjściowego (maksymalnie 8 znaków) org 100h ; początek programu od adresu IP = 100h ; kod programu ret ; koniec

Bardziej szczegółowo

1. Operacje logiczne A B A OR B

1. Operacje logiczne A B A OR B 1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Magistrala systemowa Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Asembler i koncepcja von Neumanna Wprowadzenie do programowania na

Bardziej szczegółowo

Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze

Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 10: Arytmetyka całkowitoliczbowa Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wprowadzenie Instrukcje przesunięcia bitowego

Bardziej szczegółowo

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Mikroprocesor Intel 8088 (8086)

Mikroprocesor Intel 8088 (8086) Mikroprocesor Intel 8088 (8086) Literatura: Mroziński Z.: Mikroprocesor 8086. WNT, Warszawa 1992 iapx 86,88 Users Manual Intel 80C86 Intersil 1997 [Źródło: www.swistak.pl] Architektura wewnętrzna procesora

Bardziej szczegółowo

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta

Bardziej szczegółowo

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne 1. Bit Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry w systemie (liczbowym)

Bardziej szczegółowo

Adam Kotynia, Łukasz Kowalczyk

Adam Kotynia, Łukasz Kowalczyk Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle Marcin Stępniak Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle 1. Informacje 1.1. Instrukcje skoku Instrukcje skoku zmieniają wskaźnik instrukcji w rejestrze

Bardziej szczegółowo

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86 Wprowadzenie do Architektury komputerów Asembler procesorów rodziny x86 Budowa procesora rodziny x86 Rejestry procesora 8086 ogólnego przeznaczenia Dla procesorów 32-bitowych: EAX, EBX, ECX, EDX Dla procesorów

Bardziej szczegółowo

ARCHITEKTURA PROCESORA,

ARCHITEKTURA PROCESORA, ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy

Bardziej szczegółowo

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

PROGRAMY REZYDENTNE Terminate and State Resident, TSR PROGRAMY REZYDENTNE Terminate and State Resident, TSR O co tu chodzi Podstawowe reguły Jak może program zostać rezydentnym Przechwytywanie przerwań Jak się samoznaleźć w pamięci Aktywacja TSR-u. Problemy

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda

Bardziej szczegółowo

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051

Lista rozkazów mikrokontrolera 8051 Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip

Bardziej szczegółowo

Architektura typu Single-Cycle

Architektura typu Single-Cycle Architektura typu Single-Cycle...czyli budujemy pierwszą maszynę parową Przepływ danych W układach sekwencyjnych przepływ danych synchronizowany jest sygnałem zegara Elementy procesora - założenia Pamięć

Bardziej szczegółowo

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ćwiczenie 3. Konwersja liczb binarnych 1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się

Bardziej szczegółowo

Programowanie mikrokontrolera 8051

Programowanie mikrokontrolera 8051 Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady

Bardziej szczegółowo

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4 Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz] Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową

Bardziej szczegółowo

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD AAA ASCII adjust after addition 37 AAA Koryguj AL po dodawaniu BCD AAA powoduje korekcję znajdującego się w AL wyniku dodawania dwóch liczb, o ile dodawane są liczby BCD. Dopiero po korekcji wynik będzie

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie

Bardziej szczegółowo

LEKCJA TEMAT: Współczesne procesory.

LEKCJA TEMAT: Współczesne procesory. LEKCJA TEMAT: Współczesne procesory. 1. Wymagania dla ucznia: zna pojęcia: procesor, CPU, ALU, potrafi podać typowe rozkazy; potrafi omówić uproszczony i rozszerzony schemat mikroprocesora; potraf omówić

Bardziej szczegółowo

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Architektura komputera Architektura von Neumanna: Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Zawartośd tej pamięci jest adresowana przez wskazanie miejsca, bez względu

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury Marcin Stępniak Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury 1. Informacje 1.1. Stos Stos jest strukturą danych, w której dane dokładane są na wierzch stosu

Bardziej szczegółowo

BUDOWA I DZIAŁANIE MIKROPROCESORA

BUDOWA I DZIAŁANIE MIKROPROCESORA BUDOWA I DZIAŁANIE MIKROPROCESORA I. Budowa mikroprocesora 1. Schemat blokowy mikroprocesora 2. Jednostka arytmetyczno-logiczna 3. Rejestry a) Rejestry mikroprocesorów Zilog Z80 i Intel 8086 b) Typy rejestrów

Bardziej szczegółowo

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego

Bardziej szczegółowo

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC Wprowadzenie do architektury komputerów Model programowy procesora i jego struktura Procesory CISC i RISC Użytkowy model programowy Użytkowym modelem programowym nazywamy zestaw zasobów logicznych komputera

Bardziej szczegółowo

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski Układ sterowania, magistrale i organizacja pamięci Dariusz Chaberski Jednostka centralna szyna sygnałow sterowania sygnały sterujące układ sterowania sygnały stanu wewnętrzna szyna danych układ wykonawczy

Bardziej szczegółowo

Architektura Systemów Komputerowych

Architektura Systemów Komputerowych Architektura Systemów Komputerowych Wykład 4: Struktura użytkowego modelu programowego komputera Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Pojęcie użytkowego

Bardziej szczegółowo

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów

Bardziej szczegółowo

Ćwiczenie nr 4. Zasady kodowania podprogramów

Ćwiczenie nr 4. Zasady kodowania podprogramów Ćwiczenie nr 4 Zasady kodowania podprogramów 4.1 Wstęp W praktyce programowania spotykamy się często z sytuacjami, gdy identyczne czynności wykonywane są w wielu miejscach programu. W takich przypadkach

Bardziej szczegółowo

UTK jednostki wykonawczej EU (Ex ecution Unit), jednostki steruj c ej CU,

UTK jednostki wykonawczej EU (Ex ecution Unit), jednostki steruj c ej CU, Podstawowa budowa procesora sprowadza si ę do jednostki wykonawczej EU (Execution Unit), która przetwarza informacje wykonując wszelkie operacje arytmetyczne i logiczne oraz jednostki sterują cej CU, która

Bardziej szczegółowo

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

1. Asembler i wstawki asemblerowe w C

1. Asembler i wstawki asemblerowe w C Opublikowano w: WEREWKA J..: Programowanie sprzętu komputerowego dla automatyków. Skrypt AGH Nr 1514, Kraków 1998 1. Asembler i wstawki asemblerowe w C Asembler jest językiem programowania na poziomie

Bardziej szczegółowo

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q 1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone

Bardziej szczegółowo

Metody Realizacji Języków Programowania

Metody Realizacji Języków Programowania Metody Realizacji Języków Programowania Bardzo krótki kurs asemblera x86 Marcin Benke MIM UW 10 stycznia 2011 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 10 stycznia 2011 1 / 22 Uwagi

Bardziej szczegółowo

Przykładowe pytania DSP 1

Przykładowe pytania DSP 1 Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..

Bardziej szczegółowo

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24 ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe komputerów ASK MP.02 c Dr inż. Ignacy Pardyka 1 UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach 2 Literatura Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka

Bardziej szczegółowo

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość

Bardziej szczegółowo

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (http://www.cs.put.poznan.pl/mantczak/teaching/itc/masm.zip).

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (http://www.cs.put.poznan.pl/mantczak/teaching/itc/masm.zip). J.Nawrocki, M. Antczak, G. Palik, A. Widelska Plik źródłowy: 07cw4-asm.doc; Data: 2007-09-26 6:00 Ćwiczenie nr 4 Język asemblera Środowisko uruchomieniowe 1. Pobrać plik masm.zip (Macro Assembler 6.15

Bardziej szczegółowo

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie: Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

Mikrokontroler ATmega32. Język symboliczny Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami

Bardziej szczegółowo

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia. ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb

Bardziej szczegółowo

1259 (10) = 1 * * * * 100 = 1 * * * *1

1259 (10) = 1 * * * * 100 = 1 * * * *1 Zamiana liczba zapisanych w dowolnym systemie na system dziesiętny: W systemie pozycyjnym o podstawie 10 wartości kolejnych cyfr odpowiadają kolejnym potęgom liczby 10 licząc od strony prawej i numerując

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 4 Tryby adresowania i formaty Tryby adresowania Natychmiastowy Bezpośredni Pośredni Rejestrowy Rejestrowy pośredni Z przesunięciem stosowy Argument natychmiastowy Op Rozkaz

Bardziej szczegółowo

Magistrala systemowa (System Bus)

Magistrala systemowa (System Bus) Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki

Bardziej szczegółowo

Podstawy Informatyki

Podstawy Informatyki Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 1 / 42 Reprezentacja liczb całkowitych

Bardziej szczegółowo

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy 1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć

Bardziej szczegółowo

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka PAMIĘCI Część 1 Przygotował: Ryszard Kijanka WSTĘP Pamięci półprzewodnikowe są jednym z kluczowych elementów systemów cyfrowych. Służą do przechowywania informacji w postaci cyfrowej. Liczba informacji,

Bardziej szczegółowo

Systemy wbudowane. Przykłady kodu Assembler

Systemy wbudowane. Przykłady kodu Assembler Systemy wbudowane Przykłady kodu Assembler Wstęp Slowo assembly w języku angielskim oznacza składać, montować W odniesieniu do języka programowania słowo to odnosi się do niskopoziomowego języka programowania

Bardziej szczegółowo