안녕하세요, 저는 정수의 제곱을 계산하고 r0에 저장하는 lc3 어셈블리 프로그램을 작성하려고합니다. 정수는 매개 변수로 주어지며 r1에 있습니다. 디버깅이 처음이 추가 첫 번째 패스 동안이지만, 두 번째 패스는 R0에 또 다른 2를 추가하는 데 실패 - 어떤 도움이 도움이 사용자에게LC3 Assembly Square of N
.orig x3FF8
ld r1,n
ld r5,n
square
add r2,r1,#0
add r5,r5,#-1
add r0,r2,#0
brzp square
brn theend
theend
halt
n .fill #2
.end
내 마지막 코드 덕분에 감사합니다 아래에있는 내 코드는 다음과 같습니다
.orig x3FF8
ld r1,n
ld r5,n
square
add r2, r2,r1
add r5,r5,#-1
brp square
theend
halt
n .fill #4
.end
1. 오, 내가 r2에 합계의 합계가 될거라고 생각했는데,이게 너무 분명해 졌어. 내가 2 번째 기록을 덮어 쓰고 있었다고 짐작 해. – rahulchawla
질문 - 결국 나는 라인 추가 r0, r2, r0에 sumofsums를 저장하는 # 0, 그러나 이것은 7fff를 제공합니다. r2에 25가있는 경우 r0을 25로 대체하면 안됩니다. – rahulchawla
@rahulchawla : 'add r5, r5, # - 1' 루프 카운터 뒤에'add '하겠습니까? (원래 @ 브랜든이 목격 한). 루프 밖에서 해당 명령을 이동하면 문제가 해결됩니다. 디버거를 사용하여 코드를 단일 단계로 처리하고 레지스터를 변경합니다 (예 : 2 또는 3과 같은 작은 입력). –