时钟在pdp-11上

时间:2010-06-21 19:03:57

标签: assembly pdp-11

我对我写的简单程序感到有点困惑,可以 请解释为什么它只打印一个字符后退出,我期待它 我会每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

3 个答案:

答案 0 :(得分:2)

这肯定是一个与模拟器相关的问题,因为我试图运行你的代码,它运行正常!

你是英国以色列理工学院的学生吗?

答案 1 :(得分:0)

我不熟悉PDP-11,但我已经为其他处理器编写了中断代码。在其他处理器上,如果中断例程未保存标志寄存器,则可能会发生您描述的行为。如果在两个指令clr r0beq prog之间发生中断,并且中断处理程序清除了标志寄存器中的相等位,则会导致您描述的行为。

同样,我不熟悉PDP-11汇编程序,但是当您进入中断例程并在rti指令之前恢复它时,您可能会尝试保存标志寄存器的状态。也许使用相当于80x86 push指令的PDP-11。

答案 2 :(得分:0)

我认为时钟的模式不应该是0而是1,用110而不是100来加载它。 参见KW11-P可编程实时时钟手册。