Answer:
ORG 100
Start, Load Max // Load Max from memory
Skipcond 800 // If Max = 0, skip next instruction
Jump Halt // Jump to Halt if Max = 0
Output // Output Max
Input // Input value for Incr
Store Incr // Store Incr in memory
Loop, Load Incr // Load Incr from memory
Add Sum // Add Incr to Sum
Store Sum // Store Sum in memory
Load Sum // Load Sum from memory
Subt Max // Subtract Max from Sum
Skipcond 400 // If Sum <= Max, skip next instruction
Jump Reset // Jump to Reset if Sum > Max
Output // Output Sum
Input // Input value for Incr
Store Incr // Store Incr in memory
Jump Loop // Jump to Loop
Reset, Clear Sum // Reset Sum to 0
Load Max // Reload Max from memory
Store Max // Store Max back in memory
Jump Loop // Jump back to Loop
Halt, Halt // Halt the program
Max, DEC 50 // Variable for Max, initialized to 50
Incr, DEC 0 // Variable for Incr, initialized to 0
Sum, DEC 0 // Variable for Sum, initialized to 0
END Start // End of program
Step-by-step explanation: