Sale!

EE306 Introduction to Computing Lab 1- Lab 7 Solutions

Original price was: $210.00.Current price is: $180.00.

Download Details:

  • Name: Lab1-bfzxff.zip
  • Type: zip
  • Size: 85.48 KB

  • Name: Lab2-rrbcie.zip
  • Type: zip
  • Size: 183.81 KB

  • Name: Lab3-nb9kmw.zip
  • Type: zip
  • Size: 402.95 KB

  • Name: Lab4-b6mz1e.zip
  • Type: zip
  • Size: 558.11 KB

  • Name: Lab5-x19m5l.zip
  • Type: zip
  • Size: 639.11 KB

  • Name: Lab6-acn8ds.zip
  • Type: zip
  • Size: 307.18 KB

  • Name: Lab7-rqr21g.zip
  • Type: zip
  • Size: 119.88 KB

Category:

Description

5/5 - (1 vote)

EE306 Introduction to Computing Lab 1 Solved

Purpose:

The purpose of this assignment is to write a program in LC-3 assembly language
code to find the sum and difference of two 8-bit unsigned numbers and store the result back in
memory. The two unsigned numbers are specified in memory locations x3300 and x3301. Each
8-bit number is stored in bits [7:0]. Note that bits [15:8] are not part of the number.
Your program should store the sum of the two numbers in memory location x3302.
Your program should store the difference of the two numbers (Number1 – Number2) in memory
location x3303.

Example: If the memory location x3300 contains 0110101001111100 (x6A7C), and memory
location x3301 contains 0001100000111111 (x183F), then your program should:
(i) Add x007C with x003F, which is x00BB, and store this sum in memory location
x3302.
(ii) Subtract x003F from x007C, which is x003D, and store this difference in memory
location x3303.

 

Notes:

• The first line of your program must specify the memory address of the first instruction of
your program. The LC-3 simulator will place your program starting at that address. For
this assignment, you should place your program starting at x3000 (i.e. the first line of
your program needs to be .ORIG x3000).

• Bits [15:8] need to be masked out when computing the sum and difference.
• Use the LC3Edit program to type in your programs. Your program needs to be in LC-3
assembly language. Please ask any TA or Dr. Telang if you have any questions.
• Your file should be named exactly after your EID, for example, xy1234.asm. Your
program will not be graded if you fail to follow the file naming convention.

 

EE306 Introduction to Computing Lab 2 Solved

Purpose:

The purpose of this assignment is to write a program in LC-3 assembly language
code to find the larger of two 8-bit unsigned numbers. The two unsigned numbers are specified
in memory locations x3300 and x3301. Each 8-bit unsigned number is stored in bits [7:0], with
zeros in bits [15:8].

Your program should store the larger of these two unsigned numbers in memory location x3302.
Example: If the memory location x3300 contains 0000000001111100 (x007C), and memory
location x3301 contains 0000000000111111 (x003F), then your program should:
Store x007C in memory location x3302.

Notes:

 The first line of your program must specify the memory address of the first instruction of
your program. The LC-3 simulator will place your program starting at that address. For
this assignment, you should place your program starting at x3000 (i.e. the first line of
your program needs to be .ORIG x3000).

 Use the LC3Edit program to type in your programs. Your program needs to be in LC-3
assembly language. Please ask any TA or Dr. Telang if you have any questions.
 Your file should be named exactly after your EID, for example, xy1234.asm. Your
program will not be graded if you fail to follow the file naming convention

 

EE306 Introduction to Computing Lab 3 Solved

Problem Statement:

Write a program in LC-3 assembly language to sort a list of students and the number of credit
hours they completed.

The list of credit hours completed by students, integers between 0 and 150 (for the sake of this
lab), along with the corresponding unique non-zero ID of the students will be stored in memory
starting at address x4004. The ID and Credit hours of each student will be specified as follows:
• Bits [15:8] – Unique ID
• Bits [7:0] – Credit Hours Completed

The end of this list is specified using a Unique ID of zero, for which the Credit Hours field could
be anything. (This entry merely acts as the sentinel or terminator.)
Sort the list in ascending order of the Credit hours along with the corresponding unique IDs
starting at location x4004 and, just as the initial list, it needs to be terminated with null ID.
EE306 Introduction to Computing
2

Example: Tables 1 and 2 show content of memory locations corresponding to list and outputs
before and after execution of program for a given list.
Table 1. State of memory before program is executed
Address Bits[15:8] (in decimal) Bits[7:0] (in decimal)

x4004 23 28
x4005 10 21
x4006 56 15
x4007 2 19
x4008 13 41
x4009 84 95
x400A 91 89

x400B 45 90
x400C 67 73
x400D 19 35
x400E 114 105
x400F 0 –

Table 2. State of memory after program is executed
Address Bits[15:8] (in decimal) Bits[7:0] (in decimal)
x4004 56 15
x4005 2 19
x4006 10 21
x4007 23 28

x4008 19 35
x4009 13 41
x400A 67 73
x400B 91 89

x400C 45 90
x400D 84 95
x400E 114 105
x400F 0 –
EE306 Introduction to Computing
3

Notes

1. Unique IDs are all unsigned, and non-zero.
2. There could be zero individuals in the list.
3. If there are multiple individuals with the same number of credit hours, do not sort by ID
number.

4. You can use any algorithm for sorting. As always, start with a flowchart.
5. Start your program at location x3000. So, the first line of your assembly program must be
.ORIG x3000.
6. You can test your program by manually loading data in locations x4004 onwards (with the last
item in the list being the null ID number).

7. Note that the length of the list is not specified, though the maximum number of individuals is
determined by the maximum possible unique IDs that can be specified in bits [15:8]. When
you test your program for a variety of test cases make sure that you include a case with zero
students in the list, and a case with the maximum number.

SUBMISSION INSTRUCTIONS:

The file that you will upload to online repository for this assignment must be named
youreid.asm
For example, if your eid is ma123 then the file name should be ma123.asm

 

EE306 Introduction to Computing Lab 4 Solved

Problem Statement:

Consider the same test cases as Lab 3, where you were given a list of students with unique IDs
and their number of credit hours, starting at location x4004. In Lab4 you will write a program
in LC-3 assembly language to create to:
1. create a histogram, and
2. calculate the range and mean of the credit hours.

The following highlighted portion has been taken from Lab3 to emphasize that the test cases
for Lab4 will be formatted the same way as Lab 3.

The list of credit hours completed by students, integers between 0 and 150 (for the sake of this
lab), along with the corresponding unique non-zero ID of the students will be stored in memory
starting at address x4004. The ID and Credit hours of each student will be specified as follows:
• Bits [15:8] – Unique ID
• Bits [7:0] – Credit Hours Completed

The end of this list is specified using a Unique ID of zero, for which the Credit Hours field could
be anything. (This entry merely acts as the sentinel or terminator.)

A histogram is a table representing the number of items that fall between a given set of intervals.
We create the histogram based on the following intervals of credit hours (shown below is decimal)
completed:
29 and Below – ‘F’ (Freshman)
30 – 60 – ‘S’ (Sophomore)
61 – 90 – ‘J’ (Junior)
Above 90 – ‘G’ (Senior)

The number of individuals falling in each of the 4 intervals is stored in consecutive memory
locations starting at address x4000. Bits [7:0] contain the number of individuals in each interval,
and bits [15:8] contain the identifier of each interval in ACSII, which are ‘F’, ‘S’, ‘J’, and ‘G’.
Refer to the ASCII code chart to find the ASCII codes for ‘F’, ‘S’, ‘J’, ‘G’.
EE306 Introduction to Computing
2

Example:

Tables 1 and 2 show content of memory locations corresponding to list and outputs
before and after execution of program for a given list. Note that in this lab you are not expected to
sort the list. You can, however, sort it (or use the program that you wrote in Lab3).
Table 1. State of memory before program is executed

Address Bits[15:8]
(in
decimal)
Bits[7:0]
(in
decimal)
x4000 – –
x4001 – –

x4002 – –
X4003 – –
x4004 23 28
x4005 10 21
x4006 56 15
x4007 2 19
x4008 13 41
x4009 84 95

x400A 91 89
x400B 45 90
x400C 67 73
x400D 19 35
x400E 114 105
x400F 0 –

Table 2. State of memory after program is executed
Address Bits[15:8]
(in
decimal)
Bits[7:0]
(in

decimal)
x4000 70 4
x4001 83 2
x4002 74 3
X4003 71 2
x4004 23 28

x4005 10 21
x4006 56 15
x4007 2 19
x4008 13 41
x4009 84 95
x400A 91 89
x400B 45 90

x400C 67 73
x400D 19 35
x400E 114 105
x400F 0 –
Contains data that will be
overwritten by your
program.

Note that these are the ASCII codes
(in decimal) for ‘F’, ‘S’, ‘J’, ‘G’.
EE306 Introduction to Computing
3

Report the

of the student list.

1. Range as a concatenation of highest number of credit hours in higher order byte (bits [15:8])
and lowest number of credit hours in lower order byte (bits [7:0]) at location x6000.
2. Mean of the credit hours as a 16-bit integer at location x6001.
If mean has a fractional part, round it down to the lower integer. For example, 55.545 can
rounded to 55.
Table 3. State of memory after program is executed
Address Bits[15:8] (in decimal) Bits[7:0] (in decimal)
X6000 105 15
X6001 00 55

Notes

1. Unique IDs are all unsigned and non-zero.
2. If there are zero individuals in the list, the range and mean should be set as -1 (xFFFF).
3. If there is one individual in the list, both the highest and lowest number of credit hours will be
same.
4. Start your program at location x3000. So, the first line of your assembly program must be
.ORIG x3000.

5. You can test your program by manually loading data in locations x4004 onwards (with the last
item in the list being the null ID number).
6. Note that the length of the list is not specified, though the maximum number of individuals is
determined by the maximum possible unique IDs that can be specified in bits [15:8].

When
you test your program for a variety of test cases make sure that you include a case with zero
students in the list, and a case with the maximum number.

SUBMISSION INSTRUCTIONS:

The file that you will upload to online repository for this assignment must be named
youreid.asm.
For example, if your eid is ma123 then the file name should be ma123.asm)

 

EE306 Introduction to Computing Lab 5 Solved

Purpose:

The purpose of this assignment is to write a program in the LC-3 assembly language that creates a user interface to determine if a student EID matches a list of student EIDs. The list of student EIDs is organized as a “LINKED LIST” data structure.

Your program must:

1. Prompt the user for the student’s EID (refer to EID description in point 5) by printing on the monitor the string “Type EID and press Enter: ” and wait for the user to input a string followed by (ASCII: x0A).

(Assume that there is no case where the user input exceeds or is less than the required number of characters)

2. Your program must then search the student list of EIDs to find a match for the entered EID. The list stores the student EID for each student. You will find a match only if the student’s EID is in the list. It is possible to not find a match in the list.

 

3. If your program finds a match, then it must print out “ is already in the main room.”. (eg., “XY123 is already in the main room.”)

4. If your program does not find a match, then it must print out “ is not in the main room.”. (eg., “XY123 is not in the main room.”).

5. Unique EIDs are exactly 5 characters long and contains only uppercase alphabets and numbers. For example, XY123. Note: first two characters must be uppercase letters and last 3 characters must be numbers.

6. Head pointer for the main room list is at x4000. In other words, the address of the first node of the list is at x4000.

The Linked-List

A linked-list is a set of nodes connected to each other via pointers. Each node in the linked-list contains a pointer to (the address of) the next node in the linked-list. This pointer is commonly known as the next-pointer. If the last node contains x0000 as its next pointer, it implies that there is no “next node.” That is, this is the last node. We call x0000 in this context a NULL pointer.

Each node in a linked-list is comprised of k+1 words: one word containing the next-pointer (the pointer to the next node) and k words of data which are being stored by the node. In our case, the database of student IDs is implemented as a linked-list with k+1=2.

Each node consists of two words in the following order:

1. The next-pointer. EE306 Introduction to Computing 2.

A pointer to an ASCII string representing the student’s unique EID (5 Characters long+ NULL). Recall that a string consists of ASCII codes stored in consecutive memory locations, one ASCII code per location. The string is null-terminated, i.e., the end of a string is signified by the NULL character which is ASCII code 0. Below is an example database implemented as a linked-list.

When you test your program, you can use a database with a similar structure. The test cases that we will use to test your program will be similar to this example. Figure 1: Example Linked List Structure – Main Room Participants List Address M[Address] X4000 X4002 X4001 … X4002 X4004 (Next pointer) X4003 X4800 (Pointer to EID) X4004 X4006 X4005 X4806 X4006 X0000 X4007 X480C … … X4800 “X” X4801 “Y” X4802 “1” X4803 “2” X4804 “3” X4805 X0000 X4806 “A” X4807 “B” X4808 “7” X4809 “8” X480A “9” X480B X0000 EE306 Introduction to Computing X480C “P” X480D “Q” X480E “5” X480F “6” X4810 “7” X4811 X0000 … …

Figure 2: Contents of Memory If the input were: Type EID and press Enter: MN483 Then the output message would be: MN483 is not in the main room. If the input were: Type EID and press Enter: AB789 Then the output message would be: AB789 is already in the main room. Input/Output Requirements Described below are detailed requirements about the Inputs and Outputs of your program.

You should adhere to these guidelines to receive full credit for this assignment. Input: Your program should prompt the user for the last name from the keyboard, as follows: Print a string EXACTLY “Type EID and press Enter: ”. Then wait for the user to input a string followed by . Note that you will get a 0 on the assignment if you do not print this string EXACTLY.

The user will input a character string from the keyboard, terminating the EID with the key. Hint: To continually read from the keyboard without first printing a prompt on the screen, use TRAP x20 (assembler name GETC). That is, for each key you wish to read, the LC-3 operating system must execute the TRAP x20 service routine. If you follow TRAP x20 with the instruction TRAP x21 (assembler name OUT), the character the user types will be displayed on the screen.

Output:

Your program should output one of two strings depending on the outcome of the linked list lookup. (i) If the EID entered by the user is found in the main room list, print out “ is already in the main room.”. EE306 Introduction to Computing (ii) If the EID entered by the user is not found in the main room list, print out “ is not in the main room.”.

Hint:

To output a string to the console display, use TRAP x22 (assembler name PUTS). What needs to go into R0 to use this TRAP instruction? A sample of what your program will produce, when supplied with the input from the user trying to add the course: EXAMPLE 1: Type EID and press Enter: MN483 MN483 is not in the main room. —– Halting the processor —–

EXAMPLE 2: Type EID and press Enter: AB789 AB789 is already in the main room. —– Halting the processor —- EXAMPLE 3: Type EID and press Enter: XY123 XY123 is already in the main room —– Halting the processor —– Notes & Hints: 1. Your program must start at location x3000. 2. The linked lists is an input to your program. The list is loaded in memory before your program begins to run.

Your program will search the list. 3. The pointer to the first node to the main room is stored in memory location x4000 before the program execution begins. Further, assume that all the nodes are stored between memory locations x4002 and xFDFF. Make no other assumptions about the location of the nodes.

Note that the pointer to the first node may be set to NULL (i.e., 0), indicating that there are no nodes in the list. 4. Your program should NOT make any assumptions about the number of nodes in the list. EE306 Introduction to Computing 5. You may assume that everyone in the list has a unique EID. IMPORTANT: The file that you will upload to online repository for this assignment must be named youreid.asm. (eg., xy123.asm)

 

EE306 Introduction to Computing Lab 6 Solved

Purpose:

The purpose of this assignment is to write a program in LC-3 assembly language that creates a user interface to move students in the waiting room of the EE 306 Zoom classroom to the main room. The list of participants is organized as a “LINKED LIST” data structure. There are 2 linked lists: one which contains the EIDs of the students already in the main classroom and the second list contains the EIDs of students currently in the waiting room. Note that you can use your program for Lab5 as a starting point for this lab.

Your program must:

1. Prompt the user for the student’s EID (refer to EID description in point 6) by printing on the monitor the string “Type EID and press Enter: ” and wait for the user to input a string followed by (ASCII: x0A). (Assume that there is no case where the user input exceeds or is less than the required number of characters)

2. Your program must then search the main room student list to find a match for the entered EID. The list stores the student EID for each student. You will find a match only if the student’s EID is in the list. It is possible to not find a match in the list.

3. If your program finds a match, then it must print out “ is already in the main room.”. (eg., “XY123 is already in the main room.”)

4. If a match is not found in the main room student list, then your program should check the second list of students in the waiting room for the user entered EID. If there is a match in second list, remove the node from the second list and add it to the front of the main room list and print out “ is added to the main room.”. (eg., “XY123 is added to the main room.”)

5. If the entered EID does not find a match in the second list as well, then you must print out the string, “The entered EID does not match.”.

6. Unique EIDs are exactly 5 characters long and contains only uppercase alphabets and numbers. For example, XY123. Note: first two characters must be uppercase letters and last 3 characters must be numbers.

7. Head pointer for the main room & waiting room lists are at x4000 and x4001 respectively. In other words, the address of the first nodes of the two lists are at x4000 and x4001 respectively. EE306 Introduction to Computing The Linked-List A linked-list is a set of nodes connected to each other via pointers. Each node in the linked-list contains a pointer to (the address of) the next node in the linked-list.

This pointer is commonly known as the next-pointer. If the last node contains x0000 as its next pointer, it implies that there is no “next node.” That is, this is the last node. We call x0000 in this context a NULL pointer. Each node in a linked-list is comprised of k+1 words: one word containing the next-pointer (the pointer to the next node) and k words of data which are being stored by the node. In our case, the database of student IDs is implemented as a linked-list with k+1=2.

Each node consists of two words in the following order:

1. The next-pointer. 2. A pointer to an ASCII string representing the student’s unique EID (5 Characters long+ NULL). Recall that a string consists of ASCII codes stored in consecutive memory locations, one ASCII code per location. The string is null-terminated, i.e., the end of a string is signified by the NULL character which is ASCII code 0.

Below is an example database implemented as a linked-list. When you test your program, you can use a database with a similar structure. The test cases that we will use to test your program will be similar to this example. Figure 1: Example Linked List Structure – Main Room Participants List Figure 2: Example Linked List Structure –

Waiting Room List EE306 Introduction to Computing Address M[Address] X4000 X4002 X4001 X5000 X4002 X4004 (Next pointer) X4003 X4800 (Pointer to EID) X4004 X4006 X4005 X4806 X4006 X0000 X4007 X480C … … X4800 “X” X4801 “Y” X4802 “1” X4803 “2” X4804 “3” X4805 X0000 X4806 “A” X4807 “B” X4808 “7” X4809 “8” X480A “9” X480B X0000 X480C

“P” X480D “Q” X480E “5” X480F “6” X4810 “7” X4811 X0000 … … X5000 X0000 X5001 X5002 X5002 “M” X5003 “N” X5004 “4” X5005 “8” X5006 “3” X5007 X0000 Figure 3: Contents of Memory Before Execution EE306 Introduction to Computing If the input were: Type EID and press Enter: MN483 Then the contents of memory changes as follows: Address M[Address] X4000 X5000 X4001 X0000 X4002 X4004 (Next pointer) X4003 X4800 (Pointer to EID) X4004 X4006 X4005 X4806 X4006 X0000 X4007 X480C … …

X4800 “X” X4801 “Y” X4802 “1” X4803 “2” X4804 “3” X4805 X0000 X4806 “A” X4807 “B” X4808 “7” X4809 “8” X480A “9” X480B X0000 X480C “P” X480D “Q” X480E “5” X480F “6” X4810 “7” X4811 X0000 … … X5000 X4002 X5001 X5002 X5002 “M” X5003 “N” X5004 “4” X5005 “8” X5006 “3” X5007 X0000 Figure 4: Contents of Memory After Execution EE306 Introduction to Computing

Input/Output Requirements

Described below are detailed requirements about the Inputs and Outputs of your program. You should adhere to these guidelines to receive full credit for this assignment. Input: Your program should prompt the user for the last name from the keyboard, as follows: Print a string EXACTLY “Type EID and press Enter: ”.

Then wait for the user to input a string followed by . Note that you will get a 0 on the assignment if you do not print this string EXACTLY. The user will input a character string from the keyboard, terminating the EID with the key. Hint: To continually read from the keyboard without first printing a prompt on the screen, use TRAP x20 (assembler name GETC).

That is, for each key you wish to read, the LC-3 operating system must execute the TRAP x20 service routine. If you follow TRAP x20 with the instruction TRAP x21 (assembler name OUT), the character the user types will be displayed on the screen. Output: Your program should output one of three strings depending on the outcome of the linked list lookup.

When the ID entered by the user is found in the main room list, print out “ is already in the main room.”. If the EID is found in the second list, remove the node from the second list and add it to the front of the main room student list and print “ is added to the main room.”. If the entered EID does not find a match in both the lists then print out the string, “The entered EID does not match.”.

Hint:

To output a string to the console display, use TRAP x22 (assembler name PUTS). What needs to go into R0 to use this TRAP instruction? A sample of what your program will produce, when supplied with the input from the user trying to add the course: EXAMPLE 1: Type EID and press Enter: MN483 MN483 is added to the main room. —– Halting the processor —–

2: Type EID and press Enter: HI654 The entered EID does not match. —– Halting the processor —– EE306 Introduction to Computing EXAMPLE 3: Type EID and press Enter: XY123 XY123 is already in the main room —– Halting the processor —–

Notes & Hints:

1. Your program must start at location x3000.

2. The two linked lists representing the Zoom Classroom participant list is an input to your program. The list is loaded in memory before your program begins to run. Your program will search the list and modify it.

3. The pointer to the first node to the main room list and the waiting room list is stored in memory location x4000 and x4001 respectively before the program execution begins.

Further, assume that all the nodes are stored between memory locations x4002 and xFDFF. Make no other assumptions about the location of the nodes. Note that the pointer to the first node may be set to NULL (i.e., 0), indicating that there are no nodes in the list.

4. Your program should NOT make any assumptions about the number of nodes in the list.

5. You may assume that everyone in the list has a unique EID.

6. The key is the carriage return character which is the ASCII code x0A.

7. Do not forget to modify the content of memory locations x4000 and x4001 while removing and adding nodes.

8. Do not forget to echo characters while reading from the console.

9. Pay attention to changes between Figures 3 and 4.

10. You can reduce the size of your code by defining the common parts required for both directories as subroutines.

IMPORTANT:

The file that you will upload to online repository for this assignment must be named youreid.asm. (eg., xy123.asm)

 

EE306 Introduction to Computing Lab 7 Solved

Problem statement

The purpose of this assignment is to show how interrupt-driven I/O can interrupt a program,
execute the interrupt service routine, and return to the interrupted program, picking up exactly
where it left off (just as if nothing had happened). In this assignment, we will use the Keyboard
as the input device for interrupting the running program.

To demonstrate this, we will need three things:

1. The interrupt vector table must be generated; interrupts will need to be enabled. The operating
system will set up the interrupt vector table and enable the interrupts and then start execution of
the user program.
2. A program that will run at priority level 0.
3. An interrupt service routine that will be invoked as a result of someone hitting a key on the
keyboard.

The operating system enabling code.

We are going to require you to do the enabling actions that the operating system would do before
the execution of the User program.
1. Normally, the operating system establishes the interrupt vector table to contain the starting
addresses of the corresponding interrupt services routines. You will have to do that for the
keyboard interrupt. The starting address of the interrupt vector table is x0100 and the interrupt
vector for the keyboard is x80.

2. Normally, the operating system would set KBSR[14] to enable the keyboard to interrupt user
programs. You will have to do that.
3. Push Appropriate PSR and PC values to the stack. Then, an RTI instruction in the OS code
will take you to the user program starting at 0x3000.

You must perform these tasks as a part of the operating system code.
EE306 Introduction to Computing

The user program.

The user program will print the prompt “WHAT STARTS HERE CHANGES THE WORLD”
followed by a newline character (x0A).

The user program is to do this in an infinite loop.
In order to make sure the prompts don’t get written to the monitor too fast to be seen by the
naked eye, the user program should include a piece of code that will count down from say x5000
each time a character is output to the screen. You may want to try out other numbers if your
processor is too fast or slow.

The keyboard interrupt service routine.

The keyboard interrupt service routine will read the character typed, prints a newline and
performs one of the following tasks based on the type of character:
1. Upper Case Alphabet, then print the string “Practice Social Distancing” and then a newline.
2. Lower Case Alphabet, then print “Wash your Hands frequently” and then a newline.
3. Number between 0 and 9, then print “Stay Home, Stay Safe” and then a newline
4. For any other character, print “———– End of EE306 Labs ^^ ———–”, a newline and Halt
the processor.

VERY IMPORTANT:

You are not allowed to use any TRAP instruction other than HALT
in your interrupt service routine. To display a character to the screen, you must poll the DSR
and then write to the DDR, you may not call TRAP x21 (OUT), or use any of the other TRAP
routines. If you use TRAP in the interrupt service routine or if you do not properly poll the DSR
before writing to the DDR, your program is not correct and will not be graded even though it
may appear to work.

Hint: Don’t forget to save and restore any registers that you use in the interrupt service routine.
Your job will be to write the operating system code, user program and the keyboard interrupt
service routine describe above.

A template for each of these files is provided to you. Do not change the .ORIG address in
these files and use them to finish the requirements of this lab.
Turn-in a single file named exactly after your eid. For example, xy123.asm.
EE306 Introduction to Computing

An example of how the console should look when you run the program:
Figure 1: Sample Output – Key Sequence: A, z, 9, ]