Assembly là một ngôn ngữ được sử dụng trong lập trình. Đối với những người không chuyên, các ngôn ngữ lập trình thường nghe được sẽ là JavaScript, Java, Python, PHP, C#, CSS, C++… và ít nghe đến Assembly. Do vậy, nội dung chính của bài viết này sẽ mang đến cho bạn đọc thông tin Assembly là gì? Tìm hiểu về ngôn ngữ Assembly và tất cả những chủ đề xung quanh ngôn ngữ này cùng
Mona Media trong bài viết này.
Assembly là gì?
Assembly còn được biết đến với tên gọi Assembly Language (ASM) mang nghĩa là hợp ngữ. Đây là là một ngôn ngữ lập trình cấp thấp được thiết kế để giao tiếp trực tiếp với phần cứng máy tính và định hướng luồng thông tin.
Ngôn ngữ Assembly được sử dụng cho các thiết bị có lập trình và bộ vi xử lý. Để tạo ra ngôn ngữ Assembly, lập trình viên thực hiện biên dịch mã nguồn từ ngôn ngữ lập trình cấp cao hơn như C#, C++…
Assembly không phải là ngôn ngữ lập trình mới. Nó đã tồn tại gần như song song với thời gian tồn tại của máy tính. Hợp ngữ được phát minh lần đầu tiên vào năm 1947 bởi nhà toán học Kathleen Booth cùng với sự hỗ trợ của Andrew Booth (chồng), Jon von Neumann và Herman Goldstein tại Birkbeck College, London.
Các thành phần của ngôn ngữ Assembly
Ngôn ngữ Assembly bao gồm các thành phần sau:
- Bản kê khai hợp ngữ: siêu dữ liệu mô tả tập hợp và nội dung của nó.
- Kiểu siêu dữ liệu: bao gồm tất cả các kiểu, thuộc tính và phương thức của chúng.
- Mã nguồn MSIL: ngôn ngữ trung gian của Microsoft
- Tài nguyên: tập hợp tất cả các tài nguyên khác như biểu tượng, hình ảnh…
Cách thức hoạt động của ngôn ngữ Assembly
Ngôn ngữ Assembly cho phép con người giao tiếp trực tiếp với phần cứng máy tính và định hướng luồng thông tin. Assembly thực hiện công việc này bằng cách điều này bằng cách sử dụng các từ gợi nhớ (mnemonics) mà con người có thể đọc được để tạo thành mã ngắn là chỉ thị (instructions) để thực hiện nhiệm vụ.
Các mã ngắn này sẽ được chuyển đổi thành ngôn ngữ học máy (là các mã nhị phân sử dụng các chữ số 1 và số 0) thông qua việc sử dụng các chương trình được gọi là chương
trình dịch hợp ngữ hay
trình lắp ráp (assemblers).
Tóm lại, ngôn ngữ máy sử dụng mã nhị phân, loại mã mà con người hầu như không thể giải mã được. Trong khi đó, hợp ngữ sử dụng mã gợi nhớ để viết chương trình. Mã gợi nhớ giúp con người hiểu, ghi nhớ các đoạn mã một cách đơn giản hơn. Từ đó, con người có thể sử dụng ngôn ngữ này tốt hơn hơn so với mã máy.
Ngôn ngữ Assembly có những ưu điểm gì?
Ngôn ngữ Assembly phụ trách nhiều vai trò trong hoạt động của máy tính. Những lợi ích cụ thể khi sử dụng ngôn ngữ Assembly là:
- Ngôn ngữ Assembly được tối ưu hóa đến mức cao nhất và chỉ dùng nguồn tài nguyên cần thiết nên tốc độ hoạt động nhanh hơn.
- Kiểm soát phần cứng tốt hơn nên đây là ngôn ngữ thể hiện được toàn bộ sức mạnh của bộ xử lý.
- Khi viết lập trình, chương trình tạo ra sẽ chiếm ít dụng lượng trong bộ nhớ. Thông thường, dung lượng mà chương trình chiếm có kích thước rất nhỏ.
- Có khả năng truy cập vào bộ nhớ trong của phần cứng, điều mà ngôn ngữ cấp cao không thực hiện được.
- Hiệu suất hoạt động nhanh. Ngôn ngữ Assembly hỗ trợ các ngôn ngữ lập trình cấp cao tiếp nhận, xử lý và phản hồi nhanh hơn.
- Hiển thị linh hoạt. Assembly cho phép người dùng theo dõi toàn màn hình bằng cách sử dụng lệnh View.
Ngôn ngữ Assembly có những hạn chế gì?
Một số hạn chế thường thấy khi sử dụng ngôn ngữ Assembly là:
- Để viết được chương trình bằng Assembly buộc lập trình viên phải có kiến thức sâu rộng về cấu trúc bên trong của bộ vi xử lý.
- Cú pháp của hợp ngữ khó hơn các loại ngôn ngữ lập trình cao cấp.
- Assembly thay đổi tùy theo loại vi xử lý nên chương trình có thể không hoạt động trên các bộ vi xử lý khác nhau.
- Thiết kế và thuật toán của ngôn ngữ Assembly có giới hạn.
Ứng dụng của ngôn ngữ Assembly trong thực tế
Lập trình các vi mạch điện tử. Vì đây là ngôn ngữ gần gũi với máy tính nên máy có thể hiểu nhanh chóng, giúp quá trình thiết lập các chi tiết nhỏ chính xác hơn.
Lập trình biên dịch. Assembly giúp lập trình viên có thể biên dịch các ngôn ngữ ở bậc cao hơn trở nên thân thiện với máy tính, giúp máy có thể hiểu.
Tìm mã nguồn xấu trong hệ thống máy tính. Từ đó, tránh được các tình trạng bị người lạ tấn công vào máy tính. Assembly cũng giúp lập các tường lửa chống virus.
Lập trình viên có nên theo học ngôn ngữ Assembly không?
Tùy vào lĩnh vực lập trình của lập trình viên sẽ có mức độ cần thiết của ngôn ngữ Assembly khác nhau. Đối với lập trình viên thiên về lập trình website, ứng dụng, phần mềm, ngôn ngữ lập trình cấp cao sẽ là ưu tiên hàng đầu của họ. Ngôn ngữ Assembly sẽ có mức độ cần thiết thấp hơn do ít sử dụng.
Tuy nhiên, những đối tượng sau sẽ cần thấu hiểu ngôn ngữ này thật tốt:
- Hacker chuyên nghiệp. Không phải hacker đều là những đối tượng xấu, đều lấy cắp hoặc phá hoại dữ liệu. Các hacker mũ trắng là người thực hiện công việc bảo vệ hệ thống mạng.
- Lập trình viên thiên về lập trình phần cứng, hệ điều hành, chip xử lý, mạch điện tử… Bạn có thể hiểu đơn giản đây là những người lập trình nên chương trình hoạt động cho thiết bị nội thất gia đình như máy giặt, điều hòa, TV, tủ lạnh, lò nướng…
- Người làm nghề Reverse Engineer. Đây là những người chuyên về phân tích và nghiên cứu chương trình. Họ thực hiện các công việc để hiểu rõ các cấu trúc, cách hoạt động của chương trình được lập ra. Từ đó, xây dựng các giải pháp tường lửa, phòng tránh rủi ro, tấn công bởi virus…
Những câu hỏi khác liên quan đến ngôn ngữ lập trình Assembly
Quy định về cú pháp trong Assembly
Cú pháp là các quy tắc cụ thể khi viết các dòng mã sử dụng ngôn ngữ Assembly. Dưới đây là một số quy tắc:
- Mỗi dòng mã có tối đa 255 ký tự.
- Mọi dòng mã đều bắt đầu bằng một ký hiệu, thẻ label hoặc chỉ thị.
- Máy bỏ qua bất kỳ văn bản nào trong dấu ngoặc kép.
- Một ký tự khoảng trắng phân tách tất cả các phần tử của một dòng mã, như nhãn, chỉ thị hoặc lệnh.
So sánh ngôn ngữ lập trình Assembly và các ngôn ngữ máy tính khác
So sánh ngôn ngữ lập trình Assembly và các ngôn ngữ máy tính khác:
Tiêu chí |
Ngôn ngữ máy (Machine Language) |
Hợp ngữ (Ngôn ngữ Assembly) |
Ngôn ngữ trung gian dùng chung (Common Intermediate Language – CIL) |
Ngôn ngữ cấp cao (High-Level Language) |
Khái niệm |
Ngôn ngữ máy là ngôn ngữ cơ bản nhất để tương tác với máy tính. |
Hợp ngữ là một ngôn ngữ cấp thấp dựa vào các mã để tương tác với máy tính. Nó dễ làm việc hơn so với ngôn ngữ máy nhưng không dễ sử dụng như các ngôn ngữ cấp cao. |
Ngôn ngữ cấp trung gian dùng chung là một ngôn ngữ phổ quát mà các trình biên dịch sẽ sử dụng để chạy mã đa nền tảng. |
Ngôn ngữ bậc cao là ngôn ngữ máy tính sử dụng các lệnh con người có thể hiểu dễ hiểu. |
Đặc điểm |
Bộ xử lý có thể dễ dàng hiểu ngôn ngữ máy. Đó là một ngôn ngữ nhị phân bao gồm các chữ số 0 và 1. |
Hợp ngữ chứa các mã ngắn thân thiện với con người hơn so với ngôn ngữ máy. Nó dựa vào trình lắp ráp để chuyển đổi mã thành ngôn ngữ máy. |
Đây là ngôn ngữ lập trình cấp thấp, dễ đọc nhất cho mọi người (dễ hơn so với lắp ráp). |
Ngôn ngữ bậc cao có các lệnh và cú pháp rất thân thiện với người dùng. Trong một số trường hợp, nó sử dụng trình biên dịch để dịch các lệnh này thành hợp ngữ hoặc ngôn ngữ trung gian dùng chung, sau đó chuyển sang ngôn ngữ máy để bộ xử lý hiểu. |
Tốc độ |
Tốc độ thực thi của ngôn ngữ máy rất cao vì bộ xử lý không phải dịch nó. |
Tốc độ thực thi của hợp ngữ không nhanh bằng ngôn ngữ máy. Các lệnh cần được dịch để bộ xử lý hiểu được. |
Tốc độ thực thi chậm hơn so với ngôn ngữ hợp ngữ. |
Tốc độ thực thi của ngôn ngữ cấp cao chậm nhất so với các loại ngôn ngữ khác. |
Đặc điểm cú pháp |
Con người không thể viết các chương trình thực thi bằng ngôn ngữ máy. |
Các chương trình có thể được viết nhưng cồng kềnh và phức tạp |
|
Cú pháp của ngôn ngữ cấp cao được con người đọc hiểu dễ dàng nên hoạt động lập trình nhanh hơn và đơn giản hơn. |
Ví dụ về tên ngôn ngữ |
Ngôn ngữ nhị phân |
Kiến trúc bộ tập lệnh sử dụng hợp ngữ: ARM, MIPS, x86… Trong đó, mỗi kiến trúc có ngôn ngữ hợp ngữ riêng |
Ví dụ về CIL: Ngôn ngữ trung gian của Microsoft (MSIL) |
Ví dụ về ngôn ngữ cấp cao: Java, JavaScript, C ++, C#, F#… |
Sự khác biệt giữa trình biên dịch và trình lắp ráp là gì?
Trình biên dịch |
Trình lắp ráp |
Trình biên dịch chuyển đổi mã nguồn ngôn ngữ cấp cao thành mã ngôn ngữ cấp máy. |
Trình hợp dịch chuyển đổi mã ngôn ngữ cấp hợp ngữ thành mã ngôn ngữ cấp máy. |
Đầu vào của trình biên dịch là mã nguồn ngôn ngữ cấp cao. |
Đầu vào của nó là mã lắp ráp cấp thấp. |
Trình biên dịch chuyển đổi toàn bộ mã nguồn sang mã máy cùng một lúc. |
Trình lắp ráp không chuyển đổi mã trong một lần. |
Nội dung chính của bài viết đã giúp bạn đọc hiểu
ngôn ngữ Assembly là gì? Cách thức hoạt động và những thông tin khác liên quan đến ngôn ngữ này. Ngôn ngữ Assembly khó học nhưng nếu bạn muốn phát triển trong lĩnh vực lập trình cho phần cứng thì không thể bỏ qua. Mong rằng qua bài viết, bạn đọc sẽ hiểu hơn về loại ngôn ngữ máy tính này.
Có thể bạn quan tâm: