求助:编写x8086汇编程序比较两数并按要求存储结果
x8086汇编实现两数比较并按要求存储到AL/BL寄存器
核心思路
- 初始化两个待比较的数(可使用立即数或内存变量)
- 用
CMP指令比较两数,通过标志位判断大小 - 根据比较结果,用条件跳转+交换指令确保AL存较小值,BL存较大值
完整代码(EMU8086兼容)
ORG 100h ; 初始化两个待比较的数(示例值,可自行修改) MOV AL, 25h ; 第一个数 MOV BL, 1Ah ; 第二个数 ; 比较AL与BL的大小 CMP AL, BL JAE SWAP_VAL ; 无符号数:若AL >= BL,跳转至交换逻辑 ; 若是有符号数比较,替换为 JGE SWAP_VAL ; AL已为较小值,直接结束 JMP END_PROG SWAP_VAL: XCHG AL, BL ; 交换AL和BL,确保AL存小值、BL存大值 END_PROG: HLT ; 暂停程序,方便查看寄存器结果
代码说明
ORG 100h:指定程序起始地址,适配EMU8086的COM程序格式CMP AL, BL:执行比较操作,通过标志寄存器的CF、ZF位反映两数大小关系JAE/JGE:条件跳转指令,JAE用于无符号数比较,JGE用于有符号数比较XCHG AL, BL:高效交换两个寄存器的值,无需额外临时寄存器HLT:暂停CPU,运行后可在EMU8086的「Registers」窗口查看AL、BL的最终值
测试方法
- 打开EMU8086,将上述代码粘贴到编辑器
- 点击「Compile」编译代码,确认无错误
- 点击「Run」运行程序,打开「Registers」面板查看结果
- 修改
MOV AL, xxh和MOV BL, xxh中的立即数,测试不同大小组合的情况
内容的提问来源于stack exchange,提问作者Derek Winyard
相关产品推荐
相关产品推荐

