我正在尝试确定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
答案 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
但是,这个问题的重点是停止打印所有内容。希望以后能对某人有所帮助!