计算机指令仿真
发布时间:2020-12-13 20:46:06 所属栏目:PHP教程 来源:网络整理
导读:使用软件的方式仿真计算机的指令 import java.awt.Color;import javax.swing.JOptionPane;/* * To change this license header,choose License Headers in Project Properties. * To change this template file,choose Tools | Templates * and open the tem
使用软件的方式仿真计算机的指令 import java.awt.Color;
import javax.swing.JOptionPane;
/*
* To change this license header,choose License Headers in Project Properties.
* To change this template file,choose Tools | Templates
* and open the template in the editor.E
*/
// package computer_instrument;
/**
*
* @author NEWPLAN
*/
@SuppressWarnings("serial")
public class ComputerInstrution extends javax.swing.JFrame
{
public String FT = "FT:
",ST = "
ST:
",DT = "
DT:
",ET = "
ET:
";
public String MIN_FT = "FT:
",MIN_ST = "
ST:
",MIN_DT = "
DT:
",MIN_ET = "
ET:
";
/**
* Creates new form ComputerInstrution
*/
public ComputerInstrution()
{
this.FT += "M->IR
PC+1->PC
";
this.MIN_FT += "EMAR,R,SIR,CPST
PC->A,A+1,DM,CPPC,1->ST,CPST";
initComponents();
this.setSize(1100,700);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents()
{
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jComboBox1 = new javax.swing.JComboBox();
jComboBox2 = new javax.swing.JComboBox();
jComboBox3 = new javax.swing.JComboBox();
jComboBox4 = new javax.swing.JComboBox();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jComboBox5 = new javax.swing.JComboBox();
jLabel8 = new javax.swing.JLabel();
jComboBox6 = new javax.swing.JComboBox();
setDefaultCloSEOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("课程设计");
jLabel2.setText("指令格式");
jLabel3.setText("源寄存器");
jLabel4.setText("源寻址方式");
jLabel5.setText("目的寄存器");
jTextField1.setEditable(false);
jTextArea1.setEditable(false);
jTextArea2.setEditable(false);
jTextField1.setBackground(Color.gray);
jTextArea1.setBackground(Color.GRAY);
jTextArea2.setBackground(Color.gray);
/*
* jTextField1.addActionListener(new java.awt.event.ActionListener() {
* public void actionPerformed(java.awt.event.ActionEvent evt) {
* jTextField1ActionPerformed(evt); } });
*/
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"MOV","单操作指令","双操作指令","跳转指令,返回指令","转子指令"
}));
jComboBox1.setSelectedIndex(⑴);
jComboBox1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jComboBox1ActionPerformed(evt);
}
});
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"R0","R1","R2","R3"
}));
jComboBox2.setSelectedIndex(⑴);
jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"R","(R)","-(R)","(R)+","@(R)+","X(R)"
}));
jComboBox3.setSelectedIndex(⑴);
jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"R0","R3"
}));
jComboBox4.setSelectedIndex(⑴);
jComboBox2.setEnabled(false);
jComboBox3.setEnabled(false);
jComboBox4.setEnabled(false);
jComboBox5.setEnabled(false);
jComboBox6.setEnabled(false);
jLabel6.setText("指令周期");
jLabel7.setText("微命令");
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jTextArea2.setColumns(20);
jTextArea2.setRows(5);
jScrollPane2.setViewportView(jTextArea2);
jButton1.setText("生成指令");
jButton1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton1ActionPerformed(evt);
}
});
jButton2.setText("退出");
jButton2.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton2ActionPerformed(evt);
}
});
jButton3.setText("重新开始");
jButton3.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton3ActionPerformed(evt);
}
});
jLabel1.setText("选择指令");
jComboBox5.setMaximumRowCount(20);
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"MOV","COM","NEG","INC","DEC","SL","SR","JMP","RST","ADD","SUB","AND","OR","EOR"
}));
jComboBox5.setSelectedIndex(⑴);
jLabel8.setText("目的寻址方式");
jComboBox6.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"R","X(R)"
}));
jComboBox6.setSelectedIndex(⑴);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addGap(27,27,27)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jButton1,javax.swing.GroupLayout.Alignment.TRAILING,javax.swing.GroupLayout.PREFERRED_SIZE,98,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jButton3,javax.swing.GroupLayout.Alignment.TRAILING)))
.addGroup(
layout.createSequentialGroup()
.addGap(68,68,68)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jLabel2,57,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12,12,12)))
.addGroup(
layout.createSequentialGroup()
.addGap(68,68)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jLabel5,69,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel4,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel3,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel8,72,javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGap(39,39,39)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING,false)
.addComponent(
jComboBox2,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)
.addComponent(jComboBox3,139,Short.MAX_VALUE)
.addComponent(
jComboBox4,Short.MAX_VALUE)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addGap(0,Short.MAX_VALUE)
.addComponent(
jButton2))
.addComponent(
jComboBox6,Short.MAX_VALUE)
.addComponent(jTextField1)
.addComponent(
jComboBox1,Short.MAX_VALUE)
.addComponent(
jComboBox5,Short.MAX_VALUE))
.addGap(57,57)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addComponent(
jScrollPane1,261,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
jScrollPane2,258,Short.MAX_VALUE)
.addContainerGap())
.addGroup(
layout.createSequentialGroup()
.addComponent(
jLabel6)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED,Short.MAX_VALUE)
.addComponent(
jLabel7)
.addGap(155,155,155)))));
layout.setVerticalGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addGap(57,57)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jButton2)
.addComponent(jLabel6)
.addComponent(jLabel7))
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addGap(56,56,56)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jButton1))
.addGap(41,41,41)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel2)
.addComponent(
jComboBox1,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(24,24,24)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel1)
.addComponent(
jComboBox5,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(32,32,32)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jLabel3)
.addComponent(
jComboBox2,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(36,36,36)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jComboBox3,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel4))
.addGap(38,38,38)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel5)
.addComponent(
jComboBox4,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(31,31,31)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jComboBox6,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabel8))
.addGap(0,92,Short.MAX_VALUE))
.addGroup(
layout.createSequentialGroup()
.addGap(18,18,18)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jScrollPane2,javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(
jScrollPane1))))
.addContainerGap()));
pack();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
/*
* 退出系统
*/
System.exit(EXIT_ON_CLOSE);
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
/*
* 初始化系统
*/
jTextArea1.setText("");
jTextArea2.setText("");
jTextField1.setText("");
jComboBox1.setSelectedIndex(⑴);
jComboBox2.setSelectedIndex(⑴);
jComboBox3.setSelectedIndex(⑴);
jComboBox4.setSelectedIndex(⑴);
jComboBox5.setSelectedIndex(⑴);
jComboBox6.setSelectedIndex(⑴);
jComboBox2.setEnabled(false);
jComboBox3.setEnabled(false);
jComboBox4.setEnabled(false);
jComboBox5.setEnabled(false);
jComboBox6.setEnabled(false);
}
@SuppressWarnings("static-access")
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
/************************/
jTextArea1.setText("");
jTextArea2.setText("");
ST = "ST
";
DT = "DT
";
ET = "ET
";
MIN_ST = "
ST:
";
MIN_DT = "
DT:
";
MIN_ET = "
ET:
";
String tempString = "
";
String tXT_READString = "";
String messaStringjcombox2 = "",messaStringjcombox3 = "";
String messaStringjcombox4 = "",messaStringjcombox5 = "",messaStringjcombox6 = "";
JOptionPane tempJOptionPane = new JOptionPane();/* 毛病提示 */
/***********************************************************************************/
/* 选择指令方式 */
if (jComboBox1.getSelectedIndex() < 0)
{
tempJOptionPane.showMessageDialog(null,"指令毛病,指令模式非空,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
/* 指令格式 */
if (jComboBox5.getSelectedIndex() < 0)
{
tempJOptionPane.showMessageDialog(null,指令非空,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
messaStringjcombox5 = jComboBox5.getSelectedItem().toString();
/*
* ST周期
*/
switch (jComboBox1.getSelectedItem().toString())
{
case "MOV" :
case "双操作指令" :
if (jComboBox2.getSelectedIndex() < 0
|| jComboBox3.getSelectedIndex() < 0
|| jComboBox4.getSelectedIndex() < 0
|| jComboBox6.getSelectedIndex() < 0)
{
tempJOptionPane.showMessageDialog(null,源操作数和目的操作数均不能为空,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
messaStringjcombox2 = jComboBox2.getSelectedItem().toString();
messaStringjcombox3 = jComboBox3.getSelectedItem().toString();
messaStringjcombox4 = jComboBox4.getSelectedItem().toString();
messaStringjcombox6 = jComboBox6.getSelectedItem().toString();
switch (messaStringjcombox3)
{
case "R" :
ST += "
";
break;
case "-(R)" :
ST += messaStringjcombox2 + "⑴->"
+ messaStringjcombox2 + ","
+ "MAR
M->MDR->C
";
MIN_ST += messaStringjcombox2
+ "->A,A⑴,DM CPMAR,CP"
+ messaStringjcombox2
+ "T+1,CPT
"
+ "EMAR,SMDR,MDR->B,B,CPC,1->DT,CPDT";
break;
case "(R)" :
ST += messaStringjcombox2 + "->MAR
" + "M->MDR->C
";
MIN_ST += messaStringjcombox2
+ "->A,A,CPMAR,T+1,CPDT";
break;
case "(R)+" :
ST += messaStringjcombox2 + "->MAR
"
+ "M->MDR->C
" + messaStringjcombox2
+ "+1->" + messaStringjcombox2 + "
";
MIN_ST += messaStringjcombox2
+ "->A,CPT
"
+ messaStringjcombox2 + "->A,CP"
+ messaStringjcombox2
+ "1-DT,CPDT,CPDT";
break;
case "@(R)+" :
ST += messaStringjcombox2 + "->MAR
"
+ "M->MDR->C
" + messaStringjcombox2
+ "+1->" + messaStringjcombox2
+ "
C->MAR
M->MDR->C
";
MIN_ST += messaStringjcombox2
+ "->A,CPT
"
+ messaStringjcombox2
+ "->A,CPT
"
+ "C->A,CPSR
"
+ "EMAR,CPDT";
break;
case "X(R)" :
ST += "PC->MAR,M->MDR->C,PC+1->PC,C+"
+ messaStringjcombox2 + "->MAR,M->MDR->C
";
MIN_ST += "PC->A,CPT
"
+ "PC->A,SM,C->B,A+B,CPST
"
+ "EMAR,CPDT";
break;
default :
tempJOptionPane.showMessageDialog(null,"无效诗人!");
break;
}
break;
case "单操作指令" :
if (jComboBox4.getSelectedIndex() < 0
|| jComboBox6.getSelectedIndex() < 0)
{
tempJOptionPane.showMessageDialog(null,目的操作数不能为空,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
messaStringjcombox4 = jComboBox4.getSelectedItem().toString();
messaStringjcombox6 = jComboBox6.getSelectedItem().toString();
case "跳转指令,返回指令" :
break;
case "转子指令" :
if (jComboBox2.getSelectedIndex() < 0
|| jComboBox3.getSelectedIndex() < 0)
{
tempJOptionPane.showMessageDialog(null,源操作数不能为空,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
messaStringjcombox2 = jComboBox2.getSelectedItem().toString();
messaStringjcombox3 = jComboBox3.getSelectedItem().toString();
switch (messaStringjcombox3)
{
case "!PC" :
case "PC" :
case "R" :
break;
case "(R)" :
ST += messaStringjcombox2 + "->MAR
" + "M->MDR->C
";
MIN_ST += messaStringjcombox2
+ "->A,1->ET,CPET";
break;
case "(R)+" :
ST += messaStringjcombox2 + "->MAR
"
+ "M->MDR->C
" + messaStringjcombox2
+ "+1->" + messaStringjcombox2 + "
";
MIN_ST += messaStringjcombox2
+ "->A,CP"
+ messaStringjcombox2 + ", 1->ET,CPET";
break;
default :
break;
}
break;
default :
break;
}
/*
* DT周期
*/
switch (jComboBox1.getSelectedItem().toString())
{
case "MOV" :
switch (messaStringjcombox6)
{
case "R" :
break;
case "(R)" :
DT += messaStringjcombox4 + "->MAR
";
MIN_DT += messaStringjcombox4
+ "->B,B+1,CPET
";
break;
case "-(R)" :
DT += messaStringjcombox4 + "⑴->MAR,"
+ messaStringjcombox4 + "
";
MIN_DT += messaStringjcombox4
+ "->B,B⑴,CP"
+ messaStringjcombox4 + "1->ET,CPET
";
break;
case "(R)+" :
DT += messaStringjcombox4 + "->MAR
"
+ messaStringjcombox4 + "+1->"
+ messaStringjcombox4 + "
";
MIN_DT += messaStringjcombox4
+ "->B,CPT
"
+ messaStringjcombox4 + "->B,CP"
+ messaStringjcombox4 + ",CPET
";
break;
case "@(R)+" :
DT += messaStringjcombox4 + "->MAR
"
+ messaStringjcombox4 + "+1->"
+ messaStringjcombox4 + "
M->MDR->MAR
";
MIN_DT += messaStringjcombox4
+ "->B,CPT
"
+ messaStringjcombox4
+ "->B,CP"
+ messaStringjcombox4
+ ",CPET";
break;
case "X(R)" :
DT += "PC->MAR
" + "PC+1->PC
" + "M->MDR->D
"
+ "D+" + messaStringjcombox4 + "->MAR
";
MIN_DT += "PC->A,DMM CPMAR,CPT
"
+ messaStringjcombox4
+ "->A,D->B,CPET";
break;
default :
break;
}
break;
case "双操作指令" :
case "单操作指令" :
switch (messaStringjcombox6)
{
case "R" :
break;
case "(R)" :
DT += messaStringjcombox4 + "->MAR
" + "M->MDR->D
";
MIN_DT += messaStringjcombox4
+ "->A,CPD,CPET";
break;
case "-(R)" :
DT += messaStringjcombox4 + "⑴->MAR
"
+ messaStringjcombox4 + "⑴->"
+ messaStringjcombox4 + "
" + "M->MDR->D
";
MIN_DT += messaStringjcombox4
+ "->A,CPET";
break;
case "(R)+" :
DT += messaStringjcombox4 + "->MAR
"
+ "M->MDR->D
" + messaStringjcombox4
+ "+1->" + messaStringjcombox4 + "
";
MIN_DT += messaStringjcombox4
+ "->A,CPET";
break;
case "@(R)+" :
DT += messaStringjcombox4 + "->MAR
"
+ "M->MDR->D
" + messaStringjcombox4
+ "+1->" + messaStringjcombox4
+ "
D->MAR
" + "M->MDR->MAR
";
MIN_DT += messaStringjcombox4
+ "->A,CPT
"
+ "D->A,CPET";
break;
case "X(R)" :
DT += "PC->MAR
" + "M->MDR->D
" + "PC+1->PC
"
+ "D" + messaStringjcombox4 + "->MAR
"
+ "M->MDR->D
";
MIN_DT += "PC->A,CPET";
break;
default :
break;
}
break;
case "跳转指令,返回指令" :
case "转子指令" :
break;
default :
break;
}
/*
* ET周期
*/
String modelString = "";
String opsString = "";
if (!jComboBox1.getSelectedItem().toString().equalsIgnoreCase("单操作指令"))
{
messaStringjcombox2 = jComboBox2.getSelectedItem().toString();
messaStringjcombox3 = jComboBox3.getSelectedItem().toString();
}
modelString += messaStringjcombox3.equalsIgnoreCase("R") ? "0" : "1";
modelString += messaStringjcombox6.equalsIgnoreCase("R") ? "0" : "1";
switch (messaStringjcombox5)
{
case "ADD" :
opsString = "+";
break;
case "SUB" :
opsString = "-";
break;
case "AND" :
opsString = "&";
break;
case "OR" :
opsString = "|";
break;
case "EOR" :
opsString = "^";
break;
case "COM" :
opsString = "~";
break;
case "NEG" :
opsString = "~";
case "SL" :
opsString = "<<";
break;
case "SR" :
opsString = ">>";
break;
default :
break;
}
switch (jComboBox1.getSelectedItem().toString())
{
case "MOV" :
switch (modelString)
{
case "00" :
ET += messaStringjcombox2 + "->" + messaStringjcombox4
+ "
" + "PC->MAR";
MIN_ET += messaStringjcombox2 + "->A,CPMAR";
break;
case "01" :
ET += messaStringjcombox2 + "->MDR
" + "MDR->M
"
+ "PC->MAR";
MIN_ET += messaStringjcombox2 + "->A,CPMDR
"
+ "EMAR,W,CPMAR";
break;
case "10" :
ET += "C->" + messaStringjcombox4 + "
" + "PC->MAR";
MIN_ET += "C->B,CP" + messaStringjcombox4
+ "T+1,CPT
" + "PC->A,CPMAR";
break;
case "11" :
ET += "C->MDR
" + "MDR->M
" + "PC->MAR";
MIN_ET += "C->B,CPMDR,CPMAR";
break;
default :
break;
}
break;
case "双操作指令" :
switch (modelString)
{
case "00" :
ET += messaStringjcombox2 + opsString
+ messaStringjcombox4 + "->"
+ messaStringjcombox4 + "
" + "PC->MAR";
MIN_ET += messaStringjcombox2 + "->A,"
+ messaStringjcombox4 + "->B,A" + opsString
+ "B,CP" + messaStringjcombox4
+ ",CPMAR";
break;
case "01" :
ET += messaStringjcombox2 + opsString + "D->TMDR
"
+ "MDR->M
" + "PC->MAR";
MIN_ET += messaStringjcombox2 + "->A," + "D->B,A"
+ opsString + "B,CPMAR";
break;
case "10" :
ET += "C" + opsString + messaStringjcombox4 + "->"
+ messaStringjcombox4 + "
PC->MAR";
MIN_ET += "C->A," + messaStringjcombox4 + "->B,CPMAR";
break;
case "11" :
ET += "D" + opsString + "C->MDR
" + "MDR->M
"
+ "PC->MAR";
MIN_ET += "C->A,CPMAR";
break;
default :
break;
}
break;
case "单操作指令" :
switch (messaStringjcombox6)
{
case "R" :
switch (messaStringjcombox5)
{
case "COM" :
ET += "~" + messaStringjcombox4 + "->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,~A,CP"
+ messaStringjcombox4
+ ",CPT
"
+ "PC->A,CPMAR";
break;
case "NEG" :
ET += "~" + messaStringjcombox4 + "+1->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,~A+1,CPMAR";
break;
case "INC" :
ET += messaStringjcombox4 + "+1->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,CPMAR";
break;
case "DEC" :
ET += messaStringjcombox4 + "⑴->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,CPMAR";
break;
case "SL" :
ET += messaStringjcombox4 + "<<1->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,SL,CPMAR";
break;
case "SR" :
ET += messaStringjcombox4 + ">>1->"
+ messaStringjcombox4 + "
"
+ "PC->MAR";
MIN_ET += messaStringjcombox4
+ "->A,SR,CPMAR";
break;
default :
break;
}
break;
case "(R)" :
case "-(R)" :
case "(R)+" :
case "@(R)+" :
case "X(R)" :
switch (messaStringjcombox5)
{
case "COM" :
ET += "~D->MDR
" + "MDR->M
" + "PC->MAR";
MIN_ET += "D->A,CPT
"
+ "EMAR,CPT
"
+ "PC->A,CPMAR";
break;
case "NEG" :
ET += "~D+1->MDR
" + "MDR->M
"
+ "PC->MAR";
MIN_ET += "D->A,CPMAR";
break;
case "INC" :
ET += "D+1->MDR
" + "MDR->M
" + "PC->MAR";
MIN_ET += "D->A,CPMAR";
break;
case "DEC" :
ET += "D⑴->MDR
" + "MDR->M
" + "PC->MAR";
MIN_ET += "D->A,CPMAR";
break;
case "SL" :
ET += "D<<1->MDR
" + "MDR->M
"
+ "PC->MAR";
MIN_ET += "D->A,CPMAR";
break;
case "SR" :
ET += "D>>1->MDR
" + "MDR->M
"
+ "PC->MAR";
MIN_ET += "D->A,CPMAR";
break;
default :
break;
}
break;
default :
break;
}
break;
case "跳转指令,返回指令" :
switch (messaStringjcombox3)
{
case "!PC" :
ET += "PC->MAR";
MIN_ET += "PC->A,CPMAR";
case "PC" :
case "SKP" :
ET += "PC+1->PC,MAR";
MIN_ET += "PC->A,CPMAR";
case "R" :
ET += messaStringjcombox2 + "->PC,MAR";
MIN_ET += messaStringjcombox2
+ "->A,CPMAR";
break;
case "(R)" :
ET += messaStringjcombox2 + "->MAR
"
+ "M->MDR->PC,CPPC";
break;
case "(R)+" :
ET += messaStringjcombox2 + "->MAR
"
+ "M->MDR->PC,MAR
" + messaStringjcombox2
+ "+1->" + messaStringjcombox2;
MIN_ET += messaStringjcombox2
+ "->A,CP"
+ messaStringjcombox2;
break;
case "X(PC)" :
ET += "PC->MAR
" + "M->MDR->C
" + "PC+1->PC,CPMAR";
default :
break;
}
break;
case "转子指令" :
switch (messaStringjcombox3)
{
case "!PC" :
ET += "PC->MAR";
MIN_ET += "PC->A,CPMAR";
case "PC" :
ET += "PC+1->PC,CPMAR";
case "R" :
ET += "SP⑴->SP,MAR
" + "PC->MDR
" + "MDR->M
"
+ messaStringjcombox2 + "->PC,MAR";
MIN_ET += "SP->A,CPSP,CPT
" + messaStringjcombox2
+ "->B,CPMAR";
break;
case "(R)" :
case "(R)+" :
ET += "SP⑴->SP,MAR
" + "PC->MDR
" + "MDR->M
"
+ "C->PC,CPT
"
+ "C->B,CPMAR";
break;
default :
break;
}
break;
default :
break;
}
if (messaStringjcombox2.equalsIgnoreCase(messaStringjcombox4))
{
tempJOptionPane.showMessageDialog(null,"源操作数和目的操作数寄存去不能复用,请重新输入!");
this.jButton3ActionPerformed(null);
return;
}
if (ST.equalsIgnoreCase("ST
"))
{
ST+="
";
}
if (DT.equalsIgnoreCase("DT
"))
{
DT+="
";
}
/**************************************************************************************/
String tempString2 = messaStringjcombox6.isEmpty()||messaStringjcombox3.isEmpty() ? "" : ",";
tXT_READString = messaStringjcombox5 + " "
+ messaStringjcombox3.replace("R",messaStringjcombox2)
+ tempString2
+ messaStringjcombox6.replace("R",messaStringjcombox4);
/* 输出到指令框 */
jTextField1.setText(tXT_READString);
/* 输出到指令周期框 */
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
ST = ST.equalsIgnoreCase("ST
") ? "ST
" : ST;
DT = DT.equalsIgnoreCase("DT
") ? "DT
" : DT;
ET = ET.equalsIgnoreCase("ET
") ? "ET
" : ET;
jTextArea1.setText(FT + ST + DT + ET + tempString);
jScrollPane1.setViewportView(jTextArea1);
/* 输出到微命令框 */
jTextArea2.setColumns(20);
jTextArea2.setRows(5);
jTextArea2.setText(MIN_FT + MIN_ST + MIN_DT + MIN_ET);
jScrollPane2.setViewportView(jTextArea2);
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
}
@SuppressWarnings({ "unchecked","rawtypes"
})
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
jComboBox2.setEnabled(true);
jComboBox3.setEnabled(true);
jComboBox4.setEnabled(true);
jComboBox5.setEnabled(true);
jComboBox6.setEnabled(true);
if (jComboBox1.getSelectedIndex() < 0)
{
jComboBox2.setEnabled(false);
jComboBox3.setEnabled(false);
jComboBox4.setEnabled(false);
jComboBox5.setEnabled(false);
jComboBox6.setEnabled(false);
return;
}
switch (jComboBox1.getSelectedItem().toString())
{
case "MOV" :
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "MOV"
}));
break;
case "双操作指令" :
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "ADD","EOR"
}));
jComboBox5.setSelectedIndex(⑴);
break;
case "跳转指令,返回指令" :
jComboBox4.setEnabled(false);
jComboBox6.setEnabled(false);
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "JMP",}));
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "R0","R3"
}));
jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "R","X(PC)","PC","!PC"
}));
jComboBox5.setSelectedIndex(⑴);
jComboBox3.setSelectedIndex(⑴);
jComboBox2.setSelectedIndex(⑴);
break;
case "单操作指令" :
jComboBox2.setEnabled(false);
jComboBox3.setEnabled(false);
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "COM","SR"
}));
jComboBox5.setSelectedIndex(⑴);
break;
case "转子指令" :
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "JSR"
}));
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "R0","!PC"
}));
jComboBox4.setEnabled(false);
jComboBox6.setEnabled(false);
jComboBox3.setSelectedIndex(⑴);
jComboBox2.setSelectedIndex(⑴);
break;
default :
break;
}
}
/**
* @param args
* the command line arguments
*/
public static void main(String args[])
{
/* Set the Nimbus look and feel */
// <editor-fold defaultstate="collapsed"
// desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available,stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel
* /plaf.html
*/
try
{
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (ClassNotFoundException ex)
{
java.util.logging.Logger.getLogger(
ComputerInstrution.class.getName()).log(
java.util.logging.Level.SEVERE,null,ex);
}
catch (InstantiationException ex)
{
java.util.logging.Logger.getLogger(
ComputerInstrution.class.getName()).log(
java.util.logging.Level.SEVERE,ex);
}
catch (IllegalAccessException ex)
{
java.util.logging.Logger.getLogger(
ComputerInstrution.class.getName()).log(
java.util.logging.Level.SEVERE,ex);
}
catch (javax.swing.UnsupportedLookAndFeelException ex)
{
java.util.logging.Logger.getLogger(
ComputerInstrution.class.getName()).log(
java.util.logging.Level.SEVERE,ex);
}
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ComputerInstrution().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JComboBox jComboBox4;
private javax.swing.JComboBox jComboBox5;
private javax.swing.JComboBox jComboBox6;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |