assembler - aragorn.pb.bialystok.plaragorn.pb.bialystok.pl/~teodora/ak/w1.pdf · systemy liczbowe,...

22
Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/

Upload: vuongthu

Post on 28-Feb-2019

223 views

Category:

Documents


0 download

TRANSCRIPT

Programowanie niskopoziomowe

ASSEMBLER

Teodora Dimitrova-Grekow

http://aragorn.pb.bialystok.pl/~teodora/

Program ogólny Rok akademicki 2011/12

Systemy liczbowe, budowa komputera, procesory X86, organizacja pamięci, pierwszy program

Adresacja: rodzaje i zastosowanie

Lista rozkazów

Stos i procedury

Skoki. Instrukcje łańcuchowe

PSP, praca z plikami

Asembler i inne języki

System przerwań

Programy rezydentne

Literatura

Vlad Pirogow, Asembler. Podręcznik programisty, Helion, 2005

Eugeniusz Wróbel, Praktyczny kurs asemblera. Helion, 2004.

Kip R. Irvine , "Asembler dla procesorów Intel. Vademecum profesjonalisty" , Helion, 2003.

Eugeniusz Wróbel, Asembler. Ćwiczenia praktyczne. Helion, 2002.

Michałek Grzegorz, Asembler nie tylko dla orłów, Warszawa : "Intersoftland", 1999.

Michałek Grzegorz, Co i jak w assemblerze, Warszawa, Intersoftland, 1995.

Duntemann Jeff, Zrozumieć Asembler, Warszawa : Translator, 1995.

Syck Gary, Turbo Assembler : biblia użytkownika, Warszawa : Oficyna Wydawnicza LT a. P, 1994.(MatFizIn130548)

Kruk Stanisław, Asembler : podręcznik użytkownika, Warszawa : "Mikom", 1999.

Kruk Stanisław,Turbo Asembler : idee, polecenia, rozkazy procesora Pentium, Warszawa : "Mikom", 2000.

Bit, Bajt, Słowo

Numeracja bitów:

Podwójne słowo:

Słowo:

Podstawowe zasady architektury von Neumanna 1. Wspólna pamięć programu i danych 2. Liniowa struktura adresowania pamięci 3. Sposób przechowywania danych i instrukcji jest identyczny 4. Sekwencyjne wykonanie rozkazów 5. Zmiana zawartości pamięci przez wykonywany program Jedna magistrala transmisyjna pomiędzy procesorem a pamięcią

Organizacja mikroprocesora

Rejestry procesora

Rejestry ogólnego przeznaczenia

Rejestry wskaźnikowe i indeksowe

Rejestr ang. znaczenie

SI Source Index

DI Destination Index

Rejestr ang.znaczenie

SP Stack Pointer

BP Base Pointer

IP (32b) Instruction Pointer

Rejestry segmentowe

Rejestr ang.znaczenie Znaczenie

CS Code Segment

register Rejestr segmentu

kodu

SS Stack Segment

register

Rejestr segmentu

stosu

DS Data Segment register Rejestr segmentu

danych

ES,FS,GS Extension Data

Segment register

Rejestry dodatkowych

segmentów danych

Rejestr znacznikowy

Rejestr znaczników SF (sign flag) - znacznik znaku - równy najbardziej znaczącemu bitowi wyniku 0 - wynik operacji dodatni 1 - wynik operacji ujemny ZF (zero flag) - znacznik zera 0 - wynik operacji różny od zera 1 - wynik operacji równy zeru PF (parity flag) - znacznik parzystości - ustawiany w zależności od liczby jedynek w najniższych 8 bitach wyniku 0 liczba jedynek w wyniku operacji nieparzysta 1 liczba jedynek w wyniku operacji parzysta AF (auxiliary carry flag) - znacznik przeniesienia połówkowego (pomocniczego) 0 - brak przeniesienia pomiędzy trzecim i czwartym bitem bajtu (BCD) 1 - występuje przeniesienie CF (carry flag) - znacznik przeniesienia 0 - wynik operacji arytmetycznej nie powoduje powstania przeniesienia z najbardziej znaczącego bitu 1 - wynik takie przeniesienie powoduje OF (overflow flag) - znacznik nadmiaru 0 - suma modulo 2 przeniesień z najbardziej znaczącej pozycji i pozycji przedostatniej jest równa 0 1 - suma modulo 2 przeniesień z najbardziej znaczącej pozycji i pozycji przedostatniej jest równa 1 (przekroczenie zakresu w kodzie U2) IF (interrupt flag) - znacznik przerwań 0 - brak zezwolenia na przyjmowanie przerwań z wejścia INT 1 - zezwolenie na przyjmowanie przerwań DF (direction flag) - znacznik kierunku, wskazuje, czy zawartości rejestrów SI i DI mają być zwiększane lub zmniejszane o jeden w czasie wykonywania operacji na ciągach 0 - rejestry są zwiększane 1 - rejestry są zmniejszane TF (trap flag) - znacznik pułapki umożliwiającej pracę krokową. Znacznik ten może być ustawiony za pomocą jedynki na odpowiedniej pozycji słowa stanu programu PSW (program status word) 0 - praca krokowa wyłączona 1 - praca krokowa włączona

Organizacja pamięci komputera

Adresacja pamięci

20b → 1MB (2b → 22= 4B, 3b → 23=8B,…. 220 → 1MB)

16b – rejestry

Baza (Segment ) i Przesunięcie (Offset)

1 Adres fizyczny (AF) 20b

2 Adres logiczny (AL)

3 Zapis: Baza: Przesunięcie (16b:16b )

4 Adres efektywny (AF)

Przykład 1:

Segment = 0111 1010 1101 1001

Offset = 1011 0010 1000 1011

AF = 16* Segment + Offset

=> Segment -> 4b w lewo:

0111 1010 1101 1001 0000

+ 1011 0010 1000 1011

1000 0110 0000 0001 1011

Przykład 2

Segment = 0D94Ah

Offset = 0A527h

AF = ?

Pisanie programów w asemblerze (kompilacja, konsolidacja, uruchomienie i testowanie )

Pierwszy program w Asemblerze

.model small

.data

napis db 'pierwszy program w Asemblerze $'

.code

start:

mov ax,seg napis ; = mov ax, @data

mov ds,ax

mov dx,offset napis

mov ah,9

int 21h

mov ah,4ch

int 21h

end start