J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

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

Programowanie niskopoziomowe

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

organizacja procesora 8086

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

Architektura komputerów

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Architektura komputerów. Asembler procesorów rodziny x86

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

Organizacja typowego mikroprocesora

Architektura komputerów

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

PROGRAMOWANIE NISKOPOZIOMOWE

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

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

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

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

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Programowanie Niskopoziomowe

Mikroprocesor Intel 8088 (8086)

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

Procesory rodziny x86. Dariusz Chaberski

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Programowanie Niskopoziomowe

Lista instrukcji mikroprocesora Programowanie w assemblerze

Programowanie komputera

Adam Kotynia, Łukasz Kowalczyk

Struktura i działanie jednostki centralnej

Rozszerzalne kody operacji (przykład)

Programowanie Niskopoziomowe

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

architektura komputerów w 1 1

Technika mikroprocesorowa I Wykład 2

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

Systemy wbudowane. Przykłady kodu Assembler

Architektura Systemów Komputerowych

1. Asembler i wstawki asemblerowe w C

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura komputerów

Programowanie mikrokontrolera 8051

BUDOWA I DZIAŁANIE MIKROPROCESORA

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Wybrane zagadnienia elektroniki współczesnej

Architektura komputerów

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

Programowanie Niskopoziomowe

Lista Rozkazów: Język komputera

Architektura Systemów Komputerowych

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

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

5. Mikroprocesory 8086 i 8088

Lista rozkazów mikrokontrolera 8051

Architektura typu Single-Cycle

Sterowanie pracą programu

STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer)

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Architektura komputerów

002 Opcode Strony projektu:

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

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

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

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

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

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Wstęp. do języka C na procesor (kompilator RC51)

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

MIKROPROCESORY architektura i programowanie

CPU architektura i rejestry

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

2. Architektura mikrokontrolerów PIC16F8x... 13

Komunikacja między sterownikami przez protokół ADS

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

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

Programowanie w asemblerze Środowiska 64-bitowe

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Podstawy programowania w języku C i C++

Procesor 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]

Mikrokontroler ATmega32. Język symboliczny

Metody Realizacji Języków Programowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Podstawy programowania w języku C++

Wstęp. Stanowisko z mikroprocesorem Intel 8088

MIKROKONTROLERY I MIKROPROCESORY

Ćwiczenie nr 6. Programowanie mieszane

Schematy zarzadzania pamięcia

Podstawy Informatyki Języki programowania c.d.

ARCHITEKTURA PROCESORA,

Mikroinformatyka. Wielozadaniowość

architektura komputerów w 1 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

asix4 Podręcznik użytkownika MicroSmart - drajwer do wymiany danych ze sterownikami MicroSmart firmy IDEC

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

Transkrypt:

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 Procedury Makroinstrukcje Biblioteki zewnętrzne Nowe możliwości programowanie 32 bitowe

Dlaczego assembler? Prostszy jest BASIC! Najczęstsze zastosowania obecnie sterowniki urządzeń zewnętrznych optymalizacja kodu dużych programów bardzo małe i szybkie programy, biblioteki

Rejestry 16 bitowe Segmentacja pamięci (64k=65536). 16 bitowy ślepiec. 80286 (20bit adresowanie do 1024k). Specjalne komórki pamięci znajdujące się w kostce mikroprocesora. Para rejestrów 16 bit DS:SI CS:BX Segmenty mogą się wzajemnie przenikać. Dwie różne pary rejestrów 16 bitowych mogą określać tą samą komórkę pamięci. Rejestry związane są z budową mikroprocesora.

Rejestry segmentowe BYTE 1 WORD 2 DWORD 4 Istnieją tylko do przechowywania adresów segmentów. CS oznacza rejestr segmentowy kodu (code segment register). Każda instrukcja składająca się na program znajduje się w segmencie kodu. QWORD 8 TBYTE 10 PARA 16 PAGE 256 SEGMENT 65536 DS oznacza rejestr segmentowy danych (data segment register). Tutaj znajdują się dane oraz inne zmienne. Może istnieć wiele segmentów danych ale w danym momencie CPU może wykorzystywać tylko jeden z nich. Adres tego segmentu znajduje się w rejestrze DX.

SS oznacza rejestr segmentowy stosu (stack segment register). Stos jest bardzo ważnym elementem procesora, używanym do czasowego przechowywania danych lub adresów. ES oznacza dodatkowy rejestr segmentowy (extra segment register). Jest to dodatkowy segment danych którego adres przechowywany jest w rejestrze ES. Adres segmentu pokazuje początek takiego obszaru. Aby określić położenie wewnątrz segmentu potrzebny jest jeszcze jeden rejestr 16 bitowy

Rejestry ogólnego przeznaczenia AX, BX, CX, DX, SP, BP, SI, DI Rejestr AX, BX, CX, DX można podzielić na połówki AX=(AH,AL) (starszy bajt, młodszy bajt) BX=(BH,BL) CX=(CH,CL) DX=(DH,DL)

Przeznaczenie rejestrów AX, akumulator jest używany w operacjach działających na słowach mnożeniu, dzieleniu i operacjach we/wy oraz w niektórych operacjach na łańcuchach. BX, rejestr bazowy często używany do adresowania danych w pamięci CX, licznik, działa jako licznik powtórzeń w pętli. Rejestr CL zawiera wartość przemieszczenia w operacjach przesunięcia bitowego DX, rejestr danych, używany w operacjach mnożenia i dzielenia argumentów rozmiaru słowa. Może dostarczać numer portu w operacjach we/wy.

Wskaźniki i indeksy SP - wskaźnik stosu (stack pointer). BP - wskaźnik bazy (base pointer). SI - indeks źródła (source index). DI - indeks przeznaczenia (destination index). Wskaźnik instrukcji (IP) Służy on do przechowywania offsetu instrukcji języka maszynowego, która będzie wykonana jako następna. W momencie zakończenia wykonywania instrukcji wartość w IP jest zwiększana o taką liczbę bajtów, jaką zajmowała aktualnie zakończona instrukcja. CS:IP pełny adres kolejnej wykonywanej instrukcji.

Rejestr znaczników. Jest to 16-bitowy rejestr do którego mamy dostęp jedynie przez instrukcje assemblera. Raczej jest to zbór flag rejestrów 1 bitowych. OF, DF, IF, TF, SF, ZF, AF, PF, CF OF - przepełnienia OV NV DF - kerunku DN UP IF - zezwolenia przerawania EI DI SF - znaku NG PL ZF - zera ZR NZ AF - dodat. przeniesienia AC NA PF - parzystości PE PO CF - przeniesienia CY NC TF - pułapki

Adresowanie pamięci Instrukcja podstawowa assemblera MOV MOV AX,1 AX - operand przeznaczenia 1 - operand źródłowy. Dane natychmiastowe znajdują się bezpośrednio w instrukcji która jest aktualnie wykonywana. Dane takie są osiągalne dzięki trybowi adresowania zwanemu adresowaniem natychmiastowym Dane bezpośrednie muszą mieć wielkość odpowiadającą operandowi przeznaczenia. MOV AL,54EFH Operacja zabroniona

Dane rejestrowe Dane natychmiastowe wykonywane są zdecydowanie prędzej od danych pamięciowych lecz wolniej od danych rejestrowych. Dostęp do nich mamy w trybie adresowania zwanym adresowaniem rejestrowym lub inaczej adresowaniem ukrytym. MOV AX,BX MOV AL,BX MOV AX,BL Kopiowanie zawartości rejestru BX do AX Sygnalizowany jest błąd Sygnalizowany jest błąd

Dane pamięciowe Dane pamięciowe przechowywane są gdzieś w megabajtowym obszarze pamięci adresowanej przez układy 8086. Do adresowania pamięci wybrany został rejestr BX. Aby przenieść słowo znajdujące się w pamięci pod adresem DS:BX wykonujemy następującą instrukcję mając wcześniej już ustalony adres segmentu danych. MOV AX,[BX] Nawiasy kwadratowe mówią nam, że nie interesuje nas sama wartość BX a komórka pamięci na którą ona wskazuje.

Jeżeli chcemy wykonać operację odwrotną, czyli zapisać daną do pamięci (skopiować z rejestru DX). MOV [DI],DX Nawiasy kwadratowe mówią nam, że nie interesuje nas sama wartość DI a komórka pamięci na którą ona wskazuje. W tych dwóch przypadkach domyślnym segmentem jest segment danych DS. W celu wskazania konkretnego segmentu dodajemy przedrostek zmiany segmentu : MOV CS:[DI],DX

Instrukcja MOV nie może przenosić danych z jednej komórki do innej MOV [SI],[BX] Instrukcja MOV nie może przenosić zawartości jednego rejestru segmentowego do drugiego rejestru segmentowego. MOV CS,SS Instrukcja MOV nie może przenosić danych danych natychmiastowych do rejestru segmentowego. MOV CS,0B800H

Inkrementacja(INC) i dekrementacja(dec) MOV AX,1 INC AX Co powstanie w wyniku zastosowania takich instrukcji MOV AX,FFFFH INC AX Znacznik ZF jest ustawiany MOV AX,1 DEC AX Znacznik ZF jest ustawiany

Typy danych w języku assembler Typ danych w języku assembler sprowadza się przeważnie do rozmiaru Dyrektywy określające dane Licznik DB ; 8 bit Zmienna DW ; 16 bit Wynik DD ; 32 bit MOV CL,Licznik MOV BL,Zmienna

Specyfikatory zmiany typu MOV BL,BYTE PTR Zmienna Specyfikator BYTE PTR wymusza potraktowanie zmiennej zmienna jako wartości 1-bajtowej. Do rejestru BL zostanie załadowany bardziej znaczący bajt. Ciągi znaków. Text DB To jest łańcuch znaków, $ Ciągi definiowane są przez etykietę wskazującą w którym miejscu pamięci znajduje się nasz ciąg danych. Znak $ oznacz koniec ciągu.

Adres zmiennej LEA DX,text Instrukcja służy do przeniesienia adresu zmiennej do rejestru a nie jej wartości. (Load Effective Address) Komentarze w assemblerze ; to jest komentarz