2

我对我写的简单程序有点困惑,你能解释一下为什么它在只打印一个字符后退出,我希望它每 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
4

3 回答 3

3

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

您是 Technion 的学生吗?

于 2010-06-21T20:54:02.503 回答
0

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

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

于 2010-06-21T20:27:31.327 回答
0

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

于 2010-06-22T12:47:01.033 回答