Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am using the LC3 assembler to write two programs taking a user input string of

ID: 672936 • Letter: I

Question

I am using the LC3 assembler to write two programs taking a user input string of characters, storing it to an array labeled ARRAY, and then outputting it to the console using PUTS and PUTSP. I have finished the PUTS.asm program, since it only needed to store a single character per 16 bit word to sequential array locations. My issue is figuring out how to store the characters to the array, two characters per 16 bit word, so that I can just call LEA R0, ARRAY and then PUTSP to print out the packed array. My specific question would be: how do I go about packing the array; how do you store two characters per 16 bit word?

Explanation / Answer

; Initialization

; .ORIG x3000

AND R2, R2, #0 ; R2 is counter, initially 0

LD R3, PTR ; R3 is pointer to characters

GETC ; R0 gets character input

LDR R1, R3, #0 ; R1 gets first character ;

; Test character for end of file

;

TEST ADD R4, R1, #-4 ; Test for EOT (ASCII x04)

BRz OUTPUT ; If done, prepare the output

; Test character for match. If a match, increment count.

; NOT R1, R1

ADD R1, R1, R0 ; If match, R1 = xFFFF

NOT R1, R1 ; If match, R1 = x0000

BRnp GETCHAR ; If no match, do not increment

ADD R2, R2, #1 ;

; Get next character from file.

;

GETCHAR ADD R3, R3, #1 ; Point to next character.

LDR R1, R3, #0 ; R1 gets next char to test

BRnzp TEST ;

; Output the count.

;

OUTPUT LD R0, ASCII ; Load the ASCII template

ADD R0, R0, R2 ; Covert binary count to ASCII

OUT ; ASCII code in R0 is displayed.

HALT ; Halt machine

;

; Storage for pointer and ASCII template

;

ASCII .FILL x0030

PTR .FILL x4000 .END

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote