어셈블리를 작성 중이므로 서브 루틴을 사용하려고하는데 문제가 있습니다. 스위치 케이스와 유사한 루틴을 작성했습니다. 그것은 입력을 읽고 값에 따라 다음 서브 루틴의 주소를 스택의 예약 된 주소에 기록합니다.PDP-11 어셈블리의 서브 루틴
1000 jsr r5,switchcase
// let the return address be 1004
1004 jsr r5,@0(sp)
첫 JSR 스택의 첫 번째 주소로 기록하는 스위치 케이스에 간다 :
는그것은 다음과 같이 보입니다. 두 번째 주소는 해당 주소로 점프합니다.
나는 시뮬레이터를 사용하고 있으며, 그 라인에 도달 할 때마다 멈춰 버린다. 나는 무엇이 잘못되는지를 모른다 :/
어떤 도움을 주시면 감사하겠습니다.
'jsr'이 스택에 반환 값을 푸시하여 사용하게되는 오프셋을 변경한다는 사실을 고려하고 계십니까? –
@ 마크 랜섬 : 사실, jsr r5, ... 스택에 r5를 푸시 한 다음 현재 PC를 r5에 할당합니다. –