Lc3:如何比较两个值



我正在尝试编写一个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

我的建议是通过某种掩码运行这两个数字。假设您有:保存者 1: 10001010
保存者2:01110010

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

相关内容

  • 没有找到相关文章

最新更新