1.7 Assembler Programmierung



Ähnliche Dokumente
Einführung in PHP. (mit Aufgaben)

Java Einführung Operatoren Kapitel 2 und 3

Version 0.3. Installation von MinGW und Eclipse CDT

Einführung in die C++ Programmierung für Ingenieure

Zahlensysteme: Oktal- und Hexadezimalsystem

Computerarithmetik ( )

Erstellen einer digitalen Signatur für Adobe-Formulare

2. Negative Dualzahlen darstellen

Prozessor HC680 fiktiv

Auswertung erstellen: Liste mit -

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Kurzeinführung LABTALK

Excel Pivot-Tabellen 2010 effektiv

Die Mikroprogrammebene eines Rechners

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

ARAkoll 2013 Dokumentation. Datum:

4D Server v12 64-bit Version BETA VERSION

Installation von Microsoft Visual C Express

Zeichen bei Zahlen entschlüsseln

Rillsoft Project - Installation der Software

teischl.com Software Design & Services e.u. office@teischl.com

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Tevalo Handbuch v 1.1 vom

5 Speicherverwaltung. bs-5.1 1

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Installationsanleitung

Beheben von verlorenen Verknüpfungen

SJ OFFICE - Update 3.0

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Mikrocontroller Grundlagen. Markus Koch April 2011

Anleitung. Für folgende Produkte: BeoSound 5 / BeoSound 5 Encore / DLNA Client Stereoanlagen

Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012

Programmablauf für die Batch Wlan Komplettpakete mit Windows CE

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Qt-Projekte mit Visual Studio 2005

Snippets - das Erstellen von "Code- Fragmenten" - 1

Anleitung zur Nutzung der OFML Daten von Cascando in pcon.planner

Seriendruck mit der Codex-Software

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Benutzerkonto unter Windows 2000

Individuelle Formulare

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Übungen zu C++ Kapitel 1

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil IV: Programmieren an Beispielen

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Updatehinweise für die Version forma 5.5.5

DB2 Kurzeinführung (Windows)

EDV-Fortbildung Kombi-Schulung Word-Excel Modul Excel. Informationen zum Programm. Die Programmoberfläche von Excel

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Anwendungsbeispiele Buchhaltung

Word 2010 Schnellbausteine

Stapelverarbeitung Teil 1

DOS-Sympas Scope Dateien in Excel einlesen

Hilfe zur Dokumentenverwaltung

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Dokumentation IBIS Monitor

Stand: Adressnummern ändern Modulbeschreibung

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

How to do? Projekte - Zeiterfassung

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Datensicherung und Wiederherstellung

Persönliches Adressbuch

Microsoft Access 2013 Navigationsformular (Musterlösung)

Einführung in. Logische Schaltungen

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Informatik 1 Tutorial

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Einführung in die Programmierung

Netzlaufwerke der Domäne von zu Hause/extern verbinden

Kurzbeschreibung S&S Arbeitszeiterfassung

Mikrocomputertechnik. Adressierungsarten

Anleitung OpenCms 8 Webformular Auswertung

CVR Seniorentreff vom 04. und Serienbriefe/Seriendruck. Serienbriefe / Seriendruck

Visual Basic Express Debugging

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Anschluss des ISP-Programmieradapters. Erste Programmierung mit Bascom

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

2. Programmierung in C

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Die Excel Schnittstelle - Pro Pack

EasyWk DAS Schwimmwettkampfprogramm

Arbeiten mit UMLed und Delphi

Layoutmodelle. Steffen Schwientek Große Klostergasse Friedberg schwientek@web.de Web :schlaukopp.org

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Bedienungsanleitung CAD-KAS Reklamationserfassung. Einen neuen Datensatz anlegen. Klicken Sie auf das + Symbol, um einen neuen Datensatz anzulegen.

Einführungskurs MOODLE Themen:

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Programmiersprachen und Übersetzer

Hilfe zur Urlaubsplanung und Zeiterfassung

Thema Stichwort Programm Letzte Anpassung Serienbrief erstellen Ablauf

Transkript:

1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet wird. Dieser binäre Code kann über eine Low Level Programmiersprache (Assembler) generiert werden. Assembler Programmierung wird in der Regel nur noch bei ganz maschinennahen Operationen benutzt z.b. Programmierung der Hardware, Device-Treiber, Interrupt- Routinen. Assemblercode ist eine Textdatei und kann mit jedem Editor, der ASCII-Code erzeugen kann generiert werden. Der Assembler ist ein Programm, das die Ass.Textdatei in eine binäre Datei umwandelt (Objekt-Datei). Sowohl die Segment- als auch die symbolischen Informationen sind mit in der Datei gespeichert. -> Mehrere Quelltextdateien können einzeln assembliert, dann zu einem Gesamtprogramm zusammengebunden werden -> Linker (Montierer) Der Linker sammelt die Segmente vom gleichen Type und löst die Querreferenzen (Bezüge auf Definitionen oder Sprungadressen in anderen Objektdateien) auf und erzeugt die ausführbare Datei. Das Betriebssystem ist verantwortlich für die Einlagerung eines Programms in den Speicher und zum Start der Ausführung. Die tatsächliche Adresse im Speicher ist also i.d.r. zum Zeitpunkt der Assemblierung nicht bekannt. Alle Befehle eines Programms, deren Adressbezüge sich bei einer Programmverschiebung verändern würden, werden in einer Tabelle gekennzeichnet, die mit dem Programmcode gespeichert ist. Das Betriebssystem korrigiert dann alle markierten Adressen durch eine Offsetberechnung auf die gewünschte Adresse (Relokation). Jede höhere Programmiersprache erzeugt i.d.regel Assembler als Zwischencode. Oder es lässt sich der Assemblercode zumindest als Option generieren. Binärcode lässt sich zu Assemblercode zurückverwandeln -> Disassemblierung. Binärcode lässt sich schrittweise ausführen und alle Änderungen der Registerinhalte des Prozessors sind darstellbar -> zur Fehlersuche -> Debugger Der Debugger: Dies ist eine Software zur Analyse von Programmen. Es lassen sich interaktiv Programmteile ausführen, Haltepunkte (breakpoints) einbringen und Variablen oder Datenbereiche analysieren. Durch Debug-Informationen im Programm kann der Debugger eine Verbindung des binären Codes zu dem lesbaren Quellcode herstellen (symbolisches debuggen). Softwarewerkzeuge der Nachrichtentechnik Vorlagen zur Vorlesung WS 2006/2007 17

Identifikation der Assemblerstruktur an einem Beispiel Ausgabe eines Textes auf dem Bildschirm mit Hilfe einer Standardfunktion (DOS-Call) ; Festlegung von symbolischen Namen -> Assemblierer-Anweisungen BILDAUS equ 9 ; MS-DOS-Funktion: Bildschirmausgabe DOSINT equ 21h ; MS-DOS-Interruptnummer CR equ 13 ; ASCII-Code für <Carriage Return> LF equ 10 ; ASCII-Code für <Line Feed> EDB equ '$' ; Textbegrenzer für die MS-DOS-Funktion 9.DATA ; Ab hier stehen Datendefinition -> Datensegment GRUSS db 'Guten Morgen!' CR, LF, EDB.CODE mov ax, @data mov ds, ax ; Ab hier stehen Maschinenbefehle -> Codesegment ; @data (Standard-Assemblierer-Variable) ; zeigt auf die Adresse des Datensegments ; Datensegment-Register setzen mov dx, OFFSET GRUSS ; Adresse des Ausgabetextes nach DX holen mov ah, BILDAUS ; MS-DOS-Funktionsnummer nach AH holen int DOSINT ; und Funktion ausführen... Folgende Strukturen sind zu erkennen: Definitionen von symbolischen Konstanten Deklarationen von Daten (Namensgebung, Speicherbelegung) Strukturanweisungen (Segmente) Programmcode in Form von Assemblerzeilen Kommentarfelder Definitionen von symbolischen Konstanten [Name] equ [Ausdruck] Bs: CR equ 13 LF equ CR 3 Definitionen können voneinander abhängen, jedoch ist die Reihenfolge wichtig. Die Berechnung der rechten Seite wird vom Assembler ausgeführt und benötigt keinen Speicherplatz oder Rechenzeit während des Programmlaufs. Softwarewerkzeuge der Nachrichtentechnik Vorlagen zur Vorlesung WS 2006/2007 18

Deklaration von Daten Durch Anweisungen wie db, dt usw. wird Speicherplatz reserviert und benannt. Dieser Speicher wird entweder durch Konstanten im Operatorfeld vorbesetzt und beim Laden des Programms eingetragen oder durch? als undefiniert deklariert. z.b: db? reserviert ein Byte. Durch die dup Anweisung kann die Deklaration erweitert werden. Z.B: ZEILE db 80 dub (?) reserviert 80 Bytes ohne sie zu initialisieren und gibt der Speicherstelle den Namen ZEILE Der Name, der mit der Speicherstelle verknüpft ist, wird in einer internen Liste des Assemblers zusammen mit dem Segment, der Segmentadresse und dem Offset innerhalb des Segments angelegt. Abbildung 2: Befehle zur Datendefinition Im Programm kann man dann zugreifen auf 1) Zeiger auf die Adresse: mov ax, [Text_Puffer] Diese Anweisung lädt den Wert aus der Speicherstelle Text_Puffer ins Register ax 2) Die Adresse selbst (im Segment) : mov dx, offset Text_Puffer mov ax, [dx] Softwarewerkzeuge der Nachrichtentechnik Vorlagen zur Vorlesung WS 2006/2007 19

Strukturanweisungen (s.unten) Programmcode Anhand des Beispielprogramms kann man leicht die Struktur der ausführbaren Assemblerzeile erkennen: Abbildung 3:Aufbau einer Assemblerzeile Diskussion der Befehlsliste Steuerbefehle Ein-Byte Datenkorrektur- und konvertierungsbefehle Operandenbefehle o Transportbefehle (mov), fast alle denkbaren Kombinationen zwischen Register, Konstanten, Variablen und Registerinhalten sind möglich Arithmetische Operationen o Innerhalb der Integereinheit: Addition, Subtraktion, Multiplikation, Division, Inkrement, Dekrement, Negierung, Boolsche Operationen: AND, OR, NOT, XOR o Innerhalb der Gleitkomma-Recheneinheit: Die floating point unit (FPU) ist eine eigenständige Einheit mit speziellen Registern und eigenen Assemlerbefehlen. Ab Pentium Prozessoren ist die FPU bei Intel in der CPU integriert. Sprungbefehle o Unbedingte Sprünge, relativ oder absolut; innerhalb des Segments oder über Segmentgrenzen hinaus. o Bedingte Sprünge: in Abhängigkeit von Statusflags der CPU: z.b Carry, Zero, Overflow, Sign, Parity Unterprogrammaufrufe (call) Stapelbefehle (push, pop) Softwarewerkzeuge der Nachrichtentechnik Vorlagen zur Vorlesung WS 2006/2007 20

Segmentanweisungen Segmentanweisungen dienen dazu, 1) die Zuordnung der im Programm abgelegten Anweisungen und Daten zu den Segmentregistern der CPU zu erklären. 2) die Speicherbereiche physikalisch trennbar zu machen. D.h. Trennung von Code und Daten, damit z.b. die geschützte Information des Codesegments nicht durch fehlerhafte Datenzugriffe zerstört wird, oder damit Code in einen Adressbereich gelegt werden kann, wo nur Read Only Memory existiert. 3) Informationen über gemeinsame Anordnung von Segmenten über Dateigrenzen hinaus (werden vom Linker ausgewertet). ; Segmentanfang: <SegName> SEGMENT [Anordnung] [Verbindung] [Verwendung] ['Klasse'] ASSUME <Segmentregister>:<SegName> <SegName> ENDS ; Segmentende Diese vollständige Deklaration von Segmenten ist nicht unbedingt nötig und u.u. sogar störend. In Verbindung mit höheren Programmiersprachen erzeugen die Compiler eigene Segmentnamen, die man übernehmen muss, damit die Programme zueinander passen. Es ist daher meist eine vereinfachte Deklaration vorgesehen, die das Code- bzw. Datensegment der Hochsprache mit fortsetzt. Codesegment: Datensegment: Stacksegment :.CODE.DATA.STACK [Größe] Softwarewerkzeuge der Nachrichtentechnik Vorlagen zur Vorlesung WS 2006/2007 21