문제

누군가이 프로그램을 도와 줄 수 있습니까? x4000에서 시작하는 숫자에 14를 추가하고 x5000에서 시작하는 새로운 숫자를 저장해야합니다. 방금 LC-3을 사용하기 시작했지만 아직 코딩하는 법을 배웠습니다. 이 코드에는 3 가지 오류 만 있지만 무엇을 수정 해야하는지 잘 모르겠습니다.

                               ;Program to copy an array of data from one block of memory to another .
                               ;Add decimal 14 to the value of each word before storing in the destination array.
                               ;Keep copying until the program reaches a zero value in the source array.

        .ORIG    x3000         ;Program starts at address hex 3000
        LEA      R0, SRC       ;Load address of SRC into Register 0
        LD       R1, DEST      ;Load contents of memory address DEST into Register 1
LOOP    LDR      R2, R0, #0    ;Load contents of memory location whose address is in R0 into R2
        BRZ      SRC           ;If last operation was zero, branch to end
        ADD      R2, R2, #14   ;Add decimal 14 to value in R2
        STR      R2, R1, #0    ;Store contents of R2 into memory whose address is in R1
        ADD      R0, R0, #1    ;Add 1 to R0
        ADD      R1, R1, #1    ;Add 1 to R1
        BRN      LOOP          ;If last operation was negative, branch to LOOP
DONE    TRAP     x25           ;Trap to HALT the program.
SRC     .FILL    x4000         ;Address of start of source data array
DEST    .FILL    x5000         ;Address of start of destination array.
        .END
도움이 되었습니까?

해결책

                               ;Program to copy an array of data from one block of memory to another .
                               ;Add decimal 14 to the value of each word before storing in the destination array.
                               ;Keep copying until the program reaches a zero value in the source array.

        .ORIG    x3000         ;Program starts at address hex 3000
        LD      R0, SRC        ;(Changed) from LEA to LD Load address of SRC into Register 0
        LD       R1, DEST      ;Load contents of memory address DEST into Register 1
LOOP    LDR      R2, R0, #0    ;Load contents of memory location whose address is in R0 into R2
        BRZ      DONE          ;(Changed) from SRC to DONE If last operation was zero, branch to end
        ADD      R2, R2, #14   ;Add decimal 14 to value in R2
        STR      R2, R1, #0    ;Store contents of R2 into memory whose address is in R1
        ADD      R0, R0, #1    ;Add 1 to R0
        ADD      R1, R1, #1    ;Add 1 to R1
        BR       LOOP          ;(Changed) from BRN to BR regardless of the condition it branches to LOOP
DONE    TRAP     x25           ;Trap to HALT the program.
SRC     .FILL    x4000         ;Address of start of source data array
DEST    .FILL    x5000         ;Address of start of destination array.
        .END
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top