我对我写的简单程序感到有点困惑,可以 请解释为什么它只打印一个字符后退出,我期待它 我会每5秒打印一次角色,提前谢谢
tks = 177560
tkb = 177562
tps = 177564
tpb = 177566
lcs = 177546
. = torg + 2000
main: mov #main, sp
mov #clock, @#100 ; vector interrupt of the clock 100-102
mov #300, @#102 ;
mov #100, @#lcs ; here I enable interrupt-enable of the clock
prog: clr r0 ; here endless loop
beq prog
halt
clock: inc count
cmp count, timeout
bne clk_end
clr count
mov #'*, @#tpb
clk_end:rti
. = torg + 3000
timeout: .word 300000
count: .word 0
答案 0 :(得分:2)
这肯定是一个与模拟器相关的问题,因为我试图运行你的代码,它运行正常!
你是英国以色列理工学院的学生吗?
答案 1 :(得分:0)
我不熟悉PDP-11,但我已经为其他处理器编写了中断代码。在其他处理器上,如果中断例程未保存标志寄存器,则可能会发生您描述的行为。如果在两个指令clr r0
和beq prog
之间发生中断,并且中断处理程序清除了标志寄存器中的相等位,则会导致您描述的行为。
同样,我不熟悉PDP-11汇编程序,但是当您进入中断例程并在rti
指令之前恢复它时,您可能会尝试保存标志寄存器的状态。也许使用相当于80x86 push
指令的PDP-11。
答案 2 :(得分:0)
我认为时钟的模式不应该是0而是1,用110而不是100来加载它。 参见KW11-P可编程实时时钟手册。