1. Write a LC-3 subroutine for printing “Hello” for N times. Write a main program to input N from the keyboard, call the subroutine and then output “Hello” for N times.
时间: 2024-02-13 10:02:28 浏览: 27
以下是 LC-3 子程序和主程序的代码:
```
; LC-3 subroutine for printing "Hello" for N times
; r0: N
Hello:
ADD R2, R0, #0 ; R2 = N
LEA R3, HelloString ; R3 = "Hello" 字符串的地址
Loop:
OUT ; 输出 "Hello"
ADD R2, R2, #-1 ; N = N - 1
BRzp Loop ; 如果 N > 0,则跳转到 Loop
RET
; LC-3 主程序
.ORIG x3000
; 输入 N
LD R0, Prompt
PUTS
GETC
OUT
IN
PUTS
; 调用子程序 Hello
JSR Hello
; 输出 "Done"
LD R0, Done
PUTS
; 退出
HALT
; 数据段
Prompt: .STRINGZ "Enter N: "
Done: .STRINGZ "Done\n"
HelloString:.STRINGZ "Hello\n"
.END
```
主程序首先提示用户输入 N,然后调用 Hello 子程序打印 "Hello" 字符串 N 次,最后输出 "Done" 并退出程序。
注意:由于 LC-3 的 OUT 指令每次只能输出一个字符,所以 "Hello" 字符串后面需要加上换行符 "\n" 来换行打印。另外,本例中假设用户输入的 N 不超过 32767,否则可能会出现错误。