首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LC-3条件(本教程的新手)只是寻找指导或答案

LC-3条件(本教程的新手)只是寻找指导或答案
EN

Stack Overflow用户
提问于 2018-09-11 17:14:59
回答 2查看 245关注 0票数 1

我必须写一个程序,要求3个正数(小于10)。然后输出最大和最小的数字。我觉得我走进了死胡同,不知道下一步该做什么。任何帮助都将不胜感激。

代码语言:javascript
运行
复制
.ORIG x3000
LEA R0, MyNameID    ;Show name and ID
PUTS

LEA R0, EnterNum1   ;Print enter number 1
PUTS
GETC R1
OUT

LEA R0, EnterNum2   ;Print enter number 2
PUTS
GETC R2
OUT

LEA R0, EnterNum3   ;Print enter number 3
PUTS
GETC R3
OUT

halt     

MyNameID .STRINGZ "\nName, ID number: "
EnterNum1 .STRINGZ "\nPlease enter number 1:"
EnterNum2 .STRINGZ "\nPlease enter number 2:"
EnterNum3 .STRINGZ "\nPlease enter number 3:"
SmallestNum .STRINGZ "\nThe smallest number is:"
LargestNum .STRINGZ "\nThe largest number is:"
.end
EN

回答 2

Stack Overflow用户

发布于 2018-09-12 12:24:47

因此,您需要通过翻转这些位,然后添加1来求反其中一个寄存器。然后,如果您将该求反的值与寄存器中的另一个数字相加,则如果它们的值相等(在求反之前),则和将为零。或者,如果第二个数字更大,则和将为正。或者,如果第一个数字为负数,则和将为负数。使用BRz BRnand BRp分支跳转到适当的标签。然后,使用相同的加法过程将相同的负数与您的第三个数进行比较。这样,您就可以确定哪个值最大,哪个值最小。

票数 0
EN

Stack Overflow用户

发布于 2018-11-01 07:50:09

  1. 不是其中一个寄存器,让我们假设R1
  2. 然后将1加到R1(这实质上是使该寄存器为原始值的负值)
  3. 现在将该值添加到另外两个寄存器之一,假设R2
  4. BR该值以查看它是否为负a。如果它为负,则R1更大,因此对于零a,您的代码跳过步骤5-6

H19Br。如果它为零,则它们相等,因此对于正a,您的代码跳过步骤6 H210H111Br。如果其正R2更大,因此,让您的代码从这里继续,

  1. 现在只需对其他寄存器重复这些步骤,直到只有一个寄存器,然后输出它!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52272602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档