2017-12-07 5 views
0

16 비트 단어의 경우 알아낼 수없는 문제가 있습니다. 아래에 나는 상응하는 코드와 상상력을 첨부하여 내가 도움을 요청하는 것에 대해 약간의 설명을합니다.16 비트 단어 lc-3 BR 및 JMP 명령

.orig x3000 
ld r1,n 
lea r5,data 
add r1,r1,#-1 
loop: 
str r1,r5,0 
add r5,r5,r2 
add r1,r1,#-1 
brp loop 
trap x25 
data: .blkw 2 
n: .fill 10 
.end 

다음은 이미지 image

나는 NZP 코드를 얻을 수 있지만, 누군가가이 예에 도움이 할 수 있다면 크게 감상 할 수 있도록 pcoffset9을 계산하는 방법하지 않도록 메신저에게 있습니다.

답변

1

다음과 같이 PCOffset가 계산 화학식

ADDRESS_OF_SYMBOL - (INSTRUCTION_ADDRESS + 1)

.orig x3000 
    LEA R0, HELLO_WORLD    ; x3000 
    PUTS        ; x3001 
    HALT        ; x3002 
    HELLO_WORLD .stringz "HELLO WORLD" ; x3003 
.end 

때문에 PCOffset에서 다음과 같이 LEA 명령이

ADDRESS_HELLO_WORLD - (ADDRESS_LEA + 1)

x3003 - (x3000 + 1) = 2

LEA 명령을 실행하면 PC가 이미 가져 오기의 일부로 증가되었음을 기억하므로 PC는 x3001에 있습니다. 우리는 x3003에 레이블 HELLO_WORLD가있는 주소를 얻기 위해 2를 추가합니다.

+0

안녕하세요 고맙습니다. 같은 논리가 JMP 명령어에도 적용되는지 궁금합니다. @Brandon –

+0

JMP 명령어에는 PC 오프셋이 없습니다. 그래서 아니야. 어쩌면 당신은 JSR 명령을 생각하고 있습니다. – Brandon

+0

위의 예에서 어셈블리 비트로 0000 001 000000001을 얻었으므로 올바른 것입니까? –