-9 0.001953125 -8 0.00390625 -7 0.0078125 -6 0.015625 -5 0.03125 -4 0.0625 -3 0.125 -2 0.25 -1 0.5 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024 11 2048 12 4096 13 8192 14 16384 15 32768 16 65536 17 131072 18 262144 19 524288 20 1048576 |
- W operacjach arytmetyki dziesiętnej stosowany jest kod dziesiętny kodowany dwójkowo tzw. kod BCD (binary coded decimal), w którym liczba zapisana jest w postaci ciągu grup czterobitowych (nazywanych czasem tetradami) zawierających kod cyfry dziesiętnej każda. Po ciągu grup zawierających cyfry następuje pojedyncza grupa zawierająca kod znaku (również czterobitowy). - W komputerach ODRA podstawowym kodem jest sześciobitowa reprezentacja kodu ISO, w komputerach IBM - rozszerzony kod ASCII (American Standard Code for Information Interchange - ośmiobitowy) lub kod EBCDIC (Extended Binary Coded Decimal Interchange Code). - Pamięcią operacyjną (główną) PAO nazywa się blok funkcjonalny komputera złożony z rejestrów jednakowej długości; każdy z tych rejestrów (nazywany też komórką pamięci) opatrzony jest unikalnym numerem nazywanym adresem. W skład pamięci wchodzi też niezbędny osprzęt umożliwiający dokonywanie niezbędnych operacji dostępu do pamięci - Dostępem do pamięci nazywa się operację odczytu lub zapisu z lub do komórek pamięci. Odczyt z pamięci polega na eksponowaniu na wyjściu danych pamięci zawartości komórki, której adres został zadany na wejściu adresowym pamięci na początku operacji odczytu. Zapis do pamięci polega na wpisaniu informacji podanej na wejście danych pamięci do komórki, określonej adresem podanym na wejście adresowe pamięci. Zawartość pamięci zmienia się tylko w przypadku zapisów, tylko we wskazanych adresami komórkach. Pojedynczy dostęp do pamięci może dotyczyć więcej niż jednej komórki pamięci - maksymalna liczba bitów pamięci (sumaryczna długość komórek) do której można dokonać zapisu lub odczytu w jednym dostępie nosi nazwę szerokości dostępu do pamięci. - linią nazywa się jednobitową drogę przesyłania sygnałów (jej realizacją techniczną jest zwykle po prostu przewód); - szyną nazywa się zbiór linii niosących informację funkcjonalnie rozpatrywaną łącznie i zwykle zsynchronizowaną w czasie - np. szyna adresowa lub szyna danych; - magistrale - składające się zwykle z szyny danych, szyny adresowej i szyny sygnałów sterujących. - Jednostka Arytmetyczno-Logiczna (JAL) jest blokiem funkcjonalnym komputera zdolnym do wykonywania operacji na ciągach zerojedynkowych: logicznych, przesunięć, arytmetycznych, konwersji i operacji na adresach. Operacja konwersji wykonywana przez JAL jest działaniem jednoargumentowym nie spełniającym zasady jednorodności argumentu i wyniku - służy do przekształcenia informacji zapisanej w pewnej postaci na równoważny zapis innej postaci. - Zespół wejścia/wyjścia jest blokiem funkcjonalnym komputera zarządzającym kontaktami z urządzeniami zewnętrznymi (w ramach całego zespołu wejścia/wyjścia wyróżnia się zwykle mniejsze zespoły nazwane kanałami, których działanie może być zarządzane programowo przez programy oddzielnie. Programista widzi raczej zbiór kanałów niż całość zespołu wejścia/wyjścia) - Sterowanie jest blokiem funkcjonalnym komputera zarządzającym wykonywaniem podstawowych działań przez całość sprzętu komputera, zwykle z wyłączeniem kontaktów z urządzeniami zewnętrznymi (sterowanych przez zespół wejścia/wyjścia). Do podstawowych działań komputera w wymienionym tu sensie zalicza się wykonywanie rozkazów i tzw. sekwencji przerwań, które są działaniami powodującymi radykalną zmianę stanu komputera, a zachodzą w wyniku wykonania niektórych rozkazów lub nadejścia pewnych sygnałów z otoczenia procesora. Sterowanie pobiera z pamięci kolejne (chronologicznie) rozkazy do wykonania i na ich podstawie oraz na podstawie stanu komputera generuje sygnały sterujące do pozostałych bloków funkcjonalnych, wymuszając właściwe ich działania. - Rozkazem nazywa się ciąg zerojedynkowy pobrany z pamięci w celu określenia na jego podstawie dalszych działań procesora. Takie rozumienie rozkazu jest właściwe sprzętowcom - z punktu widzenia programistów rozkazem jest ciąg zerojedynkowy przewidziany do wykonania jako rozkaz. - cyklrozkazowy: * - pobranie z pamięci rozkazu według ustalonego wcześniej adresu (PAO) - wyznaczenie adresu argumentów i wyniku (JAL); - odczytanie argumentów z pamięci (PAO); * - wykonanie operacji właściwej pobranemu rozkazowi, inaczej mówiąc: właściwej tzw. kodowi operacji rozkazu (zwykle JAL); - zapisanie wyniku do pamięci (PAO); * - ustalenie adresu następnego rozkazu. - John von Neumann 1. Wspólna pamięć do przechowywania zarówno rozkazów jak i danych. 2. Pamięć jednowymiarowa, złożona z kolejno ponumerowanych komórek o jednakowej wielkości. 3. Brak jawnego rozróżniania rozkazów i danych. 4. Brak jawnej specyfikacji typów danych. 5. Praca sekwencyjna - przed rozpoczęciem wykonywania kolejnego rozkazu musi zostać zakończone wykonywanie rozkazu chronologicznie poprzedniego. Każdy rozkaz określa jednoznacznie adres następnego. - Procesor wraz z pamięcią i zespołem wejścia/wyjścia stanowi jednostkę centralną - czas_dostępu - czas od chwili pojawienia się sygnału (sterującego) żądania dostępu (zwykle odczytu) na wejściu pamięci gotowej do jego obsługi, do chwili ekspozycji informacji na wyjściu pamięci; czas_cyklu - czas od chwili pojawienia się sygnału żądania dostępu na wejściu pamięci gotowej do jego obsługi, do chwili gotowości na przyjęcie następnego żądania. Zawsze czas cyklu jest większy lub równy czasowi dostępu. Na wspomnianą wcześniej hierarchię składają się: 1. Rejestry procesora: zarówno niewidoczne (rejestry robocze procesora), jak i widoczne dla programisty (rejestry programowe, m. in. akumulatory), w liczbie ok. 8-64, o czasach dostępu ok. 5 ns; 2. Szybkie pamięci buforowe (caches): urządzenia pamiętające niedostrzegalne dla programisty, przyspieszające współpracę procesora z pamięcią operacyjną; pojemność szybkich pamięci buforowych wynosi 0.5-64 KB, zaś czas dostępu ok. 100 ns. 3. Pamięci operacyjne (główne) o pojemnościach od 64 KB do wielu MB w dużych komputerach, o czasach dostępu 0.2 - 0.5 μs; 4. Pamięci o dużej pojemności (Large Capacity Storage - LCS) rzadko obecnie stosowane, o pojemności kilkakrotnie większej niż pojemność pamięci operacyjnej i czasie dostępu równym ok. 2 - 5 μs; 5. Pamięci dyskowe o pojemności od 360 KB do 4 GB i czasie dostępu ok. 40 ms; 6. Pamięci taśmowe o czasie dostępu ok. 2 s. Pamięci 1.-4. zaliczane są do tzw. pamięci wewnętrznej komputera, pozostałe zaś nazywane są pamięciami zewnętrznymi. Kryterium rozdziału na pamięć zewnętrzną i wewnętrzną jest to, czy dostęp do przechowywanej przez nie informacji wymaga, czy też nie, współdziałania zespołu wejścia/wyjścia. - Procesorem nazywa się połączone razem: jednostkę arytmetyczno-logiczną i sterowanie komputera - deszyfrator stanu - urządzenie zbierające sygnały o tym co się dzieje w komputerze; generator impulsów synchronizujących (pętla sterująca w większych komputerach, tzw. zegar z rezonatorem kwarcowym w mikrokomputerach) - urządzenie generujące precyzyjnie rozmieszczone w czasie ciągi impulsów; konstrukcja zawierająca mikroprogramy działania (pamięć stała, sieć logiczna lub rozdzielacz sterujący); układy synchronizacji generujące właściwe sygnały sterujące na podstawie mikroprogramów, zsynchronizowane w czasie na podstawie sygnałów z generatora. - Mikrooperacją nazywa się podstawowe działanie, do którego zdolny jest dowolny zespół funkcjonalny komputera. Mikrorozkazem nazywa się pewną liczbę mikrooperacji wzajemnie się nie wykluczających, tzn. takich, które np. mogą być wykonane w tym samym czasie. Mikroprogramem nazywa się ciąg mikrorozkazów. - licznik rozkazów - rejestr jednoznacznie określający adres kolejnego rozkazu do wykonania. - Stanem sterowania nazywa się bieżącą wartość części spośród rejestrów sterowania. Stan sterowania definiowany jest dla każdego komputera indywidualnie, zawsze jednak w jego skład wchodzi zawartość licznika rozkazów. - sygnałem żądania przerwania nazywa się dowolny z sygnałów powodujący (w sprzyjających warunkach - tzn. gdy nie istnieje wyraźny zakaz) wykonanie tzw. sekwencji przerwania. Sekwencją przerwania nazywa się szereg działań sprzętowych, radykalnie zmieniających stan sterowania komputera. Na sekwencję przerwania składa się: - zapamiętanie w ściśle określonym miejscu (zwykle pamięci) aktualnego stanu sterowania; - wymuszenie nowego stanu procesora (sterowania). Sekwencja przerwania, jeśli jest dozwolona, wykonywana jest zawsze "między" rozkazami (aktualnie wykonywany rozkaz musi być zakończony). - W zależności od przyczyny przerwania dzielą się na przerwania zewnętrzne - gdy sygnał żądania przerwania generowany jest w wyniku przyczyny zewnętrznej względem procesu wykonywania rozkazów w procesorze, oraz przerwania wewnętrzne - gdy sygnał żądania przerwania generowany jest na polecenie programisty w wyniku wykonania odpowiedniego rozkazu. Jeśli jednocześnie występują sygnały żądań przerwań oby rodzajów, to sekwencje przerwań wewnętrznych wykonywane są zawsze przed sekwencjami przerwań zewnętrznych. Przerwania zewnętrzne zwykle podzielone są na pewne podzbiory (noszące czasem nazwę klas przerwań lub poziomów przerwań). Przerwania należące do każdej z tych klas mogą zostać zablokowane w wyniku wpisania odpowiedniej wartości zwanej maską przerwania do specjalnego rejestru maski przerwań. Sygnał żądania przerwania jest iloczynowany logicznie z przydzielonym mu bitem maski - jeśli wynik jest zerem, to sygnał jest ignorowany. Zwykle z każdym przerwaniem związany jest też tzw. priorytet przerwania czyli liczba decydująca o kolejności wykonania sekwencji przerwania przy jednoczesnej obecności kilku sygnałów żądania przerwania. Systemem przerwań komputera nazywa się zespół wszystkich ustaleń związanych z przerwaniami obowiązujący w komputerze. W jednopoziomowych systemach przerwań istnieją dwa wyróżnione stany sterowania: w jednym z nich przerwania są dozwolone, w drugim - zabronione. W wielopoziomowych systemach przerwań istnieje kilka stanów, w których dozwolone są różne przerwania. - Zespół wejścia/wyjścia składa się z tzw. koordynatora kanałów (stanowiącego w rzeczywistości sterowanie lokalne zespołu) oraz kanałów. Kanałem nazywa się zespół zarządzający komunikacją z jednym lub wybraną grupą urządzeń. Kanał po zainicjowaniu pracy (transmisji) kontaktuje się z urządzeniem i pamięcią organizując przesyłanie informacji między nimi bez angażowania procesora - Transmisję z urządzenia zewnętrznego do pamięci nazywa się transmisją wejściową, zaś z pamięci do urządzenia - transmisją wyjściową. Transmisja dotyczy spójnego obszaru pamięci. - Kanały multiplekserowe są to kanały znakowe zdolne do współpracy ze specjalnym urządzeniem zewnętrznym nazywanym multiplekserem, do którego można z kolei dołączyć większą liczbę typowych urządzeń zewnętrznych. Kanał multipleksera widziany jest przez programistę jako cały zbiór kanałów znakowych - Przestrzenią adresową pamięci nazywamy zbiór wszystkich możliwych adresów, które mogą zostać wygenerowane przy dostępie do pamięci. |
-Kanały selektorowe (R-32) są zespołami zbudowanymi podobnie jak kanał autonomiczny z tą różnicą, że do kanału może być dołączona większa liczba Pojęcia podstawowe 37 urządzeń zewnętrznych (zwykle do 256). W dowolnej chwili kanał może prowadzić transmisję tylko z jednym z tych urządzeń (posiada tylko jeden zestaw rejestrów koniecznych do realizacji transmisji). - sekwencja przesłania (po sygnalizacji przez urządzenie gotowości do przesłania znaku): 1 - odbiór jednostki informacji (danych) z urządzenia; 2 - odczytanie adresu transmisji z PAO; 3 - zapisanie danych do pamięci (w razie potrzeby odczyt-modyfikacja-zapis); 4 - zwiększenie adresu +1; 5 - zapisanie adresu transmisji do PAO; 6 - odczytanie licznika transmisji z PAO; 7 - zmniejszenie licznika -1; 8 - zapisanie licznika transmisji do PAO; 9 - jeśli licznik się wyzerował - wygenerowanie sygnału żądania przerwania. |
ZIMNY - POST: test po włączeniu zasilania (Power-On-Self Test), w którym inicjowane są wszystkie podzespoły zainstalowane na płycie głównej i przeprowadzane jest sprawdzenie poprawności ich pracy - łatwo zauważalny jest test pamięci RAM i jej rozszerzenia powyżej 1 MB (występuje tylko w AT); słowo pamięci o adresie bezwzględnym 00472H (Reset Flag) po włączeniu zasilania ma wartość nieokreśloną i zwykle różną od 1234H (wartość 1234H w słowie 00472H powoduje pominięcie przez POST testu pamięci w procedurze tzw. "gorącego restartu"); - ustawienie wektorów przerwań BIOS'u, pozostałe wektory ustawiane na "puste" podprogramy obsługi (składające się tylko z IRET); - ustalenie konfiguracji; - dołączenie oprogramowania z kart rozszerzeń: obszar pamięci przewidziany na rozszerzenia (od 0A0000H) jest sprawdzany co 256 B, czy nie zawiera odpowiedniego nagłówka, rozpoczynającego się od słowa 55AAH - jeśli tak, to następuje wywołanie podprogramu inicjującego mieszczącego się pod adresem zapisanym w tym nagłówku; podprogram inicjujący kartę rozszerzeń powoduje inicjalizację podzespołów karty, sprawdzenie ich sprawności i ustawienie odpowiednich wektorów przerwań; - próba odczytania z mechanizmu dyskowego A: rekordu ze ścieżki zerowej (boot record), zawierającego prosty program ładujący; w razie powodzenia sterowanie jest przekazywane do tego programu; - w razie niepowodzenia próby odczytu z dysku A: dokonywana jest identyczna próba odczytu z dysku C: - w razie niepowodzenia próby odczytu z dysku C: następuje próba uruchomienia interpretera języka BASIC z pamięci RAM; - w razie niepowodzenia uruchomienia interpretera BASIC'a (niewiele IBM'ów jest wyposażanych w ten program w pamięci stałej) następuje wypisanie komunikatu (na monitorze) z żądaniem włożenia do mechanizmu A: dyskietki systemowej a następnie oczekiwanie na spełnienie tego żądania.
Jego część inicjująca rozmieszcza w pamięci część roboczą i zmienia odpowiednie wektory przerwań, organizuje pamięć m. in. odczytując z dysku i uwzględniając zawartość tzw. zbioru konfiguracji CONFIG.SYS. Zawartość tego zbioru może ustalać m. in. liczbę buforów DOS'u a także jakie dodatkowe elementy oprogramowania (tzw. driver'y związane z urządzeniami zewnętrznymi) powinny być "doładowane" z dysku.
Procedura startu kończy się automatycznym powołaniem interpretera komend dla wykonania działań jak dla komendy AUTOEXEC.BAT. Jeśli taki zbiór nie istnieje, procedura startu kończy się bez jego wykonania; jeśli istnieje - wykonywany jest zgodnie z zasadami wykonania makrokomend (batch files) DOS'u.
GORACY Procedura startu po naciśnięciu kombinacji klawiszy Alt-Ctrl-Del, tzw. "gorący restart" różni się od zimnego startu tym, że przed wywołaniem normalnej procedury "zimnego startu" w słowie o adresie 0:472H (Restart Flag w danych BIOS'u) ustawiana jest wartość 1234H, przy której POST pomija czasochłonny test pamięci.
5. Główne DOS'u o numerach 32, 33, 37-39 (20H, 21H, 25H-27H). Szczególnie ważne są przerwania: - 33 (21H): tzw. przerwanie osłonowe lub usługowe - stanowi żądanie wykonania przez DOS jednej z funkcji usługowych o numerze zadanym w rejestrze AH; - 32 (20H): żądanie normalnego zakończenia pracy programu użytkowego; - 39 (27H): żądanie zakończenia pracy programu użytkowego z pozostaniem w miejscu (z przesunięciem początku TPA wg zawartości rejestru DX).
Programy typu .COM powinny zawierać się w obszarze nieco mniejszym niż 64 KB pamięci, a ich miejscem startu powinien być pierwszy rozkaz segmentu kodu. Zawartość zbioru dyskowego programu jest kopiowana bez analizy zawartości w obszar pamięci rozpoczynający się bezpośrednio za PSP, a wszystkie rejestry segmentowe ustawiane na tą samą wartość: część SEG adresu początkowego PSP. Rejestr IP ustawiany jest na wartość 100H (256), czyli wskazuje na pierwszy bajt za PSP. Programy typu .EXE są ograniczone co do rozmiaru tylko pojemnością dostępnej w czasie ładowania pamięci (TPA). Zbiór dyskowy takiego programu zawiera nie tylko informację przewidzianą do załadowania do pamięci, ale także informacje opisujące m. in. budowę programu, żądane zawartości rejestrów segmentowych i miejsce startu. Segment kodu programu umieszczany jest bezpośrednio za PSP, zatem rejestr CS zawiera część SEG adresu pierwszego bajtu po PSP. Z programu typu .EXE nie jest bezpośrednio dostępna (bez zmiany zawartości rejestrów segmentowych) zawartość PSP.
? lokalizacja: • w procesorze (rejestry, pamięć podręczna, pamięć ROM mikroprogramu), • na płycie głównej (pamięć operacyjna), • na zewnętrz, w postaci osobnego urządzenia (pamięć dyskowa), ? rozdzielone/wspólne wejście i wyjście - szyna zapisu / odczytu danych (wspólne bardzo ułatwia dołączenie do systemu); ? fizyczny sposób zapisu, pod tym względem rozróżniamy pamięci: • magnetyczna (dysk, taśma), • optyczna (CDROM), • półprzewodnikowa statyczna (SRAM), (stan układu przerzutnika) - ulotna, NVSRAM - nieulotna, • półprzewodnikowa dynamiczna (DRAM), ulotna, nietrwała - wymaga odświeżania; • półprzewodnikowa stała - nieulotna, trwale zapisana stanem układu; ? Pamięć rejestrowa procesora - statyczna, ulotna, kilkanaście, kilkadziesiąt rejestrów 32 lub 64 bitowych, czas dostępu - ułamki nanosekundy (najszybsza). ? Pamięć podręczna pierwszego poziomu (L1) (ang. Primary cache memory) - pojemność kilkadziesiąt KB (np. Pentium III - 32KB, AMD Athlon - 128KB, Pentium 4 - 20KB), czas dostępu rzędu nanosekund, asocjacyjna SRAM zintegrowana z procesorem; ? Pamięć podręczna drugiego poziomu (ang. Secondary cache memory) - SRAM 256KB, 512KB, 1MB, 2MB, zintegrowana z procesorem; ? Pamięć ROM (ang. Read-only memory) - stała, dostęp swobodny, kilkaset KB, osobno; ? Pamięć główna RAM (ang. Random access memory) - ulotna pamięć dynamiczna, dostępie swobodny (DRAM), pojemności 128MB, 256MB, 512MB, 1GB zintegrowanych w specjalnych bankach SIMM, DIMM, DDR, RIMM, wymaga odświeżania, czas odświeżania całej pamięci decyduje o szybkości (kilkadziesiąt ns); ? Pamięć flash - kilkaset MB, nieulotna, wymienna, USB, dostęp swobodny, szybki odczyt, wolniejszy zapis, USB ogranicza szybko; ? Pamięć dyskowa - nieulotna, dostęp bezpośredni, kilkadziesiąt kilkaset GB, czas dostępu rzędu - ms; ? Pamięć wymienna: dyskowa, optyczna, tamowa - długi czas dostępu, wymagana interwencje operatora.
INTR - przerwanie zewnętrzne, maskowalne wprowadzane do mikroprocesora przez wejście. Może być ono zablokowane programowo rozkazem CLI, który zeruje znacznik przerwania IF. |
|
|
- 1. 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 1 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 1 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 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 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. 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 - Rozkaz JMP jest rozkazem skoku bezwarunkowego, pozwalającym na przeniesienie sterowania w obrębie ok. ±128 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 (1 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 - 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 1 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=1, 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. - 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. - 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), 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=1, 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. -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 1; 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 1; CLI - zerujący IF; STI - ustawiający IF w stan 1. Rozkazem nie powodującym żadnego działania jest bezargumentowy rozkaz NOP zajmujący 1 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 stan licznika rozkazów wskazuje na następny rozkaz po HLT. Sekwencja przerwania powoduje wyjście procesora ze stanu zatrzymania. |
|
1 K oznacza 2^10, czyli 1024 1 M oznacza 2^20, czyli 1048576 1 G 1073741824 |
|
|
|
JA, JNBE CF=0 i ZF=0 JAE, JNB, JC CF=0 JB, JC, JNAE CF=1 JBE, JG, JNA, JNLE CF=0 lub ZF=0 JE, JZ ZF=1 JGE, JNL SF=OF JL, JNGE SF?OF JLE, JNG SF?OF lub ZF=1 JNE, JNZ ZF=0 JNO OF=0 JNP, JPO PF=0 JNS SF=0 JO OF=1 JP, JPE PF=1 JS SF=1. |
|
|
|
nie mozna do segmentu pisac wartosci bezpośrednio: mov ds, 0 ale mozna: mov bx, 0 mov ds, bx |
|
|
|