Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.Scanner;
- public class Programm {
- static int MAX_REG = 10;
- static int akkumulator;
- static int PC = 0;
- static int[] register = new int[MAX_REG];
- public static void main(String args[]) {
- initReg(register);
- String dateiName = "RAM.txt";
- ladeDatei(dateiName);
- }
- private static void ladeDatei(String datName) {
- File file = new File(datName);
- if (!file.canRead() || !file.isFile())
- System.exit(0);
- BufferedReader in = null;
- try {
- in = new BufferedReader(new FileReader(datName));
- String zeile = null;
- while ((zeile = in.readLine()) != null) {
- if(PC == 99) break; //Programm Ende, Hlt 99
- for (int i = 0; i<PC-1; i++) {
- zeile = in.readLine();
- }
- leseZeile(zeile);
- in.close();
- in = new BufferedReader(new FileReader(datName));
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (in != null)
- try {
- in.close();
- } catch (IOException e) {
- }
- }
- }
- private static void leseZeile(String zeile) {
- String befehl = zeile.substring(0, 2);
- String adresse = zeile.substring(2, 4);
- befehlsTabelle(befehl, adresse);
- return;
- }
- private static void befehlsTabelle(String befehl, String adresse) {
- int wert = Integer.parseInt(adresse);
- switch (befehl) {
- case "01":
- akkumulator += register[wert];
- break;
- case "02":
- akkumulator -= register[wert];
- break;
- case "03":
- akkumulator *= register[wert];
- break;
- case "04":
- akkumulator /= register[wert];
- break;
- case "05":
- akkumulator = register[wert];
- break;
- case "06":
- akkumulator = wert;
- break;
- case "07":
- register[wert] = akkumulator;
- break;
- case "08":
- Scanner sc = new Scanner(System.in);
- System.out.print("Bitte Wert fΓΌr n eingeben: ");
- register[wert] = sc.nextInt();
- sc.close();
- break;
- case "09":
- System.out.println(register[wert]);
- break;
- case "0A":
- PC = wert;
- return;
- case "0B":
- PC = wert;
- return;
- case "0C":
- if (akkumulator == 0) {
- PC = wert;
- return;
- }
- break;
- case "0D":
- if (akkumulator != 0) {
- PC = wert;
- return;
- }
- break;
- case "0E":
- if (akkumulator < 0) {
- PC = wert;
- return;
- }
- break;
- case "0F":
- if (akkumulator <= 0) {
- PC = wert;
- return;
- }
- break;
- case "10":
- if (akkumulator > 0) {
- PC = wert;
- return;
- }
- break;
- case "11":
- if (akkumulator >= 0) {
- PC = wert;
- return;
- }
- break;
- }
- PC++;
- return;
- }
- private static void initReg(int[] register) {
- for (int i = 0; i < register.length; i++) {
- register[i] = 0;
- }
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement