You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

逻辑说明

  1. 初步范围过滤:先判断输入是否小于-200或大于-1,若是则直接跳转到numAddition。
  2. 无效区间排查:对落在[-200, -1]内的数值,进一步判断是否大于-100:
    • 若不大于-100,说明在[-200, -100]区间,执行累加;
    • 若大于-100,再检查是否小于-50——若是则属于-51至-99的无效区间,跳转到numAddition;否则属于[-50, -1]区间,执行累加。

内容的提问来源于stack exchange,提问作者Thai Le

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:06:09