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

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

1. Operacje logiczne A B A OR B

Arytmetyka liczb binarnych

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

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

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

Mikrooperacje. Mikrooperacje arytmetyczne

Tranzystor JFET i MOSFET zas. działania

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Kodowanie informacji. Kody liczbowe

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Arytmetyka binarna - wykład 6

Architektura komputerów. Asembler procesorów rodziny x86

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

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

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Języki i paradygmaty programowania

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

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Architektura komputerów

Programowanie Niskopoziomowe

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Podstawy Informatyki

Państwowa Wyższa Szkoła Zawodowa

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Kod U2 Opracował: Andrzej Nowak

Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.

Naturalny kod binarny (NKB)

Automatyzacja i robotyzacja procesów produkcyjnych

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Architektura komputerów Wykład 2

Struktura i działanie jednostki centralnej

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

Zapis liczb binarnych ze znakiem

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Architektura Systemów Komputerowych

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

LEKCJA. TEMAT: Funktory logiczne.

while(wyrażenie) instrukcja

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Układy logiczne. Wstęp doinformatyki. Funkcje boolowskie (1854) Funkcje boolowskie. Operacje logiczne. Funkcja boolowska (przykład)

Układy VLSI Bramki 1.0

WSTĘP. Budowa bramki NAND TTL, ch-ka przełączania, schemat wewnętrzny, działanie 2

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Programowanie Niskopoziomowe

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

Systemy zapisu liczb.

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

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

Stan wysoki (H) i stan niski (L)

Przykładowe pytania DSP 1

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Ćwiczenie 3. Konwersja liczb binarnych

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Podstawy programowania w języku C i C++

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Temat 7. Dekodery, enkodery

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

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

1.1. Pozycyjne systemy liczbowe

Sterowniki programowalne

Krótkie przypomnienie

Architektura komputerów

DZIESIĘTNY SYSTEM LICZBOWY

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Układy kombinacyjne 1

Kodowanie liczb całkowitych w systemach komputerowych

Programowalne układy logiczne

LICZBY ZMIENNOPRZECINKOWE

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Operacje arytmetyczne

Układy cyfrowe. Najczęściej układy cyfrowe służą do przetwarzania sygnałów o dwóch poziomach napięć:

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Podstawy Informatyki Elementarne podzespoły komputera

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Programowanie w językach asemblera i C

Architektura komputerów

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Wstęp do Techniki Cyfrowej... Algebra Boole a

dr inż. Jarosław Forenc

Podstawy Informatyki dla Nauczyciela

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Transkrypt:

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 i fałsz zamiast liczb. Gałąź ta została nazwana algebrą Boole a. Prosta algebra Boole a jest zgodna z intuicją, ale jeśli trzeba przetwarzać decyzje wykorzystujące wiele wartości, które mogą być prawdziwe lub fałszywe, według skomplikowanych zasad, potrzebna jest ta gałąź matematyki. 1.1. Operacja AND Na obu wejściach musi być prawda, aby na wyjściu była prawda. Operacja AND służy do dodawania i podejmowania decyzji. Tabela 1. Tablica prawdy dla operacji AND 0 0 0 0 1 0 1 0 0 1 1 1 1.2. Operacja OR Oba wejścia muszą być fałszywe aby na wyjściu pojawił się fałsz. Operator OR jest stosowany w procesie podejmowania decyzji. Zarówno AND 1

Rysunek 1. Bramka AND jak i OR służą do maskowania bitów. Maskowanie bitów służy do wybierania poszczególnych bitów w bajcie lub do ich ustawiania. OR wykorzystuje się do ustawiania odpowiednich bitów na wartość 1. AND jest używany do ustawiania bitów na " 0. AND jest wykorzystywany także do sprawdzenia czy dany bit jest jedynką. OR służy do sprawdzania, czy bit jest zerem. Rysunek 2. Bramka OR Tabela 2. Tablica prawdy dla operacji OR 0 0 0 0 1 1 1 0 1 1 1 1 1.3. Operacja XOR Jeżeli na bitach obrazu graficznego wykona się operację XOR z innymi bitami, to pojawia się nowy obraz. Jeśli powtórzy się operację XOR, to ten obraz znika. Tak dzieje się w przypadku kursora myszy przesuwanego po ekranie. XOR w połączeniu z AND stosuje się przy operacji dodawania. XOR wykrywa, czy wejścia są równe, czy nie. Rysunek 3. Bramka XOR 2

Tabela 3. Tablica prawdy dla operacji XOR 0 0 0 0 1 1 1 0 1 1 1 0 1.4. Operacja NAND NAND jest w rzeczywistości zanegowanym wyjściem operacji AND. Układy elektroniczne często używają bramek NAND, ale języki programowania (wliczając symulator SMS32) nie udostępniają operacji NAND. Zamiast niej należy używać NOT AND. W symulatorze może to wyglądać np. tak: AND AL, BL NOT AL Rysunek 4. Bramka NAND Tabela 4. Tablica prawdy dla operacji NAND 0 0 1 0 1 1 1 0 1 1 1 0 1.5. Operacja NOR NOR jest zanegowanym wyjściem operacji OR. Podobnie jak w przypadku NAND, układy elektroniczne często wykorzystują bramkę NOR, ale operacja NOR nie jest dostępna w językach programowania. Zamiast niej należy używać NOT OR. W symulatorze może to wyglądać np. tak: OR AL, BL NOT AL 3

Rysunek 5. Bramka NOR Tabela 5. Tablica prawdy dla operacji NOR 0 0 1 0 1 0 1 0 0 1 1 0 1.6. Operacja NOT Operacja NOT neguje wszystkie bity w bajcie. Każda 1 zostaje zamieniona na 0, a każde 0 na 1. Rysunek 6. Bramka NOT Tabela 6. Tablica prawdy dla operacji NOT A wyjście 0 1 1 0 1.7. Operacja SHL Operacja SHL przesuwa bity w lewo. Najbardziej znaczący bit zostaje odrzucony, pozostałe bity zostają przesunięte o jedną pozycję w lewo, a najmniej znaczący bit przyjmuje wartość 0. 1.8. Operacja SHR Przesuwa bity w prawo. Najmniej znaczący bit zostaje odrzucony, pozostałe bity zostają przesunięte o jedną pozycję w prawo, a najbardziej znaczący bit przyjmuje wartość 0. 4

1.9. Operacja ROL Działa podobnie do SHL. Przesuwa bity w lewo, ale najbardziej znaczący bit nie jest odrzucany. Trafia on w miejsce najmniej znaczącego bitu. 1.10. Operacja ROR Działa podobnie do SHR. Przesuwa bity w prawo, ale najmniej znaczący bit nie jest odrzucany. Trafia on w miejsce najbardziej znaczącego bitu. Tabela 7. Instrukcje dla operacji bitowych Instr. Operand A Operand B Działanie AND rejestr ogólnego OR rejestr ogólnego XOR rejestr ogólnego NOT rejestr ogólnego ROL rejestr ogólnego ROR rejestr ogólnego SHL rejestr ogólnego SHR rejestr ogólnego konkretna wartość lub rejestr konkretna wartość lub rejestr konkretna wartość lub rejestr Wykonuje operację A AND B. Wynik zapisuje w A. Wykonuje operację A OR B. Wynik zapisuje w A. Wykonuje operację A XOR B. Wynik zapisuje w A. Wykonuje negację (odwraca wszystkie bity) na rejestrze. Obraca bity w rejestrze w lewo. Obraca bity w rejestrze w prawo. Przesuwa bity w rejestrze w lewo. Przesuwa bity w rejestrze w prawo. Listing 1. Operacje na bitach mov al,80 loop: shr al push al pop bl and bl, 8; sprawdzenie jedynki na czwartej pozycji od prawej jz loop or al, 2 ; ustawienie bity na drugiej pozycji od prawej loop2: rol al ; obrot bitow w lewo push al pop bl and bl, 1; sprawdzenie jedynki na pierwszej pozycji jz loop2 end 5

1.11. Dodatkowe informacje 1. http://www.softwareforeducation.com/sms32v50/sms32v50_ manual/380-truthtables.htm 2. https://pl.wikipedia.org/wiki/algebra_boole a 3. https://pl.wikipedia.org/wiki/kod_graya 4. http://www.linux.net.pl/~wkotwica/megipt3.html 2. Zadania 2.1. Zadanie 1 Napisać program ustawiający flagę S (znaku). Program może wykorzystywać tylko instrukcje PUSHF, POPF, PUSH, POP, OR I END. 2.2. Zadanie 2 Napisać program płynnie sterujący silnikiem krokowym (bez zmian w szybkości). Program powinien działać w pętli nieskończonej. Poza numerem portu, program musi zawierać tylko jeden bajt danych. 2.3. Zadanie 3 Napisać program, który zamienia liczbę w systemie U2 na liczbę przeciwną, np. 23 na -23 i odwrotnie. Należy wykorzystać operacje bitowe. 2.4. Zadanie 4 Napisać program zamieniający liczbę w naturalnym kodzie binarnym na kod Graya i odwrotnie. Do konwersji w każdą stronę należy zastosować oddzielną procedurę. Listing 2. Algorytm konwersji na/z kody Graya /* * Funkcja konwertuje bajt liczby w NKB * na kod Graya. * Operator >> jest operatorem przesuniecia * w prawo o wskazana liczbe bitow. * Operator ^ to XOR */ byte binarytogray(byte num) { return num ^ (num >> 1); } 6

/* * Zamiana z kodu Graya na liczbe NKB. */ byte graytobinary(byte num) { num = num ^ (num >> 4); num = num ^ (num >> 2); num = num ^ (num >> 1); return num; } 2.5. Zadanie 5 Napisać program wykonujący mnożenie według algorytmu starożytnych Egipcjan (zob. listing 3) Listing 3. Algorytm mnożenia starożytnych Egipcjan c = 0 while b!= 0 if (b and 1)!= 0 c = c + a left shift a by 1 right shift b by 1 return c 7