2010-06-21 4 views
2

내가 쓴 간단한 프로그램에 대해 조금 혼란 스럽다. 한 문자 만 인쇄 한 후 왜 종료되는지 설명 해주십시오. 매 5 초마다 문자를 인쇄합니다. 감사합니다. advance시계가 pdp-11에

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

PDP11? 실제 하드웨어가 있거나 시뮬레이터를 사용하고 있습니까? –

+0

@ theatrus : 시뮬레이터 – helloWorld

+0

시뮬레이터를 사용하고 있습니다. 오늘의 질문입니다. –

답변

2

필자는 코드를 실행하려고 시도했기 때문에 이것은 시뮬레이터 관련 문제 일 것입니다.

우연히 Technion의 학생입니까?

+0

예, 당신은 바로 Technion의 학생이고,이 시뮬레이터는 나를 만든다. 미친, 문제가 될 수있는 이유는 무엇입니까? 너는 거기서 공부하기를 제안한다. 프로그램이 중단되지 않았습니까? 내가 5 초마다 날 인쇄 할거야. – helloWorld

+0

Windows 7의 코스에서 제공하는 시뮬레이터를 사용하고 있습니다. 매 4 초마다 인쇄됩니다. 멈추지 않고. 어쩌면 다른 컴퓨터에서 실행 해볼까요? –

+0

나는 시뮬레이터가 OS에 의존하지 않는다고 생각했다. ok, thanks – helloWorld

0

저는 PDP-11에 익숙하지 않지만 다른 프로세서에 대한 인터럽트 코드를 작성했습니다. 다른 프로세서에서는 플래그 레지스터가 인터럽트 루틴에 의해 저장되지 않으면 설명하는 동작이 발생할 수 있습니다. 두 명령어 clr r0beq prog 사이에 인터럽트가 발생하고 인터럽트 핸들러가 플래그 레지스터의 동일한 비트를 지우면 설명하는 동작이 발생할 수 있습니다.

PDP-11 어셈블러에 익숙하지 않지만 인터럽트 루틴에 들어가고 rti 명령 바로 전에 플래그 레지스터의 상태를 저장해보십시오. 아마도 PDP-11을 80x86 push 명령과 동등하게 사용합니다.

+0

답변을 주셔서 감사합니다,하지만 여기에 다른 뭔가가 있다고 생각, 내 코드를 변경 prog : br prog,하지만 그것은 동일한 방식으로 작동합니다 – helloWorld

0

시계의 모드가 0이 아니라 1이어야한다고 생각합니다. 100 대신 110을로드하십시오. KW11-P 프로그래머블 실시간 시계 설명서를 참조하십시오.

관련 문제