开发者生态
morning
醒醒吧! 16b
摘要
16b Released at the Outline Demoparty in May 2026, Ommen, NL An exploration of algorithmic density in 16 bytes of x86 assembly。Watch Video Demozoo Entry Hey everyone。
the
bytes
and
you
with
2026-05-24
1 阅读
约6分钟阅读
MaximilianEmel
字号:
醒醒吧! 16b 于 2026 年 5 月在荷兰奥门举行的 Outline Demoparty 上发布,探索 16 字节 x86 程序集的算法密度。观看视频 Demozoo 条目 大家好。 30 多年前,我小时候在一台配有单色绿色显示器的旧 IBM PC 上学习编程,并且一直想为该系统创建一个程序。在过去 15 年里,我创作了 100 多个小介绍。最近我不太活跃,但 Plex 的精彩“Rainbow Surf”只有 16 个字节,激励我再次挖掘一些旧的布满灰尘的草图并开始工作。这个程序的创建是通过通常的修改进行的。我正在研究图形和声音的元胞自动机,并发现了尺寸编码技巧。实际上:a) 多态asm指令,例如add [bx+si],al,即0x0000 b) 跳转到指令中间以节省字节并重用操作码。在数百个小实验中,这个实验仅凭它的声音就脱颖而出。当我展开剩下的部分并删除“其余部分”时,我很难理解到底发生了什么。我摸不着头脑,看着打了很多字节之后剩下的简单公式。我自己也没想到仅仅这几个字节的解释就会如此深入 xD。我 2014 年的原创“M8trix”已经在屏幕上涂抹了伪随机字母(8 个字节,然后是 7 个字节),我一直想知道如何让它“听起来不错”。但按时间顺序,在《唤醒》的发展中,声音是第一位的。既然你“看到你听到的”,那并不重要,但是“16个字节将谢尔宾斯基声音变成矩阵雨”将是一个很好的副标题 =) TLDR:每个时间步,另一条谢尔宾斯基三角形线 a) 在扬声器上播放 b) 以 56 的步长绘制到屏幕上。你可以感觉到运动,但不能真正看到它,因为它有 8192 个“像素宽”,但一行字符只有 80 个字节。在更大的屏幕上,您可以看到三角形。或者,如果您不“跳过像素”并立即绘制所有内容,您也会看到它。所以,这里是 x86 实模式 DOS 汇编的 16 字节。当你运行它时,它使用视频内存作为计算空间来绘制无限的谢尔宾斯基分形,同时用该几何体敲击扬声器。整数 10 小时; 2 字节 mov bh, 0xb8 ; 2 字节 mov ds, bx ; 2字节L:lodsb; 1 字节子 si,字节 57 ; 3 字节 xor [si], al ; 61h,al 输出 2 个字节; 2 字节 jmp 短 L ; 2 个字节 1. 画布:Primed Void 代码以标准 BIOS 中断开始: int 10h 。这将设置视频模式 0,给出 40x25 文本模式网格。然后数据段( ds )指向 0xb800 ,即 VGA/CGA 文本缓冲区的内存地址。当 BIOS 清除屏幕时,它不会用绝对零填充内存。每个字符空间都是两个字节:ASCII 字符和颜色属性。所有 2,000 个插槽均设置为 0x20(空格)和 0x07(黑底浅灰)。所以屏幕看起来是空的,但内存中已经填满了统一的图案。我创作了很多“噪音”或“CA”声音介绍,但这个脱颖而出。无论过去还是现在都超级出乎意料!这里的具体细节是如何在“清晰的屏幕”上初始化内存以及实际可见内存“之前”和“之后”的内容。 “纯粹”的声音也很可爱(我可以用更多的字节仔细设置所有内容,使其在所有系统上听起来都一样),但我仍然必须完全理解这种辛辣的差异,使它听起来更好,恕我直言=)2.引擎:附加前缀和交织在一起,联觉远远超出了我迄今为止在其他小介绍中发现的。我什至可以说,与在没有 RNG 的情况下使用迭代函数系统进行“混沌游戏”相比,它揭示了更多的数学秘密和关系。不管怎样,这一次我希望你能从根本上理解你所听到的数学原理。不仅仅是“你在这里做了一些操作,然后听起来很有趣”。要将其简化为纯数学:假设归零状态而不是 0x20 ,使用 add 而不是 xor ,并一次前进 16 个字节。假设累加器 al 从 2 开始。一个 DOS 段正好是 65,536 字节。每步移动 16 个字节意味着遍历该段正好需要 4,096 步 (\( 65536 / 16 = 4096 \))。然后 si 干净地换回 0x0000 。将单元格之间的值相加会产生部分和。由于 4,096 是 256(8 位寄存器大小)的倍数,因此当段回绕时,进位会完美对齐,从而在每次扫描开始时将 al 完全重置为 2。该值遵循二项式序列,按 2 缩放: $$A^{(p)}[k] \equiv 2 \binom{k+p}{p-1} \pmod{256}$$ 以下是前 16 个步骤逐行累加的方式: Pass \ Cell 3. 结晶:异或和谢尔宾斯基移位 现在,回到组合学。根据特殊定律,当对 2 求模时,就会出现谢尔宾斯基三角形。这个特定的位是被撞击到扬声器中的,而其他位被忽略。为了分离位平面,位的无进位加法是 XOR,这一事实就是它存在而不是 add 的原因。由于代码
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱