The LC-3 provides two output TRAPS for strings: PUTS (TRAP x22) and PUTSP (TRAP x24). Both of these expect (in R starting address for a string, and output the encoded string to the display. Your task is to produce two programs tha provide the "opposite" function of PUTS and PUTSP - that is, they take a string as input and place the string into me at a location specified in RO. You will create two separate stand-alone programs: one for GETS and one for GETSP. programs do not need to be implemented as subroutines or TRAP calls. Using the LC-3 simulator, you will construct an assembly-level program that prompts the user for a string (the end of string will be delimited by the character xOA, the ASCII character "Enter"). You will store the ASCII string representa of this input (including a terminating NULL character) in memory. The "Enter" character should not be considered p of the string and thus should not be stored. For the purposes of demonstration, I would like you to store the string a address x3100 (add the appropriate code to your program) and show that you have successfully stored the string by printing it back to the display using PUTS or PUTSP. Your program will be located in memory at location x3000. The following is an example output for both GETS.asm and GETSP.asm: Enter string to echo: Go Raiders!

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
  1. Write the code in assebly language code that can be read in LC3 simulators!
  2. .ORIG x3000
  3.  
  4. ; Set up the user stack:
  5. LD R6, STKBASE ; Sets up the stack by loading the base address into R6
  6.  
  7. ; Prompt for the first string:
  8. LEA R0, PRMPT1 ; Loads the address of PRMPT1 into R0
  9. PUTS
  10.  
  11. ; Call GETS to get first string:
  12. LEA R0, STRNG1 ; Loads the address of STRNG1
  13. ADD R6, R6, #-1 ; Push the address to store the string at
  14. STR R0, R6, #0
  15. JSR GETSP ; Call GETSP
  16. ADD R6, R6, #2 ; Clean up (pop parameter & return value)
  17.  
  18. ; Prompt for second string:
  19. LEA R0, PRMPT2 ; Loads the address of PRMPT2
  20. PUTS
  21.  
  22. ; Call GETS to get second string:
  23. LEA R0, STRNG2 ; Loads the address of STRNG2
  24. ADD R6, R6, #-1 ; Push the second address to store the string at
  25. STR R0, R6, #0
  26. JSR GETSP ; Call GETSP
  27. ADD R6, R6, #2 ; Clean up (pop parameter & return value)
  28.  
  29. ; Output both strings:
  30. LEA R0, OUT1 ; First string...
  31. PUTS
  32. LEA R0, STRNG1
  33. PUTSP
  34. LD R0, LF ; Print a linefeed
  35. OUT ; Write character to console (TRAP x21)
  36. LEA R0, OUT2 ; Second string.
  37. PUTS
  38. LEA R0, STRNG2
  39. PUTSP
  40.  
  41. HALT ; We are done
  42.  
  43. ; GLOBAL VARIABLES
  44. ; ----------------
  45. STKBASE .FILL xFDFF ; The bottom of the stack will be xFDFF
  46. LF .FILL x0A ; A linefeed character. Change this to x0D if you are using UNIX desktop sim
  47. PRMPT1 .STRINGZ "Please enter the first string: "
  48. PRMPT2 .STRINGZ "Please enter the second string: "
  49. OUT1 .STRINGZ "The first string was: "
  50. OUT2 .STRINGZ "The second string was: "
  51. CLU .FILL x00FF ; Clear upper byte of a value in a register
  52. CLL .FILL xFF00 ; Clear lower byte of a value in a register
  53. STRNG1 .BLKW #80 ; Room for 79 characters (unpacked) + NULL
  54. STRNG2 .BLKW #80 ; Room for 79 characters (unpacked) + NULL
  55.  
  56. ;=====================================================================================
  57. ; Place your GETSP subroutine below the notes:
  58. ;=====================================================================================
  59. ; Subroutine GETSP
  60. ; Parameters: Address - the address to store the string at
  61. ;
  62. ; Returns: Nothing
  63. ;
  64. ; Local variables
  65. ; Offset Description
  66. ; 0 Callee-saved register R0
  67. ; -1 Callee-saved register R1
In this lab, you will construct an assembly routine that stores the ASCII representation of an input string in memory at a specified location. The LC-3 machine language provides several useful TRAP calls for I/O. For example, GETC (TRAP x20) gets one character from the keyboard and places its ASCII code in R0. OUT (TRAP x21) performs the opposite function—taking the contents of R0 and outputting the specified character (using ASCII encoding) to the display.

The LC-3 provides two output TRAPS for strings: PUTS (TRAP x22) and PUTSP (TRAP x24). Both expect (in R0) a starting address for a string and output the encoded string to the display. Your task is to produce two programs that provide the “opposite” function of PUTS and PUTSP—that is, they take a string as input and place it in memory at a location specified in R0. You will create two separate stand-alone programs, one for GETS and one for GETSP. The programs do not need to be implemented as subroutines or TRAP calls.

Using the LC-3 simulator, you will construct an assembly-level program that prompts the user for a string (ending with the character x0A, the ASCII character “Enter”). You will store the ASCII string representation of this input (including a terminating NULL character) in memory. The “Enter” character should not be considered part of the string and thus should not be stored. For demonstration purposes, store the string at address x3100, and show successful storage by printing it back using PUTS or PUTSP. The program will be located in memory at location x3000.

Example output for both GETS.asm and GETSP.asm:

```
Enter string to echo: Go Raiders!
Go Raiders!
----- Halting the processor -----
```
Transcribed Image Text:In this lab, you will construct an assembly routine that stores the ASCII representation of an input string in memory at a specified location. The LC-3 machine language provides several useful TRAP calls for I/O. For example, GETC (TRAP x20) gets one character from the keyboard and places its ASCII code in R0. OUT (TRAP x21) performs the opposite function—taking the contents of R0 and outputting the specified character (using ASCII encoding) to the display. The LC-3 provides two output TRAPS for strings: PUTS (TRAP x22) and PUTSP (TRAP x24). Both expect (in R0) a starting address for a string and output the encoded string to the display. Your task is to produce two programs that provide the “opposite” function of PUTS and PUTSP—that is, they take a string as input and place it in memory at a location specified in R0. You will create two separate stand-alone programs, one for GETS and one for GETSP. The programs do not need to be implemented as subroutines or TRAP calls. Using the LC-3 simulator, you will construct an assembly-level program that prompts the user for a string (ending with the character x0A, the ASCII character “Enter”). You will store the ASCII string representation of this input (including a terminating NULL character) in memory. The “Enter” character should not be considered part of the string and thus should not be stored. For demonstration purposes, store the string at address x3100, and show successful storage by printing it back using PUTS or PUTSP. The program will be located in memory at location x3000. Example output for both GETS.asm and GETSP.asm: ``` Enter string to echo: Go Raiders! Go Raiders! ----- Halting the processor ----- ```
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Huffman coding
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education