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

如何通过中断将20字节汇编Hello World程序压缩至20字节以内

小于20字节的Hello World COM程序压缩实现

原代码编译后恰好为20字节,利用软中断调用的硬件特性结合DOS加载COM程序的默认上下文状态,可以将体积压缩到19字节甚至更小,具体实现方法如下:

  • 核心中断相关原理:x86架构执行软中断指令时,CPU会自动将中断返回地址、段寄存器、标志寄存器压入栈中;同时DOS提供的INT 21h系统服务只要求AH寄存器为对应功能号,不需要完整初始化AX全部位,存在可复用的默认状态空间。
  • 具体优化步骤:
    • 第一步省出1字节:把原代码中2字节的MOV AH,9替换为1字节的XCHG AX,BP。MS-DOS 2.0及以上版本加载COM程序时,BP寄存器的高8位默认固定为0x09,执行交换指令后AH的值恰好为0x09,完全满足INT 21h9号打印字符串功能的功能号要求。
    • 可选进阶压缩(再省2字节):调整代码顺序将字符串直接放在INT 21h指令之后,利用INT 21h执行时自动压入栈的返回地址(就是字符串首地址),用1字节的POP DX替换原来3字节的MOV DX,108,最终可压缩到17字节。
  • 19字节兼容版本对应汇编代码(可直接用DEBUG编译):
A
XCHG AX,BP
MOV DX,107
INT 21
RET
DB 'HELLO WORLD$'

R CX
13
N MYHELLO.COM
W

该版本总长度19字节,比原版本小1字节,可在所有主流DOS兼容环境下正常运行,输出完整的HELLO WORLD字符串后正常退回命令行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:18:16