5. Mikroprocesory 8086 i 8088
|
|
- Teodor Tomczyk
- 7 lat temu
- Przeglądów:
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 Rozkaz cmp jest opisany w grupie rozkazów arytmetycznych (załącznik do ćwiczenia 3). Rozpatrzmy rozkazy procesorów
Bardziej szczegółowoArchitektura 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ółowoArchitektura 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ółowoRejestry 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ółowoSterowanie 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ółowoorganizacja 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ółowoProgramowanie 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ółowoSprzę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ółowoProgramowanie 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ółowoArchitektura 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ółowoSprzę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ółowoArchitektura 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ółowoJ. 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ółowoUTK 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ółowoOrganizacja 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ółowoProcesor 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ółowoZadanie 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ółowoInformacje 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ółowoTechnika 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 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ółowoProcesor 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ółowoMOŻ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ółowoArchitektura 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ółowoArchitektura 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ółowoTechnika 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ółowoPodstawy 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ółowoStruktura 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ółowoArchitektura 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ółowoCPU 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ółowoINSTRUKCJE 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ółowoCPU. 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ółowoArchitektura 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ółowoWprowadzenie 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ółowoProgramowanie 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ółowoProcesory 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ółowoend 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ółowo1. 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ółowoJerzy 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ółowoLista 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ółowoProgramowanie 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ółowoLista 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ółowoLogiczny 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ółowoMikroprocesor 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ółowoUkł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ółowoWprowadzenie 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ółowoAdam 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ółowoArchitektura 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ółowoWprowadzenie 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ółowoARCHITEKTURA 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ółowoPROGRAMY 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ółowoProgramowanie 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ółowoArchitektura 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ółowoArchitektura 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ółowoLista 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ółowoArchitektura 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ółowoPODSTAWOWE 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
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ółowoProgramowanie 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ółowoPrzedmiot : 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ółowoMikroprocesor 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ółowoProgramowanie 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ółowoProcesor 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ółowoKod 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ółowoPodstawowe 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ółowoLEKCJA 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ółowoArchitektura 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ółowoArchitektura 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ółowoBUDOWA 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ółowoSpis 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ółowoLista 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ółowoWprowadzenie 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ółowoUkł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ółowoArchitektura 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ółowoDodatek 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 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ółowoUTK 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ółowoInstrukcja 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ółowo1. 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ółowoLABORATORIUM 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ółowoMetody 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ółowoPrzykł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ółowo2 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ółowoCYKL 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ółowo1. 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ółowoKod 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ółowoMikrokontroler 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ółowoARYTMETYKA 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ółowo1259 (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ółowo4 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ółowoPodstawy 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ółowoArchitektura 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ółowoAdresowanie 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ółowoLuty 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ółowoArchitektura 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ółowoMagistrala 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ółowoPodstawy 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ółowoWstę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ółowoWprowadzenie 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ółowoPAMIĘ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ółowoSystemy 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