⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alu.java

📁 熟悉非常简单CPU模拟器 1、将所给模拟器的源程序编译成执行程序。 2、运行并观察非常简单CPU模拟器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
//import java.awt.Graphics;
//import java.awt.Font;
import java.util.*;

public
class Alu
   extends Frame
   implements ActionListener
{

	int r1 = 0;
	int r2 = 0;
	int r3 = 0;
	int r4 = 0;
	int r5 = 0;
	int r6 = 0;
	int r7 = 0;
	int r8 = 0;
	int g1 = 0;
	int g2 = 0;
	int g3 = 0;
	int g4 = 0;
	int g5 = 0;
	int g6 = 0;
	int g7 = 0;
	int g8 = 0;
	int b1 = 0;
	int b2 = 0;
	int b3 = 0;
	int b4 = 0;
	int b5 = 0;
	int b6 = 0;
	int b7 = 0;
	int b8 = 0;


	Color blk = new Color(0,0,0); //NOT or INVERSE
	Color blu = new Color(0,0,255); //0
	Color grn = new Color(0,255,0); //AC
	Color yel = new Color(0,255,255); //OR
	Color red = new Color(255,0,0); //BUS
	Color vio = new Color(255,0,255); //XOR
	Color who = new Color(255,255,0); //AND

	int d1 = 0;
	int d2 = 0;
	int d3 = 0;
	int d4 = 0;



/////////////////////////////////////////////////////////////////

   public void update( Graphics screen )
   {
      paint( screen );                  // used for double buffering
   }

/////////////////////////////////////////////////////////////////

   Alu( Frame parent, String windowTitle )
   {
      super( windowTitle );

      CPUBox = ( CPU ) parent;

      MenuBar mbar = new MenuBar();

      fileMenu = new Menu( "File" );

      closeWindowMenuItem = new MenuItem( "Close Window" );
      closeWindowMenuItem.addActionListener( this );
      fileMenu.add( closeWindowMenuItem );

      mbar.add( fileMenu );

      setMenuBar( mbar );

      addWindowListener(

            new WindowAdapter()
            {

               public void windowClosing( WindowEvent e )
               {
                  setVisible( false );
               }

            }

         );

      setSize( 350, 250 );
   }

   public void clear()
   {
      r1 = 0;
      r2 = 0;
      r3 = 0;
      r4 = 0;
      r5 = 0;
      r6 = 0;
      r7 = 0;
      r8 = 0;
      g1 = 0;
      g2 = 0;
      g3 = 0;
      g4 = 0;
      g5 = 0;
      g6 = 0;
      g7 = 0;
      g8 = 0;
      b1 = 0;
      b2 = 0;
      b3 = 0;
      b4 = 0;
      b5 = 0;
      b6 = 0;
      b7 = 0;
      b8 = 0;

      d1 = 0;
      d2 = 0;
      d3 = 0;
      d4 = 0;
   }

   public void paint( Graphics g )
   {
      offScrImALU = createImage( 350, 250 );

      Graphics offScrALU = offScrImALU.getGraphics();

      Font f1 = new Font( "SansSerif", Font.PLAIN, 11 );
      Font f2 = new Font( "SansSerif", Font.BOLD, 11 );

      Color cc1 = new Color( r1, g1, b1 );
      Color cc2 = new Color( r2, g2, b2 );
      Color cc3 = new Color( r3, g3, b3 );
      Color cc4 = new Color( r4, g4, b4 );
      Color cc5 = new Color( r5, g5, b5 );
      Color cc6 = new Color( r6, g6, b6 );
      Color cc7 = new Color( r7, g7, b7 );
      Color cc8 = new Color( r8, g8, b8 );

      //first mux
      offScrALU.setFont(f1);
      offScrALU.drawRect(255,93,35,75);
      offScrALU.setFont(f2);
      offScrALU.drawString("MUX",262,110);
      offScrALU.setFont(f1);
      offScrALU.drawLine(290,130,300,130);//line going to string below
      offScrALU.setColor(cc8);
      offScrALU.drawString("To AC",305,135);
      offScrALU.setColor(cc7);
      offScrALU.drawString("s",270,165);
      offScrALU.drawLine(272,168,272,178);//line going to string below
      offScrALU.drawString("1",258,122);
      offScrALU.drawString("ALUSEL",255,189);

      offScrALU.setColor(cc6);
      offScrALU.drawString("0",258,147);
      offScrALU.setColor(cc1);

      //PA
      offScrALU.drawRect(160,121,50,65);
      offScrALU.setFont(f2);
      offScrALU.drawString("Parallel",165,140);
      offScrALU.drawString("Adder",170,152);
      offScrALU.setFont(f1);
      offScrALU.setColor(cc5);
      //offScrALU.drawString("Cin",177,181);
      //offScrALU.drawLine(184,184,184,194);
      //offScrALU.drawString("ACINC",168,205);
      offScrALU.setColor(cc1);

      offScrALU.drawLine(92,80,160,80); //lines for AC
      offScrALU.drawLine(123,80,123,145);
      offScrALU.drawLine(123,145,160,145);
      offScrALU.setColor(cc3);
      offScrALU.drawString("AC",75,84);
      offScrALU.setColor(cc1);

      offScrALU.drawLine(92,171,160,171); //lines for DR
      offScrALU.drawLine(143,171,143,90);
      offScrALU.drawLine(143,90,160,90);
      offScrALU.setColor(cc4);
      offScrALU.drawString("DR",75,176);
      offScrALU.setColor(cc1);

      offScrALU.drawLine(210,156,219,156);// PA to MUX
      offScrALU.drawLine(219,156,219,143);// PA to MUX
      offScrALU.drawLine(219,143,255,143);// PA to MUX


      //AND
      offScrALU.drawArc(175,75,16,20,90,-180);
      offScrALU.drawLine(183,75,160,75);
      offScrALU.drawLine(160,75,160,95);
      offScrALU.drawLine(160,95,183,95);
      offScrALU.drawLine(191,85,244,85);//line to MUX
      offScrALU.drawLine(244,85,244,118);//line to MUX
      offScrALU.drawLine(244,118,255,118);//line to MUX

      offScrALU.fillOval(123,80,4,4);
      offScrALU.fillOval(142,168,4,4);

      //red little dots
      offScrALU.setColor(Color.red);
      offScrALU.fillRect(d1-3,d2-3,6,6);
      offScrALU.fillRect(d3-3,d4-3,6,6);

      // used for double buffering
      g.drawImage(offScrImALU, 0, 0, this);
   }

   public void actionPerformed( ActionEvent e )
   {
      Object eventSource = e.getSource();

      if ( eventSource == closeWindowMenuItem )
      {
         setVisible( false );
      }

   }

   private Menu fileMenu;
   private MenuItem closeWindowMenuItem;

   private Image offScrImALU;  // used for double buffering

   private CPU CPUBox;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -