5.BMaschinensprache und Assembler



Ähnliche Dokumente
Die Maschinenprogrammebene eines Rechners Jörg Roth 294

Zusammenfassung: Grundlagen der Informatik Zahlensysteme, b-adische Darstellung, Umrechnung Beispiel: Umrechnung von ( ) 10 ins Dualsystem

Kap 5. 5 Die Maschinenprogrammebene eines Rechners. int a=1, b=2; a = a+2*b; Höhere Programmiersprache. Assembler und Maschinenprogramm

Technische Informatik 1

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Mikrocomputertechnik. Adressierungsarten

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Grundlagen der Informatik

Programmiersprachen und Übersetzer

Die Mikroprogrammebene eines Rechners

RO-Tutorien 15 und 16

Computerarithmetik ( )

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

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Technische Informatik 2 Adressierungsarten

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

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

Persönliches Adressbuch

Zeichen bei Zahlen entschlüsseln

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

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

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

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Anlegen eines DLRG Accounts

Zahlensysteme. von Christian Bartl

Individuelle Formulare

Daten verarbeiten. Binärzahlen

28. März Name:. Vorname. Matr.-Nr:. Studiengang

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

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

Zahlensysteme: Oktal- und Hexadezimalsystem

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

SJ OFFICE - Update 3.0

Grundlagen der Informatik (BSc) Übung Nr. 5

Professionelle Seminare im Bereich MS-Office

Leichte-Sprache-Bilder

Assembler am Beispiel der MIPS Architektur

Stephan Brumme, SST, 2.FS, Matrikelnr

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

Beispiel: A[300] = h + A[300]

Codex Newsletter. Allgemeines. Codex Newsletter

Kommunikations-Management

XT Großhandelsangebote

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Webalizer HOWTO. Stand:

Updatehinweise für die Version forma 5.5.5

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

N Bit binäre Zahlen (signed)

Sucosoft S40 KOP/FBS KOP FBS

PowerPoint 2010 Mit Folienmastern arbeiten

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

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln.

Simplex-Umformung für Dummies

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

Primzahlen und RSA-Verschlüsselung

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

YouTube: Video-Untertitel übersetzen

Übung: Verwendung von Java-Threads

Wissenswertes über binäre Felder

Kleines Handbuch zur Fotogalerie der Pixel AG

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Was Sie bald kennen und können

Stand: Adressnummern ändern Modulbeschreibung

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

WORKSHOP für das Programm XnView

Online Newsletter III

2. Negative Dualzahlen darstellen

Erstellen einer digitalen Signatur für Adobe-Formulare

VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. Bachstraße 47, 3580 Mödring

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Fremdsprachen bearbeiten

Einführung in. Logische Schaltungen

Excel Pivot-Tabellen 2010 effektiv

Materialupload. Verwalten von Unterrichtsmaterialien. über das STiNE-Webportal. Universität Hamburg Tor zur Welt der Wissenschaft

Einführung in das Arbeiten mit MS Excel. 1. Bearbeitungs

Version 0.3. Installation von MinGW und Eclipse CDT

Frankieren in Microsoft Word mit dem E Porto Add in der Deutschen Post

Anwendungsbeispiele Buchhaltung

Grammatiken. Einführung

Klausur Mikroprozessortechnik 29. März 2010

Hochschulrechenzentrum. chschulrechenzentrum #96. Freie Universität Berlin

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10

6 Das Kopieren eines bereits bestehenden Inhaltselements

Notwendigkeit für andere Instruktionsformate

7 Rechnen mit Polynomen

Anleitung Abwesenheitsmeldung und -Weiterleitung (Kundencenter)

Eigene gestalten Internet- . In meinem heutigen Beitrag möchte ich mich speziell mit Outlook 2007 befassen.

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

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

Erstellen von Mailboxen

POP -Konto auf iphone mit ios 6 einrichten

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

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Anleitung zum GEPA EXCEL Import Tool

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

Transkript:

Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So steht das Wort (02538820) 16 für den symbolischen Befehl add $17, $18, $19 bzw. add $s1, $s2, $s3 Während der Befehl (02538820) 16 für den Prozessor leicht "verständlich" ist, ist er für Menschen schwer lesbar. Für Menschen ist dagegen die Textzeile "add $s1, $s2, $s3" verständlicher. Das "add" im Befehl wird Mnemonic genannt. Die Registerbenennung kann in der gewünschten Form erfolgen. Zusätzlich gibt es syntaktische Kennzeichnungen für verschiedene Adressierungsarten (siehe unten).

Die Maschinenprogrammebene eines Rechners Jörg Roth 269 Zur Lösung dieses Problems verwendet man zur Programmierung auf Maschinenebene einen so genannten Assembler: Assembler lesen Texte zeilenweise und wandeln in der Regel jede Textzeile in einen Maschinenbefehl um. Ein typischer Befehl besteht aus einem Mnemonic (z.b. addi) und Operanden (z.b. $s1), letztere durch Kommata oder Blanks getrennt. Die Übersetzung von Assembler-Texten in Maschinenbefehle ähnelt der Compilierung bei höheren Programmiersprachen der Prozess wird Assemblierung genannt. Nicht korrekt geformte Texte können Syntaxfehler enthalten, so dass kein Maschinenprogramm generiert werden kann. Es gibt eine 1-1-Übersetzung von Assembler-Befehlen zu Maschinen- Befehlen man verfügt also bei weitem nicht über die Möglichkeiten einer höheren Programmiersprache.

Die Maschinenprogrammebene eines Rechners Jörg Roth 270 Weitere Funktionen eines Assemblers: Hantieren mit symbolischen Adressen: Der Entwickler kann bestimmten Speicheradressen Namen (Label) zuordnen. Der Assembler erkennt diese Namen und fügt bei der Übersetzung die Originaladressen ein. Hantieren mit symbolischen Sprungzielen: Sprungbefehle führen den Programmablauf an einer anderen Stelle des Programms fort. Diese Stellen können symbolisch benannt werden. Bei relativen Sprüngen (z.b. "springe 100 Bytes nach vorne") berechnet der Assembler die Sprungdifferenz anhand des symbolischen Namens automatisch. Komfortables Einfügen statischer Daten: Neben den Maschinenbefehlen enthält ein Programm auch statische Bereiche, z.b. feste Zeichenketten oder numerische Konstanten. Über Assembler-Befehle können solche Datenbereiche komfortabel erstellt werden. Angabe von numerischen Konstanten in verschiedenen Zahlensystemen, z.b. "100" (dezimal) "0xFF" (hexadezimal).

Die Maschinenprogrammebene eines Rechners Jörg Roth 271 Pseudobefehle: häufig benutzte Befehle können durch eigene Befehlskürzel abgekürzt werden. So existiert in MIPS der Pseudobefehl li (load immediate), z.b. in li $s1, 100 # Lade die Zahl 100 in das Register $s1 der allerdings bei der Assemblierung in den Befehl ori $s1, $zero, 100 # $s1 := 0 OR 100 übersetzt wird. Der zweite Befehl ist inhaltsgleich aber für Menschen schwerer lesbar. Makros sind mehrzeilige Befehlssequenzen, die bei der Assemblierung textuell eingefügt werden. Das kann die Lesbarkeit erhöhen. Markos können auch parametrisiert werden, dürfen aber nicht mit Unterprogrammen verwechselt werden, da sie zur Assemblierzeit textuell eingefügt werden und keine Verwaltung zur Laufzeit erfordern.

Die Maschinenprogrammebene eines Rechners Jörg Roth 272 Ein MIPS-Beispielprogramm:.text # Schlüsselwort für den Anfang des Programmtexts main: # Einstiegspunkt des Programms addi $s1, $zero, 20# Lade 20 in das Register $s1 ($s1 := 0 + 20) sll $s1, $s1, 3 # Schiebe $s1 um 3 Bit nach links ($s1 := $s1 * 8) addi $s2, $s1, 10 # $s2 := $s1+10 Dieses Programm berechnet 20*8+10 und legt das Ergebnis in $s2 ab. Bemerkung: Dieses Programm soll lediglich die Wirkungsweise von Maschinenbefehlen illustrieren. In der Realität würde man das Ergebnis der Rechnung (170) direkt dem Register $s2 zuweisen.

Die Maschinenprogrammebene eines Rechners Jörg Roth 273 5.CDie MIPS-Befehle Die MIPS-Befehle orientieren sich an folgenden vier Design-Prinzipien: Simplicity favors regularity ("Einfachheit bevorzugt Regelmäßigkeit"): Nur eine Befehlslänge von 32 Bit Nur drei Befehlsformate Innerhalb eines Befehlsformats: feste Anzahl von Operanden Smaller is faster ("Kleiner ist schneller"): Eine kleine Anzahl von Registern begünstigt eine schnelle Befehlsabarbeitung.

Die Maschinenprogrammebene eines Rechners Jörg Roth 274 Good design demands compromise ("Gutes Design erfordert einen Kompromiß"): Einiges ist unbequem, z.b. immer exakt drei Operanden für bestimmte Befehle zu haben. Einige wünschenswerte Befehle fehlen, z.b. Register-Kopien. Ein Teil der Unbequemlichkeit wird durch Pseudo-Befehle behoben. Make the common case fast ("Mache den üblichen Fall schnell"): Beispiel der Angabe von Konstanten: Für 16-Bit Konstanten ("der übliche Fall") kann MIPS dies in einem 32-Bit-Befehl ausdrücken. Für größere Konstanten ("der unübliche Fall") erfordert dies 2 Befehle.

Die Maschinenprogrammebene eines Rechners Jörg Roth 275 Bezeichnungen: Rd, Rs, Rt: Register $0...$31 bzw. $v0 $v1, $a0 $a3, $t0 $t7 etc. I: Direktoperand (immediate): Operand wird durch 16 Bit gegeben, die auf 32 Bit erweitert werden: Beispiel :1000 stellt den direkten Wert der Zahl 1000 dar. Hi, Lo: Multiplikations-, Divisionsergebnis Label: Sprungziel shamt: Feste Zahl von Schiebeschritten (vergleichbar mit I) Address(Rs): Zugriff auf die Speicherzelle Mem[Address+Rs], Beispiel 1000($s1) für Zugriff auf Mem(1000+$s1) Die Bedeutung der Spalte F (Format) wird weiter unten erklärt.

Die Maschinenprogrammebene eines Rechners Jörg Roth 276 Arithmetische Operationen: Befehl Beschreibung Vorzeichen F add Rd, Rs, Rt Rd := Rs + Rt mit R addu Rd, Rs, Rt Rd := Rs + Rt ohne R addi Rt, Rs, I Rt := Rs + I mit I addiu Rt, Rs, I Rt := Rs + I ohne I sub Rd, Rs, Rt Rd := Rs Rt mit R subu Rd, Rs, Rt Rd := Rs Rt ohne R div Rs, Rt Lo := Rs/Rt, Hi := Rs mod Rt mit R divu Rs, Rt Lo := Rs/Rt, Hi := Rs mod Rt ohne R mult Rs, Rt (Hi, Lo) := Rs Rt mit R Hi = oberen 32 Bits, Lo = unteren 32 Bits multu Rs, Rt (Hi, Lo) := Rs Rt Hi = oberen 32 Bits, Lo = unteren 32 Bits ohne R

Die Maschinenprogrammebene eines Rechners Jörg Roth 277 Bitweise logische Verknüpfungen: Befehl Beschreibung F and Rd, Rs, Rt Rd := Rs Rt R andi Rt, Rs, I Rt := Rs I I nor Rd, Rs, Rt Rd := Rs Rt R or Rd, Rs, Rt Rd := Rs Rt R ori Rt, Rs, I Rt := Rs I I xor Rd, Rs, Rt Rd := Rs Rt R xori Rt, Rs, I Rt := Rs I I

Die Maschinenprogrammebene eines Rechners Jörg Roth 278 Schiebeoperationen: Befehl Beschreibung F sll Rd, Rt, shamt Rd := Rt links-geschoben um shamt Bits R sllv Rd, Rt, Rs Rd := Rt links-geschoben um Rs Bits R srl Rd, Rt, shamt Rd := Rt rechts-geschoben um shamt Bits R srlv Rd, Rt, Rs Rd := Rt rechts-geschoben um Rs Bits R sra Rd, Rt, shamt Rd := Rt rechts-geschoben um shamt Bits R (arithmetisch, d.h. Erhaltung des Vorzeichens) srav Rd, Rt, Rs Rd := Rt rechts-geschoben um Rs Bits (arithmetisch, d.h. Erhaltung des Vorzeichens) R

Die Maschinenprogrammebene eines Rechners Jörg Roth 279 Vergleichen von Inhalten: Befehl Beschreibung Vorzeichen F slt Rd, Rs, Rt Rd := 1 wenn Rs < Rt, Rd := 0 wenn Rs Rt sltu Rd, Rs, Rt Rd := 1 wenn Rs < Rt, Rd := 0 wenn Rs Rt slti Rt, Rs, I Rt := 1 wenn Rs < I, Rt := 0 wenn Rs I sltiu Rt, Rs, I Rt := 1 wenn Rs < I, Rt := 0 wenn Rs I mit ohne mit ohne R R I I

Die Maschinenprogrammebene eines Rechners Jörg Roth 280 Laden und Speichern: Befehl Beschreibung F mfhi Rd Rd := Hi R mflo Rd Rd := Lo R lui Rt, I Rt := I 2 16 I (oberste 16 Bit = I, unterste 16 Bit = 0) lb Rt, Address(Rs) Rt := Byte in Mem[Address + Rs] I (Vorzeichen auf 32 Bit erweitert) lbu Rt, Address(Rs) Rt := Byte in Mem[Address + Rs] I (keine Vorzeichenerweiterung) sb Rt, Address(Rs) Byte in Mem[Address + Rs] := Rt I lw Rt, Address(Rs) Rt := Word in Mem[Address + Rs] I sw Rt, Address(Rs) Word in Mem[Address + Rs] := Rt I

Die Maschinenprogrammebene eines Rechners Jörg Roth 281 Relative Sprünge (Branch): Befehl Beschreibung Vorzeichen F beq Rs, Rt, Label Springe wenn Rs =Rt egal I bne Rs, Rt, Label Springe wenn Rs Rt egal I bgez Rs, Label Springe wenn Rs 0 mit I bgtz Rs, Label Springe wenn Rs > 0 mit I blez Rs, Label Springe wenn Rs 0 mit I bltz Rs, Label Springe wenn Rs < 0 mit I

Die Maschinenprogrammebene eines Rechners Jörg Roth 282 Absolute Sprünge (Jump): Befehl Beschreibung F j Label Springe J jal Label Unterprogrammaufruf J jr Rs Springe zur Adresse in Rs R jalr Rs Unterprogrammaufruf zur Adresse in Rs R Sonstige Befehle: Befehl Beschreibung F syscall Betriebssystemaufruf R break n Exception n aufrufen R

Die Maschinenprogrammebene eines Rechners Jörg Roth 283 Die wichtigsten Pseudobefehle: Befehl li Rd, I la Rd, Label move Rd, Rs Beschreibung Rd := I Rd := Adresse des Labels (Achtung: nicht den Inhalt der Speicherzelle kopieren, sondern die Adresse der Speicherzelle) Rd := Rs

Die Maschinenprogrammebene eines Rechners Jörg Roth 284 Adressierungsarten: Durch den Befehl wird die jeweilige Adressierungsart festgelegt, also die Art, wie auf einen Operanden zugegriffen wird, z.b. add: Registeradressierung addi: Direktoperand Nicht bei jeder Assemblersprache ist das so. Bei einigen Assemblersprachen gibt es ein einziges Mnemonic für verschiedene Adressierungsarten. Der Assembler erkennt dann syntaktisch die jeweilige Variante und fügt automatisch die verschiedenen Binärbefehle ein. Beispiel Z80-Assembler ADD A, B # Addiere A := A + B (A, B sind CPU-Register) ADD A, 100 # Addiere A := A + 100 (addiere Direktoperand 100) ADD A, (HL) # Addiere A := A + Mem(HL) (HL ist ein Zeigerregister)

Die Maschinenprogrammebene eines Rechners Jörg Roth 285 Adressierungsarten des MIPS: Direktwert (immediate): eine Zahl i, die direkt im Befehl steht Register: ein Register, darstellt durch eine Registernummer r, z.b. r =17 für $s1 Speicher: Speicherinhalt einer Adresse a: Mem[a] Register-indirekt: eine Registernummer r definiert ein Register, das als Zeiger auf eine Speicheradresse benutzt wird: Mem[$r] Register-indirekt mit Versatz: eine Registernummer r definiert eine Zeigerregister, zu dem eine Adresse a hinzuaddiert wird: Mem[a + $r] Bemerkung: MIPS stellt die Adressierungsarten Speicher und Registerindirekt immer als Register-indirekt mit Versatz dar: Speicher: Mem[a + $zero] Register-indirekt: Mem[0 + $r]