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

HLA程序修改需求:实现任意两输入值相同时返回true

修改后的HLA程序(任意两输入值相同则返回true)

核心修改说明

原程序仅在三个值完全相同时返回true,现在调整hasDuplicates过程的比较逻辑,只要x与y相等、x与z相等或y与z相等任意一个条件满足,就返回1;否则返回0。

修改后的完整代码

program Same;
#include("stdlib.hhf");

procedure hasDuplicates(x: int16; y: int16; z: int16); @nodisplay; @noframe;  
begin hasDuplicates;
    pop(EDX);          // 保存返回地址到EDX
    pop(z);
    pop(y);
    pop(x);
    push(EDX);         // 把返回地址重新压栈

    // 检查x和y是否相等
    mov(x, BX);
    cmp(y, BX);
    je ReturnOne;      // 相等则跳转到返回1的逻辑

    // 检查x和z是否相等
    mov(x, BX);
    cmp(z, BX);
    je ReturnOne;      // 相等则跳转到返回1的逻辑

    // 检查y和z是否相等
    mov(y, BX);
    cmp(z, BX);
    je ReturnOne;      // 相等则跳转到返回1的逻辑

    // 所有数值对都不相等,返回0
    mov(0, AL);
    jmp ExitSequence;

ReturnOne:
    mov(1, AL);

ExitSequence:
    ret();
end hasDuplicates;

begin Same;
  
    stdout.put("输入X: ");
    stdin.geti16();
    push(AX);
    stdout.put("输入Y: ");
    stdin.geti16();
    push(AX);
    stdout.put("输入Z: ");
    stdin.geti16();
    push(AX);
    call hasDuplicates;
    cmp(AL, 1);
    jne NumbersAreDifferent;
    stdout.put("存在重复值. AL = 1");
    jmp EndProgram;
NumbersAreDifferent:
    stdout.put("无重复值. AL = 0");
EndProgram:
end Same;

关键逻辑调整点

  • 比较逻辑重构:依次检查三对数值的相等性,只要任意一对匹配就立即返回1,避免冗余比较
  • 分支结构优化:新增ReturnOne标签统一处理返回true的分支,逻辑更直观
  • 交互提示优化:将原输出提示改为更贴合需求的中文表述,语义更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:14:56