Tổng hợp các mã lệnh được dùng trong bài tập 1 khóa học Kiến trúc máy tính và Assembly

Bài tập: nhập hai số nguyên, tính tổng và in ra màn hình.

Video 1: https://youtu.be/JJTuWwFW2nc

Video 2: https://youtu.be/rKNuJ7QJt4Q

Video 3: https://youtu.be/cdmgwjOI5Rc

MOV – Di chuyển dữ liệu

Sao chép giá trị từ nguồn sang đích mà không làm thay đổi giá trị nguồn.

Ví dụ: `mov rax, 1` gán giá trị 1 vào thanh ghi rax.

Lưu ý là chúng ta không thể thực hiện một lệnh mov từ bộ nhớ đến bộ nhớ, để làm vậy bạn cần hai lệnh mov riêng biệt và dùng một thanh ghi làm nơi chứa giá trị trung gian.

Không phải thanh ghi nào cũng có thể được thay đổi giá trị bằng lệnh mov.

SYSCALL – Gọi hệ thống

Thực hiện lời gọi hệ thống của Linux.

Lệnh syscall chuyển điều khiển cho hệ điều hành, đồng thời đưa CPU về kernel mode, bạn cần gán giá trị thanh ghi rax bằng mã chức năng mà bạn muốn gọi.

Xem chi tiết trong bài: https://youtu.be/gefL014dGz8

Continue reading “Tổng hợp các mã lệnh được dùng trong bài tập 1 khóa học Kiến trúc máy tính và Assembly”

Vì sao nên nắm vững Kiến trúc máy tính và ngôn ngữ Assembly

Đối với người học lập trình phần mềm chuyên sâu, đặc biệt là sinh viên, việc hiểu rõ kiến trúc máy tính là yêu cầu bắt buộc để có thể hiểu sâu vào những gì diễn ra bên trong máy tính. Do vậy đây là một môn học bắt buộc, không hiểu rõ những kiến thức nền tảng này sẽ khiến bạn không thể đào sâu những khái niệm liên quan như đa luồng, bất đồng bộ, các kỹ thuật tối ưu, cách sử dụng bộ nhớ hiệu quả… Và hiển nhiên bạn không thể trở thành một chuyên gia nếu chỉ biết những kiến thức cơ bản, và trong ngành này, việc không thể trở thành chuyên gia khiến bạn chỉ có thể cạnh trạnh bằng sức khỏe, một thứ mà theo thời gian sẽ ngày càng kém đi.

Assembly là ngôn ngữ lập trình sát với phần cứng nhất, khi viết bằng ngôn ngữ này, chúng ta kiểm soát chương trình đến từng byte, từng mã lệnh. Hai môn học Kiến trúc máy tính và ngôn ngữ Assembly luôn đi cùng với nhau, bởi phải có kiến thức về Kiến trúc máy tính mới có thể viết chương trình Assembly, ngược lại, viết chương trình bằng Assembly sẽ giúp bạn có một môi trường thực hành, bạn có thể “nhìn thấy” những thứ trong lý thuyết được áp dụng vào thực tế.

Continue reading “Vì sao nên nắm vững Kiến trúc máy tính và ngôn ngữ Assembly”