如何在MASM中实现多区间条件判断?排除指定范围的负数校验
MASM代码修改:校验负整数是否属于指定区间
原代码仅能判断输入是否在[-200, -1]范围内,无法排除-51至-99的无效数值。要实现输入仅在[-200, -100]或[-50, -1]区间时才累加,需在原有判断逻辑基础上,增加对中间无效区间的检查。
修改后的代码实现
UPPER = -100 LOWER = -200 UPPER2 = -1 LOWER2 = -50 getData: mov eax, numCount add eax, 1 mov numCount, eax mov edx, OFFSET thirdNumPrompt call WriteString call ReadInt mov userNum, eax ; 第一步:过滤超出[-200, -1]的数值 cmp eax, LOWER jl numAddition cmp eax, UPPER2 jg numAddition ; 第二步:检查是否落在无效区间(-100, -50) cmp eax, UPPER jg checkLowerBound ; 进入此分支说明数值在[-200, -100],符合条件 add eax, total mov total, eax loop getData checkLowerBound: cmp eax, LOWER2 jl numAddition ; 进入此分支说明数值在[-50, -1],符合条件 add eax, total mov total, eax loop getData
逻辑说明
- 初步范围过滤:先判断输入是否小于
-200或大于-1,若是则直接跳转到numAddition。 - 无效区间排查:对落在
[-200, -1]内的数值,进一步判断是否大于-100:- 若不大于
-100,说明在[-200, -100]区间,执行累加; - 若大于
-100,再检查是否小于-50——若是则属于-51至-99的无效区间,跳转到numAddition;否则属于[-50, -1]区间,执行累加。
- 若不大于
内容的提问来源于stack exchange,提问作者Thai Le
相关产品推荐
相关产品推荐

