Hợp ngữ và mã máy
Chào mừng các bạn đến với bài giảng hôm nay, chúng ta sẽ tìm hiểu về ngôn ngữ hợp ngữ và mã máy. Đây là một chủ đề quan trọng và cơ bản trong lập trình máy tính.
Ngôn ngữ máy là ngôn ngữ mà CPU của máy tính có thể hiểu mà không cần dịch. Ngôn ngữ này hoàn toàn bao gồm các số 0 và 1, vì CPU là một thiết bị số, nghĩa là nó hoạt động dựa trên các số 0 và 1. Tất cả các chương trình, dù được viết bằng ngôn ngữ hợp ngữ hay ngôn ngữ cấp cao như C, đều phải được dịch thành mã máy, tức là các số 0 và 1, để có thể được thực thi.
Ngôn ngữ hợp ngữ là một ngôn ngữ lập trình thấp cấp sử dụng các từ gợi nhớ (mnemonics) để biểu diễn các lệnh. Ví dụ, từ “mov” là từ viết tắt của “move” (di chuyển). Mỗi chương trình hợp ngữ thường chỉ tương thích với một loại bộ xử lý cụ thể và không tương thích với các bộ xử lý khác.
Một chương trình hợp ngữ thường bao gồm các phần sau:
- Nhãn (Label): Là tên cho vị trí bộ nhớ. Thay vì sử dụng các địa chỉ, chúng ta sử dụng nhãn để chỉ ra vị trí.
- Hướng dẫn (Instruction): Bao gồm các lệnh như “mov” để sao chép dữ liệu vào một đăng ký.
- Chỉ thị (Directive): Chỉ ra điểm bắt đầu và kết thúc của chương trình. Ví dụ, “org” chỉ ra điểm bắt đầu của chương trình và “end” chỉ ra kết thúc của chương trình.
- Bình luận (Comment): Giúp giải thích chức năng của mã.
Tất cả các chương trình hợp ngữ cần phải được chuyển đổi hoặc dịch thành mã máy để có thể thực thi. Để làm điều này, chúng ta cần một trình biên dịch, đây là một phần mềm chuyên dụng. Khi bạn đưa mã nguồn vào trình biên dịch, nó sẽ tạo ra một tệp hex, cùng với một số tệp khác như tệp đối tượng hoặc tệp danh sách.
Mã máy là biểu diễn nhị phân của các lệnh hợp ngữ, được thiết kế để có thể được thực thi trực tiếp bởi CPU. Mỗi lệnh hợp ngữ tương ứng với một (hoặc một số) mã máy cụ thể.
Ví dụ, trong ngôn ngữ hợp ngữ 8051, lệnh MOV A, 0Fh có thể được biểu diễn bằng mã máy như sau:
- MOV A, 0Fh tương ứng với mã máy 74 0F. Trong đó, 74 là mã máy của lệnh MOV A, data và 0F là giá trị hexa của dữ liệu cần sao chép vào đăng ký A.
Tương tự, lệnh MOV P1, A có thể được biểu diễn bằng mã máy như sau:
- MOV P1, A tương ứng với mã máy F5 90. Trong đó, F5 là mã máy của lệnh MOV direct, A (trong đó direct là địa chỉ trực tiếp của một vị trí bộ nhớ hoặc một cổng I/O) và 90 là mã của thanh ghi A.
Hy vọng rằng bài giảng hôm nay đã giúp các bạn hiểu rõ hơn về ngôn ngữ hợp ngữ và mã máy. Hãy tiếp tục theo dõi các bài giảng tiếp theo để tìm hiểu sâu hơn về lập trình máy tính. Cảm ơn các bạn đã lắng nghe!