LC3 Assembly Language TRAPs and Subroutines –Memory Dump
Looking for an experienced developer with knowledge in LC3 assembly language. 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).I/O for this routine requires that we 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 will implement each of these routines as TRAPs.•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.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: Must be able to properly output (to the console, in ASCII) the contents in the range of the specified start/end addresses. (See attached example).Error checking: The 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.