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

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

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

Architektura komputerów. Asembler procesorów rodziny x86

Struktura i działanie jednostki centralnej

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

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

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

Magistrala systemowa (System Bus)

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Sterowanie pracą programu

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Architektura Systemów Komputerowych

Lista rozkazów mikrokontrolera 8051

Ćwiczenie 3. Konwersja liczb binarnych

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

Architektura typu Single-Cycle

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Programowanie komputera

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

Sprzęt i architektura komputerów

Architektura komputerów

Technika mikroprocesorowa I Wykład 2

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

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

1. Operacje logiczne A B A OR B

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

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

Programowalne układy logiczne

Sprzęt i architektura komputerów

Mikrooperacje. Mikrooperacje arytmetyczne

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

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Mikrokontroler ATmega32. Język symboliczny

Programowanie Niskopoziomowe

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Architektura komputerów

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

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Język programowania: Lista instrukcji (IL Instruction List)

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

Lista instrukcji mikroprocesora Programowanie w assemblerze

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Lista Rozkazów: Język komputera

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

Kod U2 Opracował: Andrzej Nowak

Wykład 4. Środowisko programistyczne

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Model programowy komputera I: format rozkazów, lista rozkazów, tryby adresowania, cykl rozkazowy, realizacja programu w komputerze.

Metody Realizacji Języków Programowania

Podstawy Informatyki

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

Technologie Informacyjne

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

organizacja procesora 8086

Programowanie mikrokontrolera 8051

2. Architektura mikrokontrolerów PIC16F8x... 13

Programowanie niskopoziomowe

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

Wstęp do informatyki- wykład 2

Podstawy programowania w języku C i C++

ASEMBLER MCS-51 Podstawowe informacje

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

imei Instytut Metrologii, Elektroniki i Informatyki

Architektura komputerów wer. 7

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

Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Odczyt danych z klawiatury Operatory w Javie

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Jerzy Nawrocki, Wprowadzenie do informatyki

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

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

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

Języki formalne i techniki translacji

Programowanie Niskopoziomowe

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

Programowanie mikrokontrolerów (CISC)

Podstawy programowania

Podstawy programowania w języku C

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

Techniki multimedialne

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Architektura komputerów

Procesor i jego architektura (CISC, RISC, 32/64 bity). Systemy wieloprocesorowe. wer Wojciech Myszka 16 pa«zdziernika 2008

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

Programowanie Niskopoziomowe

Architektura komputerów wer. 3

Podstawy programowania skrót z wykładów:

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

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Transkrypt:

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 (instrukcje procesora kod programu) Instrukcje procesora odnoszą się do prostych operacji na wewnętrznych rejestrach procesora oraz operacji odczytu/zapisu komórek pamięci operacyjnej i układów we/wy Interakcja między maszyną i komputerem odbywa się za pośrednictwem układów we/wy i opiera się na konwersji danych zrozumiałych dla człowieka na dane zakodowane w formie cyfrowej (i odwrotnie). ROM, RAM CPU ALU We/Wy Rejestry procesora

Język wysokiego poziomu (C, Pascal, Java, etc.) Kompilacja (kompilator) Język niskiego poziomu: asembler Przykład for (i=; i<, i++) { n=+x*2; } MOV AL,FF wait: SUB AL, JNS wait Cechy Instrukcje języka wysokiego poziomu, zmienne, operatory arytmetyczne, swobodny układ tekstu programu, etc.. Instrukcje asemblera: mnemoniki, nazwy rejestrów, adresy komórek pamięci, etykiety linii, sztywny układ tekstu programu Asemblacja (asembler) Kod maszynowy F5 58 3 Bajty zapisane w pliku lub w pamięci komputera, które odpowiadają kolejnym instrukcjom dla procesora Program w języku asemblera składa się z linii zawierających instrukcję do wykonania przez procesor. Instrukcje asemblera są bardzo prostymi operacjami, na liczbach zapisanych w rejestrach roboczych lub komórkach pamięci za pomocą ALU. Linia programu w języku asemblera składa się z pól: np. wait: MOV AL,BL ; załaduj do AL wartość z BL etykieta (pole moŝe być puste) mnemonik (instrukcja) operandy mnemonika komentarz Mnemoniki są łatwymi do zapamiętania skrótami operacji procesora. Wszystkie liczby w programie są liczbami szesnastkowymi! 2

instr_ instr_2 instr_k- instr_k END n Instrukcje programu umieszczone są w pamięci i mogą zajmować róŝną liczbę bajtów. Program (w symulatorze) uruchamiany jest zawsze od instrukcji umieszczonej pod adresem Program musi kończyć się dyrektywą END. Wszystkie instrukcje umieszczone po tej dyrektywie są ignorowane Operacje przesyłania wartości MOV X,Y ; move mov AL,3 mov DL,A5 miejsce przeznaczenia (dokąd) wartość lub miejsce źródłowe (co lub skąd) Instrukcja przesłania MOV nie wpływa na bity rejestru SR 3

Operacje arytmetyczne (ADD, SUB, MUL, DIV) ADD X,Y operand i miejsce umieszczenia wyniku 2 operand (wartość lub miejsce) add AL,BL mul DL,4 Operacje inkrementacji (zwiększenia o ) rejestru INC X ;X X+ inc BL Operacje dekrementacji (zmniejszenia o ) rejestru DEC X ;X X- dec DL Operacje logiczne (AND, OR, XOR) AND X,Y or AL,BL xor DL,4 operand i miejsce umieszczenia wyniku 2 operand (wartość lub miejsce) A B AND OR XOR A = B = AND = OR = XOR = Logical negation operation (bit negation) NOT X not AL A = NOT = 4

Operacje przesunięć bitowych w prawo (SHR) i w lewo (SHL) SHR X ;shift right SHL X ;shift left shr BL shl DL SHL A = SHL = A = SHL = SHR A = SHR = A = SHR = Operacje przesunięć rotacyjnych w prawo (ROR) i w lewo (ROL) ROR X ; rotate right ROL X ; rotate left ror BL rol DL A = ROL = ROL A = ROL = ROR A = ROR = A = ROR = 5

SR Bity rejestru SR ustawiane są zgodnie z wynikiem ostatnio wykonanej instrukcji arytmetycznej, logicznej lub przesunięć: bit Z (zero): gdy instrukcja dała wynik gdy wynik instrukcji jest róŝny od zera bit O (overflow): gdy instrukcja arytmetyczna zakończyła się błędem (w sensie arytmetyki U2) gdy instrukcja arytmetyczna powiodła się bit S (sign): gdy instrukcja dała wynik ujemny (w kodzie U2) gdy instrukcja dała wynik nieujemny bit I (interrupt) gdy procesor moŝe przyjąć przerwanie gdy procesor nie przyjmuje przerwań MOV AL,2 ; Zapisz liczbę 2 do rejestru AL BL = MOV BL,A ; Zapisz liczbę do rejestru BL BL = ADD AL,BL ; Dodaj BL do AL, wynik będzie w AL BL = Wynikiem instrukcji ADD jest liczba C h (2 d ) w rejestrze AL. Wynik jest niezerowy (Z=), poprawny (O=), nieujemny (S=) 6

MOV CL,F ; Zapisz liczbę 5 do rejestru CL CL = DL = MOV DL,F ; Zapisz liczbę 5 do rejestru DL CL = DL = MUL DL,CL ; PomnóŜ CL i DL, wynik będzie w DL CL = DL = SR = Wynikiem instrukcji MUL jest liczba 3(U2) w rejestrze DL. Wynik jest niezerowy (Z=), niepoprawny (O=), ujemny (S=) MOV AL, ; wyzeruj rejestr AL DEC AL ; zmniejsz wartość AL o SR = Wynikiem instrukcji DEC jest liczba (U2) w rejestrze AL. Wynik jest niezerowy (Z=), poprawny (O=), ujemny (S=) 7

MOV AL,FF ; zapisz (U2) do rejestru AL INC AL ; zwiększ wartość AL o SR = Wynikiem instrukcji INC jest liczba w rejestrze AL. Wynik jest zerowy (Z=), poprawny (O=), nieujemny (S=) MOV AL,8 ; Zapisz liczbę 28(U2) do rejestru AL SUB AL,2 ; Odejmij 2 od AL, wynik będzie w AL SR = Wynikiem instrukcji SUB jest liczba 26(U2) w rejestrze AL. Wynik jest niezerowy (Z=), niepoprawny (O=), nieujemny (S=) 8

Operacje logiczne na bitach rejestrów nie mają sensu arytmetycznego, dlatego bit O (overflow) nie jest zmieniany. Bity S i Z są ustawiane tak samo jak dla instrukcji arytmetycznych. MOV AL,7F ; Zapisz liczbę 27 do rejestru AL 8 = OR AL,8 ; Przeprowadź operację OR na bitach AL i liczby 8 h SR = Operacje przesunięć na bitach rejestrów nie mają sensu arytmetycznego, dlatego bit O (overflow) nie jest zmieniany. Bity S i Z są ustawiane tak samo jak dla instrukcji arytmetycznych. MOV AL,8 ; Zapisz liczbę 28(U2) do rejestru AL SHL AL ; Przesuń bity AL o jedną pozycję w lewo SR = 9

JMP next instrukcja skoku bezwarunkowego do instrukcji o etykiecie next: Instrukcja JMP nie zmienia bitów rejestru SR np. plus: ADD AL,5 JMP stop minus: SUB AL,5 stop: MOVE BL,FF np. loop: MOV AL,55 OUT minus: JMP loop nieskończona pętla Instrukcje skoków warunkowych nie zmieniają bitów rejestru SR, ale ich wykonanie zaleŝy od stanu poszczególnych bitów SR!!! Instrukcja testuje wartość odpowiedniego bitu SR i wykonuje się (wykonuje skok do podanej etykiety) jeśli warunek określony mnemonikiem instrukcji jest spełniony, w przeciwnym wypadku skok się nie wykonuje. JZ next ; skocz jeśli Z= (ostatnia instrukcja dała wynik ) JNZ next ; skocz jeśli Z= (skocz jeśli wynik jest niezerowy) JS next ; skocz jeśli S= (skocz jeśli wynik ujemny) JNS next ; skocz jeśli S= (skocz jeśli wynik nieujemny) JO next ; skocz jeśli O= (skocz jeśli wynik niepoprawny) JNO next ; skocz jeśli O= (skocz jeśli wynik poprawny) Instrukcje skoków warunkowych stosuje się najczęściej do realizacji cykli w programach

MOV AL,7F loop: DEC AL JNZ loop cykl wykona się dokładnie 27 razy (np. pętla opóźniająca) AL 7F AL AL- Z= N T MUL JO error: AL,BL error MUL JNO JMP ok: error: AL,BL ok error wykrywanie i obsługa błędów podczas operacji arytmetycznych Operacje porównań CMP X,Y ; compare cmp AL,77 cmp AL,BL operand 2 operand Instrukcja porównania CMP wykonuje odejmowanie operandów (X-Y), a następnie ustawia bity rejestru SR zgodnie z wynikiem operacji. Wynik operacji nie jest zapisywany. Instrukcja CMP słuŝy do wykrywania konkretnej wartości w rejestrze CMP wpływa tylko na bity S (znak) i Z (zero), a więc pozwala stwierdzić a) czy X<Y (bit S=) b) czy X=Y (Z=)

loop: IN 7 CMP AL,D JNZ loop cykl oczekiwania na odczyt wartości 3 z portu 7 (np. znak Enter z klawiatury) nowy IN 7 ; czytaj kod ASCII znaku z klawiatury CMP AL,3 ; sprawdź czy kod jest >= JS nowy ; znak nie jest cyfrą, czytaj nowy znak CMP AL,4 ; sprawdź czy kod jest < 9 JNS nowy ; znak nie jest cyfrą, czytaj nowy znak cyfra fragment programu wczytującego z klawiatury znaki cyfr, ignorujący inne wprowadzone znaki Dotyczy tylko programu symulatora uŝywanego w laboratorium ROM, RAM CPU sygnalizator świetlny wyświetlać cyfrowy termostat (grzejnik) ruch robota silnik krokowy winda (sterowanie napędem) klawiatura alfanumeryczna klawiatura numeryczna Out 2 3 4 5 6 7 8 numer portu In klawiatura termostat (temperatura) winda (odczyt klawiatury i połoŝenia) klawiatura alfanumeryczna (odczyt) klawiatura numeryczna (odczyt) 2

IN numer instrukcja odczytu wartości z portu o podanym numerze, wartość jest umieszczana w rejestrze AL OUT numer instrukcja wysłania wartości do portu o podanym numerze, wartość musi być wcześniej umieszczona w rejestrze AL MOV AL,55 OUT zapalenie kombinacji świateł na sygnalizatorze ulicznym (port ) IN CMP AL,B JZ end wczytanie znaku z klawiatury i jeśli był to znak Escape, to skok do zakończenia programu 3