diff --git a/src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java b/src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java new file mode 100644 index 0000000..3ec2e1b --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java @@ -0,0 +1,64 @@ +package fabrik.simulator.pic16f84; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class stringTObefehl { + + public static void main(String[] args) { + String dateiPfad = "C:\\CloudStation\\Eigene Daten\\DHBW-Studium\\Simulator_git\\src\\main\\java\\fabrik\\simulator\\pic16f84\\TPicSim1.LST"; // Pfad zur Testdatei ---> hier musst du deine Variable einfügen Paul + int[] programmspeicher = parseTestDatei(dateiPfad); + + // Programmspeicher + System.out.println("Programmspeicher wird ausgegebene:"); + for (int i = 0; i < programmspeicher.length; i++) { + if (programmspeicher[i] != 0) { + System.out.printf("0x%04X: 0x%04X%n", i, programmspeicher[i]); + } + } + } + + public static int[] parseTestDatei(String dateiPfad) { + List zeilen = new ArrayList<>(); + + // Bei diesem Schritt wird jetzt Zeile für Zeile das richtige Programm eingelesen + try (BufferedReader leser = new BufferedReader(new FileReader(dateiPfad))) { + String zeile; + while ((zeile = leser.readLine()) != null) { + zeilen.add(zeile); + } + } catch (IOException e) { + System.err.println("Fehler beim Lesen der Datei: " + e.getMessage()); + e.printStackTrace(); + } + + // Initialisierung des Programmspeichers mit 1024 Speicherplätzen + int[] programmspeicher = new int[1024]; // Wie viele Programmspeicherplätze gibt es? --> 1024 + + // Adresse und Befehle werden ignoriert und nur die Befehle werden in den Programmspeicher gespeichert + + for (String zeile : zeilen) { + String[] teile = zeile.split("\\s+"); // Spaltenweise werden die einzelnen Befehle getrennen + if (teile.length >= 2) { + try { + int adresse = Integer.parseInt(teile[0], 16); // Adresse in Hexadezimal umwandeln + int befehl = Integer.parseInt(teile[1].substring(0, 4), 16); // Befehl extrahieren und in Hexadezimal umwandeln + + // Ausgabe der eingelesenen Zeile + System.out.printf("Gelesene Zeile: %s%n", zeile); + + programmspeicher[adresse] = befehl; // Befehl im Programmspeicher speichern + } catch (NumberFormatException e) { + // Wenn ein Fehler aufkommt wird diese Zeile ignoriert funktioniert + System.err.println("Fehler beim Parsen einer Zeile: " + zeile); + continue; + } + } + } + + return programmspeicher; + } +}