RepositoryAssembly
susam

susam/hello

A 23-byte “hello, world” program assembled with DEBUG.EXE in MS-DOS

179stars
6forks
0issues
3views

Thành tựu nổi bật

Những danh hiệu mới nhất của dự án

1
TINIX TRENDING·Chủ đề: asm

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: ms-dos

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: dos

#1 Repository Của Tháng

🔤 "Hello, world" 23 byte trên MS-DOS — Nghệ thuật tối ưu Assembly

Chỉ 23 byte. Không framework. Không thư viện. Chỉ có CPU, DOS, và một đoạn mã tinh gọn.

Dự án susam/hello là một chương trình "hello, world" được viết bằng Assembly x86, chạy trên MS-DOS 6.22 và sử dụng trình gỡ lỗi DEBUG.EXE để dịch. Toàn bộ chương trình dài đúng 23 byte — một con số mà tác giả đã tính toán từng byte một. Chuỗi "hello, world" được in ra stdout nhờ ngắt DOS INT 21 với AH=09, và chương trình kết thúc bằng lệnh RET thay vì INT 20 để tiết kiệm đúng 1 byte.

Dự án không chỉ là một đoạn mã — nó đi kèm toàn bộ phiên DEBUG.EXE để tạo ra file HELLO.COM, file script HELLO.TXT để tái tạo, và lệnh printf trên Unix/Linux để sinh binary từ hex. Ngoài ra, README còn phân tích chi tiết sự khác biệt giữa INT 20 và RET khi kết thúc chương trình .COM, bao gồm cả hành vi của stack và trải nghiệm gỡ lỗi.

✨ Điểm nổi bật

  • 23 byte chính xác: Mỗi byte đều có mục đích — không lãng phí một single byte nào trong mã máy.
  • RET thay INT 20: Tiết kiệm 1 byte bằng cách lợi dụng stack initialization của .COM (SP=FFFE, nội dung 0000 tại FFFE-FFFF), khiến RET nhảy đến INT 20 tại offset 0.
  • Nhiều cách tạo binary: Có thể tạo qua phiên DEBUG.EXE tương tác, qua DEBUG < HELLO.TXT, hoặc qua printf | xxd -r -p trên Unix/Linux.
  • INT 21 AH=09: Dịch vụ DOS chuẩn để in chuỗi kết thúc bằng $ — đơn giản, trực tiếp, không cần hệ thống phụ.
  • Phân tích chi tiết RET vs INT 20: README giải thích rõ tại sao RET không thể chạy lặp trong debugger (stack không được reset), và cách workaround bằng E FFFE 0 0.
  • Có boot sector version: Thư mục ALT chứa các ví dụ không phụ thuộc DOS service, bao gồm cả boot sector in "hello, world" khi khởi động máy.
  • MIT License: Hoàn toàn tự do sử dụng, sửa đổi, phân phối.

💡 Vì sao đáng chú ý

Đây là một trong những bài tập tối ưu kích thước điển hình nhất trong thế giới Assembly. Việc dùng RET thay INT 20 có vẻ nhỏ — chỉ 1 byte — nhưng đòi hỏi hiểu sâu về cách DOS khởi tạo stack cho file .COM và cách bộ xử lý x86 đọc lệnh từ memory. README không chỉ cho code mà còn giải thích cơ chế bên dưới, biến một đoạn mã 23 byte thành một bài học về kiến trúc phần mềm.

Dự án phù hợp cho bất kỳ ai muốn tìm hiểu sâu về Assembly x86, DOS internals, hoặc đơn giản là thấy được giới hạn tối thiểu của một chương trình có thể chạy được trên hệ điều hành thực. Đây cũng là nền tảng để khám phá thêm project susam/reboot — chương trình reboot chỉ 5 byte.


#Assembly #MS-DOS #HelloWorld #X86 #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryAssembly
donno2048/snake

A 54 bytes snake game in x86 assembly

1.4k
Oct 3, 2026
RepositoryC++
dosbox-staging/dosbox-staging

DOSBox Staging is a modern continuation of DOSBox with advanced features and current development practices.

1.8k
Oct 20, 2026
Modelfill-mask
jhu-clsp/mmBERT-base

mmBERT: A Modern Multilingual Encoder !License: MIT(https://img.shields.io/badge/License-MIT-yellow.svg)(https://opensource.org/licenses/MIT) !Paper(https://img.shields.io/badge/Paper-Arxiv-red)(https://arxiv.org/abs/2509.06888) !Model(https://img.s...

♥0
426.1k
Oct 7, 2025
RepositoryC
alexfru/SmallerC

Simple C compiler

1.6k
Dec 22, 2024
RepositoryJavaScript
jeffpar/pcjs

The original IBM PC and other machine emulations in JavaScript

1.2k
Oct 20, 2026
Modeltext-classification
cis-lmu/glotlid

GlotLID !GlotLID(https://img.shields.io/badge/🤗-Open%20In%20Spaces-blue.svg)(https://huggingface.co/spaces/cis-lmu/glotlid-space) Description GlotLID is a Fasttext language identification (LID) model that supports more than 2000 labels. Latest: Glo...

♥0
451.0k
Apr 18, 2024
Modelfill-mask
jhu-clsp/mmBERT-small

mmBERT: A Modern Multilingual Encoder !License: MIT(https://img.shields.io/badge/License-MIT-yellow.svg)(https://opensource.org/licenses/MIT) !Paper(https://img.shields.io/badge/Paper-Arxiv-red)(https://arxiv.org/abs/2509.06888) !Model(https://img.s...

♥0
86.8k
Oct 17, 2025
RepositoryC
SuperIlu/jSH

A Javascript scripting engine for DOS

145
Dec 14, 2025
RepositoryAssembly
mytechnotalent/Reverse-Engineering

A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit/64-bit ARM, 8-bit AVR and 32-bit RISC-V architectures.

15.0k
Oct 24, 2026