Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Purpose In this lab, students will gain familiarity with the use of low-level subroutines, caller/callee register saving policy, and TRAP calls. It is important to

Purpose

In this lab, students will gain familiarity with the use of low-level subroutines, caller/callee register saving policy, and TRAP calls. It is important to master this material prior to confronting the construction and use of full activation records (stack frames). Activation records will be covered in more detail in a later assignment.

Activity Summary

Using the LC-3 simulator, you will construct an assembly-level program that prompts the user for a starting address (in hex) and an ending address (in hex). Your program will then output the contents of memory (in hex) between the provided ranges (inclusive). An example execution of the memory dump routine might look like this:

Enter starting memory address: x3000 Enter ending memory address: x3001 Memory contents x3000 to x3001: x3000 xF030 x3001 xF025 

Green text is user input and blue text is assembly language program output. Of course, your ACTUAL input and output won't be color coded. I just did that here for more clarity.

I/O for this routine requires that you develop a routine to enable the input of a 4-digit hex value and a routine for displaying the contents of a 16-bit registers/memory location as a 4-digit hex value. You should implement EACH of these two functions as separate user TRAPs according to these specifications:

  • Input (Trap x40): A Trap routine (invoked as TRAP x40) that reads a 4-digit hex from the keyboard and returns the value in R0. This trap may call other traps. You will develop this trap routine and locate it in memory at address x4000.
  • Output (Trap x41): A Trap routine (invoked as TRAP x41) that displays the contents of R0 to the display as a 4-digit hex value. This routine should output exactly 5 characters: a leading x and the 4 hex digits. Do not display a carriage return/line feed/end-of-line as part of the trap call. This trap may also call other traps. You will develop this trap routine and locate it in memory at address x5000.

Develop these TRAP routines and the use them to implement a program to perform memory dumps (using the i/o format provided in the example above).

Note: The representation for output characters (ASCII) is different than the standard binary representation of the value. For example, you may find it useful to note that the ASCII representation for any single-digit value is #48 greater than the number itself. Thus, the ASCII representation of the character 0 has value #48 (x30) while the ASCII representation of the character 1 has value #49 (x31).

Requirements

Input Routine (Trap x40):

  • 4-hex digit input: Your project must include an input routine that reads a 4-hex digit input. It must properly translate the ASCII inputs into a 16-bit value returned in R0.
  • Error checking: Your input routine should verify that the input consist of exactly 4 hexadecimal characters. It should accept uppercase ASCII characters for the hex digits A- F. If an error is detected, the routine must return the value x0000. (You can earn 2 extra-credit points for correctly accepting either upper or lower case A-F digits.)
  • TRAP implementation: Your input routine should be implemented as a TRAP. Please locate this routine starting at address x4000 in memory. Please execute this routine as TRAP x40. The TRAP routine should not have any unexpected side-effects!

Output Routine (Trap x41):

  • 4-hex digit output: Your project must include an output routine that properly displays for the user as a 4-hex digit value the contents of R0. The 4-digit value should have an x preceding it to indicate that it is a hex value.
  • TRAP implementation: Your output routine should be implemented as a TRAP. Please locate this routine starting at address x5000 in memory. Please execute this routine as TRAP x41. The TRAP routine should not have any unexpected side-effects.

Memory Dump (main) Routine:

  • Address input: The main routine must prompt the user to input a starting and ending memory address. It should verify that the starting address is lower than the ending address, and prompt the user to reenter the values if this is not the case, or if either input value is not a proper 4-digit hex value.
  • Address output loop: Your project must be able to properly output (to the console, in ASCII) the contents in the range of the specified start/end addresses. (See example under assignment description).

Overall

  • 5 points: Documentation: Your code should be well documented and easy to follow. You do NOT have to comment every line of code, but you should have high-level comments for each 3-10 lines that represent a functional block of code. All major functional blocks should be commented. Symbols should be meaningful. Sample execution must demonstrate the functionality of your project.

Deliverables

You will need to implement and turn in four assembly language (.asm) files :

  1. main.asm: the main program which performs the overall memory dump functionality
  2. input.asm: the trap service routine for the input routine
  3. output.asm: the trap service routine for the output routine
  4. tvp.asm: contents for the trap vector table necessary to enable your routine.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Introduction to Managerial Accounting

Authors: Peter Brewer, Ray Garrison, Eric Noreen

7th edition

978-1259675539, 125967553X, 978-1259594168, 1259594165, 78025796, 978-0078025792

Students also viewed these Accounting questions