Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Assembler Programmierung Technische Informatik
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Assembler Programmierung Technische Informatik
 
Autor Nachricht
sevenelf
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 17.11.2012
Beiträge: 51

BeitragVerfasst am: 02 Mai 2013 - 18:54:53    Titel: Assembler Programmierung Technische Informatik

Hallo, ich habe ein Praktikum in Technische Informatik (TI) bzgl. Assemblerprogrammierung. Da wir lediglich die Grundlagen in TI besprochen haben bzgl. Registern, habe ich keinerlei Erfahrung in der Programmierung von Assemblern.
Ich hoffe mir kann jemand bei folgender Aufgabe behilflich sein.

Hier der Assemblercode:
MOV SI, 0
MOV BX, BP
ADD BX, DX
m1: MOV CL, [BP+SI]
MOV [BX+SI], CL
INC SI
CMP SI, DX
JNE m1

welche Funktion hat das Programmstück, was bedeuten die Angaben in den Klammern [ ] genau?

Im zweiten Schritt soll der Code folgendermaßen abgeändert werden:
MOV SI, 0
MOV DI, DX
MOV BX, BP
ADD BX, DX
m1: MOV CL, [BP+DI-1]
DEC DI
MOV [BX+SI], CL
INC SI
CMP SI, DX
JNE m1

Was bedeuten die auftretenden Veränderungen und wo liegen ihre Ursachen?
Ich hab leider nicht den blassesten Schimmer was mir die auftretenden Veränderungen in den Registern sagen sollen bzw. was es bedeutet. Crying or Very sad

Ich hoffe mir kann jemand helfen. Vielen Dank. Very Happy
W.Kaiser
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 09.01.2006
Beiträge: 1623
Wohnort: BGL

BeitragVerfasst am: 03 Mai 2013 - 21:26:00    Titel:

Eckige Klammern kennzeichnen Adressen. Beide Programmstücke bestehen jeweils aus einer bedingten Schleife, die zwischen den beiden symbolischen Adressen „m1“ abläuft. Und vor der Schleife befindet sich ein Vorspann, der die Register für die Schleife mit Daten versorgt.

Um da jetzt etwas zu verstehen, lade aus BornCity von der „Free Library“ das Buch „Einführung in Assembler (Kompletter Titel)“ und lerne die hier in den beiden Beispielen verwendeten Befehle.


Schreibe dann hinter die Befehle deines Assemblercodes als Kommentar die Funktion des jeweiligen Befehls, etwa so:

MOV SI, 0 ; Source Index-Register <= 0
MOV BX, BP ; EDIT: Base-Register <= Base Pointer-Register
ADD BX, DX ; Base-Register + Daten-Register => Base-Register
m1: MOV CL, [BP+SI] ; Count-Register_L <= [Base Pointer-R + Source Index-Register]
MOV [BX+SI], CL ; [ Base-Register + Source Index] <= Count-Register_L
INC SI ; Source Index + 1
CMP SI, DX ; AF, CF, PF, SF, ZF: SI - DX
JNE m1 ; JMP if not equal: Zero Flag = ZF <> 0 => Loop m1


Jetzt analysieren:

SI = 0
Welche Werte haben die anderen Register?
Die Schleife wird mit SI und DX gesteuert. Wann ist die Sprungbedingung nicht mehr erfüllt, nach wie vielen Zyklen?
Und mit CL, was wird da getrieben?



Der zweite Teil ist dann auch nicht viel anders.




Mit freundlichen Grüßen

W. Kaiser
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Assembler Programmierung Technische Informatik
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum