Как преобразовать калькулятор с одним ди git в калькулятор с четырьмя ди git в L C -3? - PullRequest
0 голосов
/ 21 апреля 2020

У меня проблема с созданием моего калькулятора, который у меня есть ниже, go от одного ввода / di git до четырех вычислений ввода / di git. Я не совсем понимаю, из-за чего мой профессор получил десятки л oop или что-то в этом роде и такой язык невозможно найти ответы для онлайн.

        .ORIG x3000

    ;initializes all registers to zero
                    AND R0, R0, #0
                    AND R1, R1, #0
                    AND R2, R2, #0
                    AND R3, R3, #0
                    AND R4, R4, #0
                    AND R5, R5, #0
                    AND R6, R6, #0
                    AND R7, R7, #0

    ;this block will ask for user input then display it to the monitor

        LEA    R0, PROMPT    ;Save the location of the prompt
    PUTS                 ;Print the prompt to the screen
    GETC                 ;Store the character into R0
    OUT
    LD  R6,MINUS30
    ADD R1,R0,R6    ;R1 contains first operand

    LEA R0, PROMPT
    PUTS
    GETC
    OUT
    ADD R2,R0,R6 ;R2 contains the second operand

OPERATOR
    LEA R0, PROMPT2
    PUTS
    GETC
    OUT

;Check for addition
    LD R3,ADDING
    ADD R3,R0,R3
    BRz ADDITION

;Check for subtraction
    LD R3, SUBTRACT
    ADD R3,R0,R3
    BRz SUBTRACTION

;Check for multiplication
    LD R3,MULTI
    ADD R3,R0,R3
    BRz MULTIPLICATION

;Check for division
    LD R3, DIVIDE
    ADD R3,R0,R3
    BRz DIVISION

;Invalid Operator
    LEA R0,INVALIDOP
    PUTS
    BRz OPERATOR

;Here are the operations
;R1 and R2 are operands, R5 hold the answer                     
    ADDITION        ADD R5, R1, R2
            BR DISPLAY

    SUBTRACTION     NOT R3, R2
            ADD R3, R3, #1
            ADD R5, R1, R3
            BR DISPLAY


    MULTIPLICATION 
    AND R3, R3, #0
MULTIPLY
    ADD R3, R1, R3
    ADD R2, R2, #-1
    BRp MULTIPLY
    ADD R5, R3, #0
    BR DISPLAY

    DIVISION
    AND R5, R5, #0
    NOT R3, R2
    ADD R3,R3, #1
DIV
    ADD R1, R1, R3
    BRn DTWO
    ADD R5,R5, #1
    BR DIV
DTWO
    BR DISPLAY  


;R0 contains the character to display
    DISPLAY 
    LEA R0, RESULT
    PUTS
    LD R4, PLUS30
    ADD R0, R5, R4
    OUT

    DONE                    HALT

    PLUS30      .FILL x30
    MINUS30     .FILL x-30
    MULTI           .FILL x-2A
    ADDING           .FILL x-2B
    SUBTRACT        .FILL x-2D
    DIVIDE          .FILL x-2F
    PROMPT    .STRINGZ  "\n Enter a number: "
    PROMPT2   .STRINGZ  "\n Enter the operator(+,-,*,/):"
    INVALIDOP .STRINGZ  "\n Invalid operation"
    RESULT    .STRINGZ  "\n The result of the operation is: "

    .END
...