gpt4 book ai didi

assembly - assembly 中的双重条件检查

转载 作者:行者123 更新时间:2023-12-02 08:00:22 28 4
gpt4 key购买 nike

我正在开始组装,我正在使用 nasm 来组装代码,我正在尝试处理驻留在内存中的字符串并更改它,我想检查一个字节是否在某个范围内(ascii),这样我就可以决定如何处理它,我似乎不知道如何检查一个值是否在某个范围内,我知道所有关于不同类型的跳转标志,但我如何组合 2 个 cmp 语句?

我的问题是:我如何在汇编中生成与此类似的东西?

if (x>=20 && x<=100)
do something

非常感谢!

最佳答案

有一种方法可以仅使用单个条件跳转来表达这样的范围检查:

     sub  eax,  20
cmp eax, 80
ja END
// do something
END: ret

这是处理整数范围时非常常见的优化技巧。初始减法将范围 [20,100] 映射到 [0,80];然后通过一次无符号比较来检查该范围内的成员资格。

另请注意,可以在 C: 中完成相同的操作

unsigned int upperBound = 100;
unsigned int lowerBound = 20;
if (yourValue - lowerBound <= upperBound - lowerBound) {
// do something
}

关于assembly - assembly 中的双重条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com