MIPS有条件打印所有情况

时间:2018-10-01 19:07:51

标签: conditional mips

我正在尝试确定3个数字中的最低数字。

我正在使用slt一次比较两个数字。

我正在使用beq和bne,并将它们与$ zero比较(因为slt的结果为0或1,并且寄存器$ zero保持常数0)。通过使用beq和bne,我试图跳转到特定标签,该标签最终将打印三个标签中的最低标签。

我对所有标签消息都被打印感到困惑。下面是我的代码。有人可以帮我确定为什么所有案件都在打印吗?

Sub test()
    ' Create the outlook object
    Dim olApp As Object
    Set olApp = CreateObject("Outlook.Application")

    Dim olInspector As Object
    Dim olOutMail As Object
    Set olInspector = olApp.ActiveInspector
    Set olOutMail = olInspector.CurrentItem

    Dim str As String
    str = olOutMail.Body

    ' Replacements
    str = Replace(str, "DIPOC", dipoc)
    str = Replace(str, "REFNUM", RefNum)
    str = Replace(str, "RCVDATE", rcvdate)

    olOutMail.Body = str

    ' Remove the outlook objects
    Set olInspector = Nothing
    Set olOutMail = Nothing
    Set olApp = Nothing
End Sub

1 个答案:

答案 0 :(得分:0)

我知道了!之所以要打印所有情况,是因为我的语法不正确!我翻译了我的条件错误。

如果您注意到,我的所有3条印刷声明都紧随其后。我最初以这种方式格式化它们,因为我认为在比较中找到较小的数字后,程序控件将切换到正确的打印语句。但这不是那样的。汇编器看到的全部是三个连续的打印语句,因此它会打印这些语句。

如果我只希望出现一个打印语句,则必须进行某种程序更改,该更改将跳转或跳转到不同的代码,或者退出程序。每个打印语句都必须以这样的结尾:

none

此后,我已经更改了条件逻辑,因此我不能100%确定上面问题中列出的是正确的逻辑。这是我现在的逻辑:

# print $s0 as lowest 
print_lowest_s0:
li  $v0, 1
la  $a0, ($s0)               # loads low number from comparison from $s0
syscall                      # prints low number
j   hi_int_message           # changes program control to another label

但是,这个问题的重点是停止打印所有内容。希望以后能对某人有所帮助!