【发布时间】:2019-09-23 05:21:05
【问题描述】:
我的计算机体系结构课上有一个作业,基本上是用 ASM(32 位)编写代码,从给定字符串中删除特定字符并给我新的长度(不包括 '/0')
- 示例:“你好\n\0”
- 要删除的字符:'l'
- 结果:“Heo\n\0”
- 长度:4
我可以从字符串中删除任何字符,但是,作为测试程序是否可以在任何情况下运行的测试,我有一个条件来检查要删除的字符是否为 /0,并且每次我这样做时比较失败,因为它将“/ 0”转换为“0”。 我在网上读到,当你写 '/' 时,它等于写 (char),它返回 in char 形式。
- 示例:(char)1 = '1'
有什么方法可以比较字符'/0'而不进行转换?我也无法更改数据部分,因为它是作业规则的一部分,只能在 '' 和 "" 之间更改。
下面我展示我的代码
我的变量被称为 remove 并且它是这样声明的:
- 删除:.byte '/0'
然后我会这样做:
mov remove, %cl
cmp $0, %cl
jz goToEnd
如果零标志设置为 0,那么我将结束我的函数,但绝不会出现这种情况,因为 %cl 接收到对应于 '0' 的十进制 48 值。
【问题讨论】:
标签: assembly char type-conversion integer