簡體   English   中英

儲存LC-3問題

[英]Storing in LC-3 issues

因此,我正在使用LC-3匯編語言進行作業,但遇到了問題。 因此,該程序設計為使用子例程GETDEC從鍵盤接收一些輸入作為字符串,然后解釋輸入字符串以構造整數值。 我想我快要完成任務了,但是我似乎陷入了困境。 我們打算使用8個單詞的塊作為輸入緩沖區,而我的問題是,我似乎無法讓我的程序將輸入字符串值保存在該塊中,這又又使我無法下車我主要方法中的循環。

這是主要方法

    LEA     R1, DATA
INPUT
LD  R0, NEWLN
TRAP    x21
LEA R0, PROMPT
TRAP    x22

JSR GETDEC
STR R0, R1, #0
ADD R1, R1, #1
ADD R0, R0, #0
BRNP    INPUT

LD  R0, NEWLN
TRAP    x21
LEA R1, DATA

OUTPUT

LDR R0, R1, #0
JSR PUTDEC
LD  R0, NEWLN
TRAP    x21
ADD R1, R1, #1
LDR R0, R1, #-1
BRNP    OUTPUT

TRAP    x25
  NEWLN .FILL   x000A
  PROMPT    .STRINGZ "Enter an integer, 0 to quit> "
  DATA  .BLKW   10

這是我的GETSTR子例程,該子例程將輸入作為字符串值獲取

    GETSTR

ST  R7, GET_7
ST  R1, S1
ST  R2, S2
ST  R3, S3


ADD R1, R0, 0
TRAP    x20     ;User input
TRAP    x21     ;echoes input
STR R0,R1,0
AND R3,R3,0     ;clears R3
ADD R2, R0, 0   ;R2 <- R0
ADD R1, R1, #1  ;R3 <- R3+1 
LD  R3, PRZ     ;R1 <- xF6 (-10)
ADD R2,R3,R2    ;R2 <- R1 + R2
BRnp    -9      ;Branches back to User Input unless last flag is Zero

LD  R1, S1
LD  R2, S2
LD  R3, S3
LD  R7, GET_7

    RET

 GET_7  .BLKW   1
 PRZ    .FILL   xFFF6
 S1         .BLKW   1
 S2         .BLKW   1
 S3         .BLKW   1

這是我的GETDEC子例程,該子例程接受輸入字符串並將其解釋為相應的整數值。

    GETDEC  ;Input a signed integer to R0

ST  R7, GET7
ST  R1, GET1
ST  R2, GET2

LEA R0, JIMB    ;Input a character string
JSR GETSTR
LD  R2, JIMB
AND R0, R0, 0

    HERE    ADD R0, R0, R0  ; multiply by 10
ADD R1, R0, R0
ADD R1, R1, R1
ADD R0, R0, R1
ADD R0, R0, R2  ; R0 <- R0 + X
ADD R2, R2, 1   ; Increments R2
LD  R3, WORK
ADD R3, R2, R3
BRnp    HERE        ;Loop if R2 = 0

LD  R1, GET1
LD  R2, GET2
LD  R7, GET7
RET

    GET1    .BLKW   1
    GET7    .BLKW   1
    GET2    .BLKW   1
    JIMB    .BLKW   8
    WORK    .FILL   xFFD0

重申一下,main方法會循環GETDEC直到在輸入中輸入0為止,但是我的代碼中的某些內容阻止了我在輸入0時退出循環。 我想我可能在GETDEC子例程中使用了錯誤的Load方法,但是我不確定,如果有人可以提供幫助,將不勝感激。

我認為存儲可以,您的問題在這里(在GETDEC中):

JSR GETSTR
LD  R2, JIMB <=

您從此處的緩沖區而不是緩沖區地址中加載數據。 您可能需要LEA。

然后在這里:

ADD R0, R0, R2  ; R0 <- R0 + X
ADD R2, R2, 1   ; Increments R2

第一行將R2視為數據,第二行視為指向數據的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM