LC3 SUBROUTINE, изменить параметры приемлемых значений - PullRequest
0 голосов
/ 01 марта 2020

В настоящее время принимаются значения [-32768,32767]. Я хочу изменить его на [0,15] (это код из предыдущего назначения, я хочу знать, как изменить параметры для этой подпрограммы. Я уже отправил свое текущее назначение, я только спрашиваю, чтобы я понял, как в будущем)

ST R7, b_R7_GET_MACHINE_NUM

START_OVER
BACK_TO_BEGINNING
AND R2, R2, #0 
AND R6, R6, #0 

LEA R0, prompt 
PUTS 

GETC 
OUT 
LD R1, NEGATIVE_43
ADD R3, R0, R1 
BRz SKIP_NEG_SIGN
LD R1, NEGATIVE_45
ADD R3, R0, R1
BRz NEG_SIGN
BR NEITHER_PLUS_NOR_NEG

NEG_SIGN 
LD R6, NEGATIVE_1  

SKIP_NEG_SIGN 
LD R4, INPUT_COUNTER1 
BR PLUS_OR_NEG
NEITHER_PLUS_NOR_NEG

LD R1, NEGATIVE_48 
ADD R3, R0, R1 
BRn GO_TO_ERROR_MESSAGE1 

LD R1, NEGATIVE_57 
ADD R3, R0, R1 
BRp GO_TO_ERROR_MESSAGE2

LD R1, NEGATIVE_48 
ADD R2, R0, R1 
LD R4, INPUT_COUNTER2

PLUS_OR_NEG

LOOP6 
    GETC 
    OUT 

    ADD R3, R0, #-10 
    BRz ENTER_HAS_BEEN_INPUT 

    LD R1, NEGATIVE_48
    ADD R3, R0, R1 
    BRn GO_TO_ERROR_MESSAGE3

    LD R1, NEGATIVE_57
    ADD R3, R0, R1 
    BRp GO_TO_ERROR_MESSAGE4

    BR SKIP_ENTER 

    ENTER_HAS_BEEN_INPUT
    ADD R3, R4, #-5 
    BRz GO_TO_ERROR_MESSAGE5
    ADD R3, R4, #-4 
    BRnz END_PROGRAM1 

    SKIP_ENTER

    LD R1, NEGATIVE_48
    ADD R0, R0, R1 
    LD R5, MULT_COUNTER 
    ADD R3, R2, #0 
    MULT_LOOP
        ADD R2, R2, R3
        ADD R5, R5, #-1 
    BRp MULT_LOOP
    ADD R2, R2, R0 

    ADD R4, R4, #-1 
BRp LOOP6 

BR END_PROGRAM2

GO_TO_ERROR_MESSAGE1
GO_TO_ERROR_MESSAGE2
GO_TO_ERROR_MESSAGE3
GO_TO_ERROR_MESSAGE4
GO_TO_ERROR_MESSAGE5

LD R0, NEWLINE 
OUT 
LEA R0, Error_msg_2
PUTS 

BR BACK_TO_BEGINNING

END_PROGRAM1
END_PROGRAM2

ADD R6, R6, #0 
BRn CHANGE_TO_NEG 
BR SKIP_CHANGE_TO_NEG
CHANGE_TO_NEG
NOT R2, R2
ADD R2, R2, #1
SKIP_CHANGE_TO_NEG

;LD R0, NEWLINE
;OUT 


AND R1, R1, #0 
ADD R1, R1, R2 

ADD R2, R1, #-15 
BRp ERROR_TOO_LARGE 
ADD R1, R1, #0 
BRn ERROR_NEGATIVE 
BR END_SUB

ERROR_TOO_LARGE
ERROR_NEGATIVE
LEA R0, Error_msg_2
PUTS 
BR START_OVER 

END_SUB 

LD R7, b_R7_GET_MACHINE_NUM

RET 

; ------------------------- -------; Данные для подпрограммы Получить ввод; -------------------------------- подсказка .STRINGZ " Укажите, на каком компьютере вы хотите получить статус (0 - 15), после чего нажмите ENTER: «Error_msg_2 .STRINGZ» ОШИБКА НЕПРАВИЛЬНОГО ВХОДА \ n "

b_R7_GET_MACHINE_NUM .BLKW # 1

NEGATIVE_43 .FILL # -43 NEGATIVE_45 .FILL # -45 NEGATIVE_1 .FILL # -1 NEGATIVE_48 .FILL # -48 NEGATIVE_57 .FILL # -57

INPUT_COUNTER1 .FILL # 5 INPUT_COUNTER2 .FILL # 4 MULT_COUNTER .FILL # 9

NEWLINE .FILL x0A

...