我正在尝试编写一个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 没有。您可以根据需要位移位遮罩,直到找到最重要的位。如果它们都有相同的第一个有效位,它会变得更加复杂,但无论如何这是一个开始的地方。