Question
Download and install Easycpu ENIAC package on a Windows platform. It can be installed on a Windows VM. But not on Mac. Before you install
Download and install Easycpu ENIAC package on a Windows platform. It can be installed on a Windows VM. But not on Mac.
Before you install the ENIAC package, you should install JAVA, JAVA Run TIme Environment (JRE), and JAVA Development Kit (JDK). If you don't have the JAVA packages, you won't be able to bring up ENIAC.jar file.
- Download the ENIAC software from the following URL: https://sourceforge.net/projects/eniac/
- Move the ZIP file under Document>UMGC>ITEC625 directory. Unzip the package. Go in the eniac-0.1.1a1 folder. Double click on the ENIAC.jar file (labeled "executable").
- You should see the ENIAC application. If you don't see it, you probably don't have the right JAVA packages.
- Click
, and point to the folder contains the assembly code fattoriale.eniac. - The program should be loaded in ASCII. If not, click the menu
, , then . It should look as below.
Address Hexadecimal ASCII ===== =========== ===== === 0 200003 JUMP 3 1 6 6 2 1 1 3 a02001 LOAD @1 4 b88001 STORE BX 5 c02002 SUB @2 6 2b000c JZ 12 7 b88006 STORE CX 8 f08001 MUL BX 9 b88001 STORE BX 10 a08006 LOAD CX 11 200005 JMP 5 12 10000 HLT
Explanation:
(0) address starts at 0x2000, but PC=3 (address 0x2003) (1) stack 1 (@1) has value 6 (2) stack 2 (@2) has value 1 (3) command load (0xa0) from 0x2001 to register AX (AX=6), PC=4 (address 0x2004) (4) command store (0xb8) the value in 0x2001 to register BX at 0x8001 (BX=6), PC=5(address 0x2005) (5) command substract (0xc0) the value 1 in 0x2002 from the register AX, PC=6 (address 0x2006) (6) command jump (0x2b) to 0xC=12 if the result in AX is zero, PC=7 (address 0x2007) (7) command store (0xb8) the value into register CX at 0x8006 (CX=5), PC=8 (address 0x2008) (8) command mul (0xf0) the value of register AX by the value in register Bx at 0x8001, AX=5*6=30, PC=9 (address 0x2009) (9) command store (0xb8) the value of register AX in register BX at 0x8001 (Bx=30), PC=10 (address 0x200a) (10) command load (0xa0) the value in register CX at 0x8006 to register AX (AX=CX=5), PC=11 (address 0x200b) (11) command jump (0x20) to address 0x5 (0x2005), PC=5 (address 0x2005) (12) command halt (0x1) is exit. The program looped 6 times to exit.
When exit, AX=0, BX=720, CX=1, DX=0, PC=12, CA = SI= OV = 0, ZE = EV = 1
Lab exercise:
Q1. Click menu
Q2. After statement 11 is first executed, what is the next statement to be executed? Can you tell what is statements 5 through 11 is doing in a simple statement? A2:
Q3: How many times the statements 5 through 11 were executed before the statement 12 is executed? How can you tell, if you don't step through it? Which register or memory location that you can determine the value without stepping through all codes till exit? A3:
Q4: Bonus: Convert the assembly code to any high-level language, such as C, C++, Java, Python. A4:
HOA4 will have the high level structure like below. Students fill up the details:
=================================
line 1 (you fill up the detail)
line 2 (you fill up the detail)
line 3 (you fill up the detail)
line 4 (you fill up the detail)
loop starts;
line 5 (you fill up the detail)
line 6, if (AX =0), exit the loop
line 7 (you fill up the detail)
line 8 (you fill up the detail)
line 9 (you fill up the detail)
line 10 (you fill up the detail)
line 11, go back to the beginning of the loop, line 5
loop ends
Line 12 End of program
==============================
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started