我对我写的简单程序有点困惑,你能解释一下为什么它只打印了一个字符就退出了吗,我预计它会每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发布于 2010-06-22 04:54:03
这肯定是一个与模拟器相关的问题,因为我试图运行你的代码,它工作得很好!
你碰巧是理工学院的学生吗?
发布于 2010-06-22 04:27:31
我不熟悉PDP-11,但我为其他处理器写过中断代码。在其他处理器上,如果中断例程未保存标志寄存器,则可能会发生您所描述的行为。如果在两条指令clr r0和beq prog之间发生中断,并且中断处理程序清除了标志寄存器中的相等位,则会导致您所描述的行为。
同样,我不熟悉PDP-11汇编程序,但您可以尝试在进入中断例程时保存标志寄存器的状态,并在rti指令之前恢复它。可能使用PDP-11等效于80x86 push指令。
发布于 2010-06-22 20:47:01
我认为时钟的模式不应该是0而是1,加载110而不是100。参见KW11-P可编程实时时钟手册。
https://stackoverflow.com/questions/3087618
复制相似问题