/**
   * Loads the program in the assembly text area and passes to the CPU for processing Creates the
   * data segment, stack segment and code segment
   */
  public void assemblyProgram() { // TODO Auto-generated method stub

    resetEverything();
    simulator.reset();

    simulator.loadProgram(new StringBuffer(editorPane.getText()));
    if (simulator.canExecute()) {
      JPanel dataTable = new JPanel(new BorderLayout());
      JLabel dataLabel = new JLabel("Data Segment");
      dataLabel.setForeground(new Color(23, 88, 154));
      dataLabel.setFont(new Font("Helvetica", Font.BOLD, 14));
      dataTable.add(dataLabel, BorderLayout.NORTH);
      dataTable.add(createDataTable(), BorderLayout.SOUTH);
      memoryPanel.add(dataTable);
      dataTable.setBackground(new Color(246, 253, 219));

      JPanel codeTable = new JPanel(new BorderLayout());
      JLabel codeLabel = new JLabel("Code Segment");
      codeLabel.setFont(new Font("Helvetica", Font.BOLD, 14));
      codeLabel.setForeground(new Color(23, 88, 154));
      codeTable.add(codeLabel, BorderLayout.NORTH);
      codeTable.add(createTable(true), BorderLayout.SOUTH);
      memoryPanel.add(codeTable);
      codeTable.setBackground(new Color(246, 253, 219));

      JPanel stackTable = new JPanel(new BorderLayout());
      JLabel stackLabel = new JLabel("Stack Segment");
      stackLabel.setForeground(new Color(23, 88, 154));
      stackLabel.setFont(new Font("Helvetica", Font.BOLD, 14));
      stackTable.add(stackLabel, BorderLayout.NORTH);
      stackTable.add(createStackTable(), BorderLayout.SOUTH);
      memoryPanel.add(stackTable);
      memoryPanel.setBackground(new Color(246, 253, 219));
      stackTable.setBackground(new Color(246, 253, 219));

      addInstructions();
      addDataInstructions();

      repaint();
    }
  }