【问题标题】:Lc3: How do I compare two values?Lc3:我如何比较两个值?
【发布时间】:2025-12-30 21:15:10
【问题描述】:

我正在尝试编写一个 lc3 汇编语言问题,但我非常卡住。程序必须取两位数并输出哪个数字更大。我需要使用子程序来完成此操作。 现在,我将第一个数字放在 r1 中,第二个数字放在 r3 中,我必须将输出放在 r0 中。我真的很困惑我应该如何比较这两个值,任何建议都将不胜感激!

.ORIG X3000

;********************MAIN***********************
LEA R0, IN_STR               ;DISPLAYS STRING
PUTS  
GETC                         ;INPUT NUM1
OUT
ADD R1,R0,X0                 ;PUTS NUM1 IN R1
GETC                         ;INPUT NUM2
OUT
ADD R2,R0,X0                 ;STORE NUM2 IN R2
ADD R3,R2,R1
JSR LARGER
OUT
HALT
;*****DATA*****
IN_STR .STRINGZ "ENTER TWO SINGLE DIGIT INTEGERS: "
;*****SUBROUTINE*****
LARGER ST R1,SAVER1         ;SAVE R1
       ST R2,SAVER2         ;SAVE R2
       AND R0,R0,#0         ;CLEAR R0

;********DATA*********
SAVE R1 .BLKW 1
SAVE R2 .BLKW 1
.END

【问题讨论】:

    标签: int compare lc3


    【解决方案1】:

    我的建议是通过某种掩码运行这两个数字。假设你有: SAVER1:10001010
    SAVER2:01110010

    如果你和他们都反对像 10000000 这样的东西,它会告诉你 SAVER1 在最高有效位中有一个,而 SAVER2 没有。您可以根据需要对掩码进行位移,直到找到最重要的位。如果它们都具有相同的第一个有效位,它会变得有点复杂,但无论如何这是一个开始的地方。

    【讨论】: