编程代考 ;Problem 9.30

;Problem 9.30
; Program asks user to enter their name, then greets the user:
; > Please enter your name:
; > Hello,

Copyright By PowCoder代写 加微信 powcoder

; R0: holds the input (from TRAP x20) & uses as output (for TRAP x21) and starting addresses for output strings
; R1: initializes to the starting of HELLO string & ends up pointing to the end of the string (need update after finish code)

.ORIG x3000
LEA R1,HELLO ; starting address of HELLO (going to find end of string for appending)

; get to end of HELLO string for writing/appending input
AGAIN LDR R2,R1,#0 ; load char at hello address into R2
BRz NEXT ; if done w/ string (x0000), go to NEXT
ADD R1,R1,#1 ; increment hello address
BR AGAIN

; print prompt for user input
NEXT LEA R0,PROMPT ; get address of prompt for user
TRAP x22 ; PUTS (output welcome message)

; fill in user input by appendding to where R1 points (after default HELLO string)
LD R3, NEGENTER ; store (through ld) NEGENTER into R3 for termination comparing later
AGAIN2 TRAP x20 ; GETC (gather user input one char at a time)
TRAP x21 ; OUT (output char for user on console)
ADD R2,R0,R3 ; check if user pressed ENTER key
BRz CONT ; if they did, we are done – go to CONT
STR R0,R1,#0 ; store value in R0 (user input) into memory (wherever end of HELLO string is pointing)
ADD R1,R1,#1 ; increment address of R1 so that we can write to the next available spot
BR AGAIN2

; print out Hello,
CONT AND R2,R2,#0 ; clear R2 (doesn’t seem necessary – redundant? may be needed for bigger program where more things can get to CONT)
; ; may not need to do anything here (will discuss in class)
LEA R0, HELLO ; address of HELLO Prompt
TRAP x22 ; PUTS (output updated HELLO string)
TRAP x25 ; HALT (stop program)

NEGENTER .FILL xFFF6 ; -x0A
PROMPT .STRINGZ “Please enter your name: ”
HELLO .STRINGZ “Hello, ”
.BLKW #25

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com