2014-09-16 2 views
1

이 질문에 혼란 스럽습니다 : “LEA R0,A" 명령을 실행 한 후 레지스터 0에 저장된 값은 무엇입니까? 어떻게 대답이 x370C입니까? R0에 A의 주소를로드한다고 가정하니? 그렇다면 주소를 어떻게 알 수 있습니까? 누군가 제발 도와 줄 수 있니? 많은 감사합니다!LC3 LEA 명령 및 저장된 값

.ORIG X3700 
LEA R0, A 
LDI R2, C LDR R3, R0, 2 
AND R1, R1, #0 
IN 
ST R0, D 
JSR F 
HALT 
F LD R1, B 
ADD R1, R1, #1 
BRp F 
RET 

A .FILL X1234 
B .FILL X370B 
C .FILL X370C 
D .BLKW 2 
E .STRINGZ "ABCD" 
G .FILL X1234 
.END 

답변

4

코드의 기원은 x3700, 당신은 (12 개)의 지시를, 그래서 A의 주소 x3700 + x0C = x370C 될 것입니다. 짐작할 수 있듯이 LEA R0,AA의 주소를 R0에로드하므로 첫 번째 명령이 실행 된 후에 R0x370C이 포함됩니다.

 .ORIG X3700 
3700  LEA R0, A 
3701  LDI R2, C 
3702  LDR R3, R0, 2 
     ... 
370b  RET 

370c  A .FILL X1234 
     ... 
+0

고마워요! 설명해. – user3735871

+0

문제 없음 -이 질문과 답변을 유용하게 사용하도록 편집을 롤백했습니다. 문제가 계속되면 새로운 질문을 시작하십시오. –

+0

이것 좀 봐 주시겠습니까? http://stackoverflow.com/questions/30007738/how-does-lea-instruction-store-address-of-a 직접이 질문을 기반으로합니다. – committedandroider