Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
notatki:assembler8086 [2025/05/07 13:15] – administrator | notatki:assembler8086 [2025/05/07 13:18] (aktualna) – [Symulator SMZ32V50] administrator | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | Oto artykuł na temat procesora 8086, jego konstrukcji i działania programów w assemblerze w formacie DokuWiki: | ||
- | |||
- | --- | ||
- | |||
===== Procesor 8086: Konstrukcja i działanie ===== | ===== Procesor 8086: Konstrukcja i działanie ===== | ||
Linia 10: | Linia 6: | ||
Procesor 8086 posiada szereg cech, które zdefiniowały jego architekturę: | Procesor 8086 posiada szereg cech, które zdefiniowały jego architekturę: | ||
+ | |||
* Rejestry : Procesor posiada 14 głównych rejestrów, w tym rejestry ogólnego przeznaczenia (AX, BX, CX, DX, SI, DI, BP, SP), rejestry segmentowe (CS, DS, SS, ES) oraz rejestr wskaźnika instrukcji (IP). | * Rejestry : Procesor posiada 14 głównych rejestrów, w tym rejestry ogólnego przeznaczenia (AX, BX, CX, DX, SI, DI, BP, SP), rejestry segmentowe (CS, DS, SS, ES) oraz rejestr wskaźnika instrukcji (IP). | ||
+ | |||
* Adresowanie pamięci : Procesor używa segmentowego adresowania pamięci, co oznacza, że cała pamięć 8086 jest podzielona na segmenty (do 1 MB pamięci). Adresy pamięci są tworzone przez 16-bitowy rejestr segmentu oraz 16-bitowy rejestr offsetu. | * Adresowanie pamięci : Procesor używa segmentowego adresowania pamięci, co oznacza, że cała pamięć 8086 jest podzielona na segmenty (do 1 MB pamięci). Adresy pamięci są tworzone przez 16-bitowy rejestr segmentu oraz 16-bitowy rejestr offsetu. | ||
+ | |||
* Cykl pracy : 8086 działa na zasadzie cykli zegara, w których wykonuje operacje odczytu, zapisu i wykonywania instrukcji. | * Cykl pracy : 8086 działa na zasadzie cykli zegara, w których wykonuje operacje odczytu, zapisu i wykonywania instrukcji. | ||
Linia 20: | Linia 19: | ||
* Tryb real-mode : Jest to tryb, w którym procesor wykonuje operacje bez wirtualizacji pamięci i bez ochrony pamięci. | * Tryb real-mode : Jest to tryb, w którym procesor wykonuje operacje bez wirtualizacji pamięci i bez ochrony pamięci. | ||
+ | |||
* Tryb ochrony: Tryb ten jest bardziej zaawansowany i pozwala na zarządzanie pamięcią w sposób bezpieczniejszy (chociaż procesor 8086 nie obsługiwał go bezpośrednio, | * Tryb ochrony: Tryb ten jest bardziej zaawansowany i pozwala na zarządzanie pamięcią w sposób bezpieczniejszy (chociaż procesor 8086 nie obsługiwał go bezpośrednio, | ||
- | --- | + | ---- |
===== Przykłady programów w assemblerze procesora 8086 ===== | ===== Przykłady programów w assemblerze procesora 8086 ===== | ||
Linia 28: | Linia 28: | ||
Poniżej przedstawiam kilka przykładów programów w języku assemblera dla procesora 8086. Przykłady te ilustrują podstawowe operacje wykonywane przez procesor, jak manipulacja rejestrami, wejście/ | Poniżej przedstawiam kilka przykładów programów w języku assemblera dla procesora 8086. Przykłady te ilustrują podstawowe operacje wykonywane przez procesor, jak manipulacja rejestrami, wejście/ | ||
- | --- | + | ---- |
=== Program 1 === | === Program 1 === | ||
Linia 60: | Linia 60: | ||
* Program wczytuje dane z pamięci i wysyła je na port (symulując sterowanie sygnalizacją świetlną). | * Program wczytuje dane z pamięci i wysyła je na port (symulując sterowanie sygnalizacją świetlną). | ||
+ | |||
* Wartości są przechowywane w pamięci, a procesor przesyła je na odpowiedni port za pomocą instrukcji `OUT`. | * Wartości są przechowywane w pamięci, a procesor przesyła je na odpowiedni port za pomocą instrukcji `OUT`. | ||
+ | |||
* Program zatrzymuje się, gdy liczba wysłanych danych osiągnie 5. | * Program zatrzymuje się, gdy liczba wysłanych danych osiągnie 5. | ||
- | --- | + | ---- |
=== Program 2 === | === Program 2 === | ||
Linia 83: | Linia 85: | ||
* Program ustawia wartość `B6` w rejestrze AL, a następnie wysyła ją na port 02. | * Program ustawia wartość `B6` w rejestrze AL, a następnie wysyła ją na port 02. | ||
+ | |||
* Następnie ustawia wartość `0B` w rejestrze AL i ponownie wysyła ją na port 02. | * Następnie ustawia wartość `0B` w rejestrze AL i ponownie wysyła ją na port 02. | ||
+ | |||
* Program powtarza te operacje w nieskończoność. | * Program powtarza te operacje w nieskończoność. | ||
- | --- | + | ---- |
=== Program 3 === | === Program 3 === | ||
Linia 115: | Linia 119: | ||
* Program odczytuje dane z portu 03 i sprawdza, czy najmłodszy bit jest ustawiony na 0 (co może oznaczać, że temperatura jest zbyt niska). | * Program odczytuje dane z portu 03 i sprawdza, czy najmłodszy bit jest ustawiony na 0 (co może oznaczać, że temperatura jest zbyt niska). | ||
+ | |||
* W zależności od wyniku, program włącza lub wyłącza grzałkę, wysyłając odpowiedni kod na port 03. | * W zależności od wyniku, program włącza lub wyłącza grzałkę, wysyłając odpowiedni kod na port 03. | ||
- | --- | + | ---- |
=== Program 4 === | === Program 4 === | ||
Linia 162: | Linia 167: | ||
end: | end: | ||
end | end | ||
- | ``` | + | </ |
===== Opis programu ===== | ===== Opis programu ===== | ||
* Program wyświetla napis "I AM KACPER" | * Program wyświetla napis "I AM KACPER" | ||
+ | |||
* Przesuwa dane z jednej komórki pamięci do drugiej, wykorzystując rejestry i instrukcje manipulacji pamięcią. | * Przesuwa dane z jednej komórki pamięci do drugiej, wykorzystując rejestry i instrukcje manipulacji pamięcią. | ||
- | --- | + | ---- |
===== Symulator SMZ32V50 ===== | ===== Symulator SMZ32V50 ===== | ||
Linia 175: | Linia 181: | ||
Do wykonywania powyższych programów użyty został symulator SMZ32V50. Jest to narzędzie, które umożliwia emulację działania procesora 8086, pozwalając na testowanie i debugowanie programów w assemblerze. Symulator ten może emulować działanie portów wejścia/ | Do wykonywania powyższych programów użyty został symulator SMZ32V50. Jest to narzędzie, które umożliwia emulację działania procesora 8086, pozwalając na testowanie i debugowanie programów w assemblerze. Symulator ten może emulować działanie portów wejścia/ | ||
- | --- | + | {{ : |
+ | |||
+ | ---- | ||
===== Podsumowanie ===== | ===== Podsumowanie ===== | ||
Linia 181: | Linia 189: | ||
Procesor 8086 był pionierem w wielu aspektach architektury komputerowej. Dzięki jego prostocie i elastyczności, | Procesor 8086 był pionierem w wielu aspektach architektury komputerowej. Dzięki jego prostocie i elastyczności, | ||
- | --- | + | ---- |