前言
这个实验不是很难,比上一个四子棋实验简单多了。。。
实验内容
这个实验需要实现LC-3的中断操作,实现也比较简单。我们编写用户程序持续输出,然后通过键盘触发中断,中断程序的触发,打断用户程序的输出,表示发生中断了,然后中断结束,继续输出。
用户程序
编写用户程序,交替输出字符串,达到刷屏效果,输出字符串之后使用循环来延迟一会,然后继续输出
ICS ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS ICS
ICS ICS ICS ICS ICS
中断服务程序
编写中断服务函数响应键盘中断,输出10次键盘键入的字符。
我们会看到主程序(用户程序)在连续输出字符串的同时,会插入我们按下的键,输出10次,然后又开始连续输出字符串
要求 不能使用 TRAP 这些伪指令,需要从 KBDR 读取数据,然后发送到DDR 寄存器显示,关于输入输出之前有提到【LC-3指令集 字符的输入与输出】
这里大概说一下,就是轮询检测DSR的最高位是否为1,是则表示可以显示,我们将KBDR的数据写入DDR,以显示数据。
使用以下代码完成一个最基本的输出程序
LOOP LDI R0 DSR
BRzp LOOP ; 轮询等待DSR最高位置1表示可以显示了
DSR .FILL 0xFE04
DDR .FILL 0xFE06
注意事项
循环输出字符串需要在中间加入循环延时,循环25000次即可
配置中断
- 分配栈空间&#x