In this lab you will construct an assembly routine that puts 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 (Patt 2e Appendix A, p 541). For example, GETC (TRAP x20) gets one character from the keyboard and places its ASCII code in RO. OUT (TRAP X21) performs the opposite function - it takes the contents of RO and outputs 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 of these expect (in RO) 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 the string into memory at a location specified in RO. 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 (the end of the string will be delimited by the character xOA, 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 the purposes of demonstration, I would like you to store the string at 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! Go Raiders! Halting the processor

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
Topic Video
Question
In this lab you will construct an assembly routine that puts 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 (Patt 2e Appendix A, p 541). For
example, GETC (TRAP x20) gets one character from the keyboard and places its ASCII code in RO. OUT (TRAP x21)
performs the opposite function - it takes the contents of RO and outputs 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 of these expect (in RO) 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 the string into memory
at a location specified in RO. 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 (the end of the
string will be delimited by the character xOA, 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 the purposes of demonstration, I would like you to store the string at
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!
Go Raiders!
‒‒‒‒‒
Halting the processor
Transcribed Image Text:In this lab you will construct an assembly routine that puts 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 (Patt 2e Appendix A, p 541). For example, GETC (TRAP x20) gets one character from the keyboard and places its ASCII code in RO. OUT (TRAP x21) performs the opposite function - it takes the contents of RO and outputs 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 of these expect (in RO) 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 the string into memory at a location specified in RO. 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 (the end of the string will be delimited by the character xOA, 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 the purposes of demonstration, I would like you to store the string at 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! Go Raiders! ‒‒‒‒‒ Halting the processor
Expert Solution
Step 1: Here is an example implementation of the GETS program in LC-3 assembly language:

To implement the GETS program in LC-3 assembly, you would need to perform the following steps:

  1. Load the starting address of the string (x3100) into RO.
  2. Prompt the user to enter a string by calling OUT with a message to "Enter string to echo:".
  3. Use a loop to continuously call GETC to get characters from the user until the ASCII code for "Enter" (x0A) is received.
  4. Store each character received from GETC in the memory location pointed to by RO.
  5. Increment RO after each character is stored to move to the next memory location.
  6. Once the "Enter" character is received, add a NULL character (x0000) to the end of the string.
  7. Call PUTS with the starting address of the string (x3100) to output the string to the display.
  8. Halt the processor.

Here is an example implementation of the GETS program in LC-3 assembly language:

CODE: 

; GETS program
; Prompts user for a string and stores it in memory

; Program start address
.ORIG x3000

; Main routine
GETS
  ; Load the start address for the string
  LD R0, STR_START

  ; Load the next character from the keyboard into RO
  LEA R1, GETC
  TRAP x20

  ; Check if the character is "Enter" (x0A)
  BRz END_GETS
  ; Store the character at the memory location pointed by R0
  ST R1, 0(R0)
  ; Increment the memory location
  ADD R0, R0, 1
  ; Repeat the process
  BR GETS

END_GETS
  ; Store the NULL character at the end of the string
  LD R1, NULL
  ST R1, 0(R0)

  ; Output the stored string
  LEA R0, STR_START
  LEA R1, PUTS
  TRAP x22

; Halting the processor
  HALT

; Data definitions
STR_START .FILL x3100
NULL .FILL x0000

GETC .STRINGZ "Enter string to echo: "
PUTS .STRINGZ "\nEcho string: "

.END

 

 

OR

OR

OR

 

 

CODE:

; Load the starting address of the string into RO

LD R0, STRING_START

; Prompt the user to enter a string

LEA R1, PROMPT

PUTS

; Use a loop to get characters from the user

GETS_LOOP

GETC

STR R0, R1, 0

ADD R0, R0, #1

BRz GETS_END

BR GETS_LOOP

 

; Add a NULL character to the end of the string

GETS_END

LD R1, x0000

STR R0, R1, 0

 

; Output the string to the display

LD R0, STRING_START

PUTS

 

; Halt the processor

HALT

 

; Constants

PROMPT .STRINGZ "Enter string to echo: "

STRING_START .FILL x3100

trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Instruction Format
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