2

私が書いた単純なプログラムについて少し混乱しています.1文字だけを印刷した後に終了する理由を説明してください.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

This is surely a simulator-related problem, since I tried to run you code, and it works fine!

Are you by chance a student at the Technion?

于 2010-06-21T20:54:02.503 に答える
0

クロックのモードは 0 ではなく 1 であるべきだと思います。100 ではなく 110 をロードしてください。KW11-P プログラマブル リアルタイム クロックのマニュアルを参照してください。

于 2010-06-22T12:47:01.033 に答える
0

私は PDP-11 に詳しくありませんが、他のプロセッサ用の割り込みコードを書きました。他のプロセッサでは、フラグレジスタが割り込みルーチンによって保存されていない場合、説明した動作が発生する可能性があります。2 つの命令clr r0との間で割り込みが発生beq progし、割り込みハンドラがフラグ レジスタの等しいビットをクリアした場合、説明した動作が発生します。

rti繰り返しますが、私は PDP-11 アセンブラーに精通していませんが、割り込みルーチンに入ったときにフラグ レジスタの状態を保存し、命令の直前に復元してみてください。pushおそらく、80x86命令に相当するPDP-11を使用しています。

于 2010-06-21T20:27:31.327 に答える