Question: Write a MARIE assembly language program that inputs a sequence of characters from the set A-Z (capital letters only), stores each character in memory after
Write a MARIE assembly language program that inputs a sequence of characters from the set A-Z (capital letters only), stores each character in memory after it is transformed by the trivial ROT13 cipher, and then, after character input completes, outputs the transformed characters.
~ Constant values should not be changed by the values.
~Program should initialize values for Ptr in working data memory.
~Should work for any inputs 'A' through 'Z' and '.' with the period terminating the input.
~Must use a loop and indirect addressing to access the values in the array of words.
The following is what I have :
ORG 100 / Start the program at location 100 hexadecimal
/ -----
/ Input characters, transform, and store in memory until '.' is input
/ -----
Load Start / Initialize character pointer to start of block
Store Ptr
/>>>>> Add code to accomplish the input and output phases. <<<<<
/>>>>> Here's an example of how subroutine ROT13 is called. <<<<<
/>>>>> We'll just transform 'A' in this example then halt. <<<<<
Load ChA / Put 'A' in AC
Store InVal / Store value to be transformed into InVal
Jns ROT13 / Jump to the ROT13 subroutine
/ Upon return, the transformed character is in AC
Halt
/ -----
/ Rotate-13 subroutine: Apply ROT13 to input character in location InVal and return in AC
/ -----
/>>>>> This subroutine *almost* works. You need to fix a bug.
ROT13, HEX 0
Load InVal / Get character
Add Val13 / Add 13
Store Hold / Save it
Subt ChZ / Check if modulo adjust is needed (past 'Z')
Skipcond 800 / No adjust needed if past 'Z'
Jump NoAdj
Add ChA / Add 'A' back to difference to perform modulo
Jump Done / Result is in AC
NoAdj, Load Hold / No adjust needed, get result
Done, JumpI ROT13 / Return with result in AC
/ -----
/ Constants (the program should not write to these locations)
/ -----
ChA, HEX 0041 / Constant value 'A' for modulo adjust in subroutine
ChZ, HEX 005A / Constant value 'Z' for modulo check in subroutine
ChPe, HEX 2E / Constant period character that marks end of input
Val13, DEC 13 / Constant rotate value of 13 for subroutine
One, HEX 1 / Constant value 1
Start, HEX 200 / Constant address for start of character block
/ -----
/ Data area (these locations are for reading and writing)
/ -----
InVal, HEX 0 / Reserved for subroutine input value
Hold, HEX 0 / Reserved for temporary variable for subroutine
Ptr, HEX 0 / Reserved for character pointer
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
