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 21:07:47 浏览: 50
以下是一个简单的 LC-3 子程序,用于打印 "Hello" N 次:
```
; 子程序
; 输入:R1 - 打印次数
; 输出:无
Hello:
LEA R0, HELLO_MSG ; 加载消息地址到 R0
LD R2, HELLO_LEN ; 加载消息长度到 R2
Loop:
TRAP x22 ; 输出消息
ADD R1, R1, #-1 ; 打印次数减1
BRp Loop ; 如果打印次数不为0,跳转到 Loop
RET ; 返回
; 数据
HELLO_MSG .STRINGZ "Hello\n" ; 消息
HELLO_LEN .FILL #-6 ; 消息长度
; 主程序
; 输入:无
; 输出:无
.ORIG x3000
; 输入 N
LEA R0, PROMPT
TRAP x22
TRAP x23
LD R1, N
; 调用子程序
JSR Hello
; 输出提示
LEA R0, END_MSG
TRAP x22
TRAP x25
; 数据
PROMPT .STRINGZ "Enter N: "
END_MSG .STRINGZ "\nDone\n"
N .BLKW 1 ; 存储输入的 N
.END
```
程序的流程如下:
1. 输出提示,要求用户输入 N。
2. 从键盘输入 N。
3. 调用子程序 Hello,将 N 作为参数传递。
4. 子程序循环打印 "Hello",直到打印次数达到 N。
5. 打印 "Done" 提示,程序结束。
注意:程序中使用了 TRAP x22 来输出消息,TRAP x23 来读取键盘输入,TRAP x25 来停机。这些 TRAP 指令的具体含义请参考 LC-3 的文档。
阅读全文