Hôm nay, Tự Học Lập Trình sẽ giúp bạn tìm hiểu về ngôn ngữ Assembly và những điểm nổi trội của loại ngôn ngữ này.
Ngôn ngữ lập trình Assembly là gì?
Assembly (còn được viết tắt là ASM) là ngôn ngữ lập trình bậc cao, ở dạng ngôn ngữ gợi nhớ (Mnemonic) hay ở dạng kí hiệu của ngôn ngữ máy. Ngôn ngữ này được sáng tạo ra vi xử lý cho ra các lệnh hợp ngữ gần với ngôn ngữ tự nhiên. Nó có cấu trúc dữ liệu và giải thuật toán chủ yếu là 0 và 1 nên khiến cho người sử dụng khó đọc và khó hiểu.
Một số ưu điểm của ASM như: sử dụng debug chương trình mà không cần source code và dùng để tối ưu hóa các chương trình.
Công việc của Assembly
- Lập trình phần cứng, mạch điện tử, các chip vi giải quyết.
- Lập trình viên compiler, hệ điều hành.
- Hacker chuyên nghiệp.
- Reverse Engineer: được ứng dụng trong an ninh như: phát hiện các mã độc, đánh giá thuật toán mã hóa và các lĩnh vực liên quan.
Tính năng của Assembly giúp nó tương tác cùng hệ thống
- Nhận trực tiếp từng lệnh/đoạn lệnh lưu vào bộ nhớ: điều này cho phép thực hiện được ngay trên bộ nhớ mà không cần thông qua biên dịch chương trình. Kèm theo chương trình gỡ rối Debug - một chương trình hỗ trợ cho hợp ngữ 16 bit.
- Viết chương trình hợp ngữ: sử dụng chương trình biên dịch để dịch nó qua chương trình thực thi (có dạng .exe hay .com) và cho chạy các chương trình này.
Cái khó khi học Assembly
Khi mới học một ngôn ngữ lập trình nào, việc đầu tiên bạn cần chú ý là cài đặt môi trường lập trình cũng như các công cụ biên dịch và sử dụng các editor hoặc IDE. Việc viết một chương trình, sau đó biên dịch và cho chúng chạy thử đối với các ngôn ngữ bậc cao là chuyện khá dễ dàng. Còn với Assembly chúng không thể dịch cũng như chạy code đúng theo hướng dẫn.
Trong ngôn ngữ này, nếu bạn không gọi API của hệ điều hành, thì việc dịch chương trình không sử dụng source code như đã nói cũng không thể thực hiện được. Nếu so sánh Assembly với Java, thì nó thua xa. Các chương trình chạy trong Java không cần phải dịch, vì đã có máy ảo Java lo hết.
Khi sử dụng trên Mac, chúng còn khiến người dùng khó chịu. Do Apple dành riêng cho ASM bộ linker chỉ định riêng (Match-O), padding memory riêng (có 4 lớp padding). Bên cạnh đó, những tài liệu hướng dẫn về cách sử dụng ngôn ngữ này khá ít nên làm cho các nhà lập trình không mấy hứng thú với loại này.