Trong lập trình máy tính,
Hợp ngữ (hay
assembly[1]) thường được viết tắt là
asm là bất kỳ
ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh trong ngôn ngữ và tập lệnh mã máy của
kiến trúc.
[2] Bởi vì hợp ngữ phụ thuộc vào tập lệnh mã máy, mỗi
trình biên dịch có hợp ngữ riêng được thiết kế cho chính xác một kiến trúc máy tính cụ thể. Hợp ngữ cũng có thể được gọi là
mã máy tượng trưng (symbolic machine code).
[3][4]Mã hợp ngữ được chuyển đổi thành mã máy thực thi bằng một chương trình được gọi là
assembler. Quá trình chuyển đổi được gọi là assembling. Hợp ngữ thường có một câu lệnh trên một lệnh máy (1:1), nhưng các
comment và các câu lệnh là chỉ thị trình biên dịch,
[5] macros,
[6][7] và các
nhãn chương trình và
địa chỉ bộ nhớ cũng được hỗ trợMỗi một hợp ngữ là dành riêng cho một kiến trúc máy tính cụ thể và đôi khi cho một
hệ điều hành.
[8] Tuy nhiên, một số hợp ngữ không cung cấp
cú pháp riêng cho lời gọi hệ điều hành, và hầu hết các hợp ngữ có thể được sử dụng phổ biến với bất kỳ hệ điều hành nào, vì ngôn ngữ này cung cấp quyền truy cập vào tất cả các khả năng thực sự của
bộ xử lý, theo đó tất cả các cơ chế
gọi hệ thống đều dừng lại. Trái ngược với hợp ngữ, hầu hết các
ngôn ngữ lập trình bậc cao thường có khả năng di động trên nhiều kiến trúc nhưng yêu cầu
thông dịch hoặc
biên dịch, một công việc phức tạp hơn nhiều so với assembling.Hợp ngữ đã từng được dùng rộng rãi trong tất cả các khía cạnh lập trình, nhưng ngày nay nó có xu hướng chỉ được dùng trong một số lãnh vực hẹp, chủ yếu để giao tiếp trực tiếp với
phần cứng hoặc xử lý các vấn đề liên quan đến tốc độ cao điển hình như các
trình điều khiển thiết bị, các
hệ thống nhúng cấp thấp và các ứng dụng
thời gian thực.