void execute() {
		if (bus.command.equals(Bus.FOPEN)) {
			// It opens the file indicated in the data bus
			try {
				FileInputStream inStream = new FileInputStream(bus.data);
				lineReader =
					new BufferedReader(new InputStreamReader(inStream));
				// Acknowledge the CPU of the command execution
				bus.command = Bus.ACK;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		if (bus.command.equals(Bus.FCLOSE)) {
			// It closes the line reader and the input stream
			try {
				lineReader.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
			bus.command = Bus.ACK;
		}
		if (bus.command.equals(Bus.FREAD)) {
			// It reads the next line in the file and writes the string on the data bus
			// If it has reached the end of the file, it writes the label "DONE"
			try {
				if ((line = lineReader.readLine()) != null) {
					bus.data = line;
				} else {
					bus.data = "";
				}
				// Acknowledge the CPU of the command execution
				bus.command = Bus.ACK;
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
		}
	}