1. Write an 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. (20 points)
时间: 2024-02-07 12:03:51 浏览: 57
下面是一个 LC-3 子程序,用于打印 "Hello" n 次:
```
; 子程序,打印 "Hello" n 次
; R1 存储 n 的值
PrintHello:
LEA R0, HelloStr ; 将 HelloStr 字符串地址存储到 R0 中
LD R2, n ; 将 n 的值存储到 R2 中
Loop:
BRzp EndLoop ; 如果 n <= 0,跳转到 EndLoop
PUTS ; 输出字符串
ADD R2, R2, #-1 ; n = n - 1
BRnzp Loop ; 无条件跳转到 Loop
EndLoop:
RET ; 返回主程序
HelloStr: .STRINGZ "Hello\n" ; 字符串常量
```
下面是一个主程序,用于输入 n,然后调用子程序打印 "Hello" n 次:
```
; 主程序,输入 n,然后调用子程序打印 "Hello" n 次
.ORIG x3000
; 读取 n 的值
LD R1, n
; 调用子程序
JSR PrintHello
; 结束程序
HALT
n: .FILL #5 ; 假设 n 的初始值为 5
.END
```
这个程序假设 n 的初始值为 5。你可以将其替换为从键盘输入 n 的代码,具体实现取决于你使用的 LC-3 模拟器。
阅读全文