汇编语言-根据字符大小写显示整数
Assembly Language - Display Integer based on cases of characters
这么快的问题。我有一个程序可以接受来自用户的两个字符(字母)——我所要做的就是输出一个表示这两个字母大小写比较的整数。 0-3 是可能的输出,下面是示例。
- 如果用户输入两个大写字母(即'A' 'B')——输出应该是0.
- 如果用户输入第一个大写字母和下一个小写字母(即 'A' 'b')- 输出应该是 1.
- 如果用户输入第一个小写字母和下一个大写字母(即 'a' 'B')- 输出应该是 2.
- 如果用户输入两个小写字母(即'a' 'b')——输出应该是3.
我不得不只使用位操作来做到这一点(所以我猜 and, or, nor, etc.
,并且代码少于 8 行。我猜我必须在第 6 位之间进行某种比较字符的数量(因为那是确定字符大小写的字符)-但是我不知道如何中继该逻辑以输出正确的整数。
如果我们将 R1
设置为第一个字符的第 6 位的值,并将 R2
设置为第二个字符的第 6 位的值,那么您可以使用 R1
*2+R2
。您可以使用移位运算符将第 6 位移动到您想要的任何位置。
我喜欢这个问题!
这个问题具有 class 作业的所有迹象,因此基于此,我不会提供完整的答案,但会提供代码片段以使原始提问者能够开发他们的自己理解并解决问题。
# Assuming [=10=] contains character 1, and contains character 2
# Then this will get the case of the two letters into and
# doing a logical AND on bit 5
andi ,[=10=],0x20
andi ,,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 ,,0x05
srl ,,0x04
和
# Combine the results into register 6
# with bit 1 from 1st letter and bit 2 from the second letter.
and ,,
现在,您需要做的就是确定两个位是否相同,如果是,那么您不需要两个位。你有你的答案。
现在我已经在汇编程序中展示了一些示例,您应该能够自己进行比较和条件跳转位。
这么快的问题。我有一个程序可以接受来自用户的两个字符(字母)——我所要做的就是输出一个表示这两个字母大小写比较的整数。 0-3 是可能的输出,下面是示例。
- 如果用户输入两个大写字母(即'A' 'B')——输出应该是0.
- 如果用户输入第一个大写字母和下一个小写字母(即 'A' 'b')- 输出应该是 1.
- 如果用户输入第一个小写字母和下一个大写字母(即 'a' 'B')- 输出应该是 2.
- 如果用户输入两个小写字母(即'a' 'b')——输出应该是3.
我不得不只使用位操作来做到这一点(所以我猜 and, or, nor, etc.
,并且代码少于 8 行。我猜我必须在第 6 位之间进行某种比较字符的数量(因为那是确定字符大小写的字符)-但是我不知道如何中继该逻辑以输出正确的整数。
如果我们将 R1
设置为第一个字符的第 6 位的值,并将 R2
设置为第二个字符的第 6 位的值,那么您可以使用 R1
*2+R2
。您可以使用移位运算符将第 6 位移动到您想要的任何位置。
我喜欢这个问题!
这个问题具有 class 作业的所有迹象,因此基于此,我不会提供完整的答案,但会提供代码片段以使原始提问者能够开发他们的自己理解并解决问题。
# Assuming [=10=] contains character 1, and contains character 2
# Then this will get the case of the two letters into and
# doing a logical AND on bit 5
andi ,[=10=],0x20
andi ,,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 ,,0x05
srl ,,0x04
和
# Combine the results into register 6
# with bit 1 from 1st letter and bit 2 from the second letter.
and ,,
现在,您需要做的就是确定两个位是否相同,如果是,那么您不需要两个位。你有你的答案。
现在我已经在汇编程序中展示了一些示例,您应该能够自己进行比较和条件跳转位。