这么快的问题。我有一个程序接受来自用户的两个字符(字母) - 我所要做的就是输出一个整数来表示这两个字母的大小写的比较。 0-3是可能的输出,以下是示例。
我不得不仅使用位操作来做这个(所以我猜and, or, nor, etc.
,并且在不到8行代码中。我猜测我必须在第6位之间进行某种比较字符(因为那是决定字符大小写的那个) - 但我不知道如何中继该逻辑以输出正确的整数。
答案 0 :(得分:1)
如果我们将R1
设置为第一个字符的第6位的值,并将R2
设置为第二个字符的第6位的值,那么您可以使用{{1来计算输出}} * 2 + R1
。您可以将第6位移动到您希望使用移位运算符的任何位置。
我喜欢这个问题!
答案 1 :(得分:1)
这个问题具有作为课堂作业的所有迹象,因此基于此,我不打算提供完整的答案,而是提供代码片段以使原始提问者能够发展他们的理解并自己解决问题
# Assuming $0 contains character 1, and $1 contains character 2
# Then this will get the case of the two letters into $2 and $3
# doing a logical AND on bit 5
andi $2,$0,0x20
andi $3,$1,0x20
和
# To move the bits to the right place for the answer
# The key here is to realise that the first letter needs to be at
# bit0 and the second letter needs to be at bit1
srl $4,$2,0x05
srl $5,$3,0x04
和
# Combine the results into register 6
# with bit 1 from 1st letter and bit 2 from the second letter.
and $6,$4,$5
现在,您需要做的就是确定两个位是否相同,如果是,那么您不需要两个位。你有答案。
现在我已经在汇编程序中展示了一些示例,您应该能够自己进行比较和条件跳转位。