Bài giảng Kiến trúc máy tính - Chương 3: Tập lệnh máy tính - Hoàng Xuân Dậu
NỘI DUNG
1. Giới thiệu về tập lệnh máy tính
2. Dạng và các thành phần của lệnh
3. Địa chỉ / toán hạng của lệnh
4. Các chế độ địa chỉ
5. Các dạng lệnh thông dụng
6. Câu hỏi ôn tập
ÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 10 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.3 Địa chỉ / toán hạng của lệnh Toán hạng 1 địa chỉ: Dạng: • opcode addr1 • Địa chỉ addr1 tham chiếu đến một ô nhớ hoặc một thanh ghi. • Ở dạng 1 địa chỉ, thanh ghi Racc (Accumulator) được sử dụng như địa chỉ addr2 trong dạng 2 địa chỉ. Ví dụ: ADD R1; R1 + Racc Racc R1 cộng với Racc, kết quả gán vào Racc. R1 là thanh ghi của CPU. ADD A; M[A]+ Racc Racc A là một ô nhớ. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 11 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.3 Địa chỉ / toán hạng của lệnh Toán hạng 1,5 địa chỉ: Dạng: • opcode addr1, addr2 • Một địa chỉ tham chiếu đến một ô nhớ và địa chỉ còn lại tham chiếu đến một thanh ghi. • Dạng 1,5 địa chỉ là dạng hỗn hợp giữa ô nhớ và thanh ghi. Ví dụ: ADD A, R1; M[A] + R1 R1 Nội dung ô nhớ A cộng với R1, kết quả gán vào R1. R1 là thanh ghi của CPU và A là một ô nhớ. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 12 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.3 Địa chỉ / toán hạng của lệnh Toán hạng 0 địa chỉ: được sử dụng trong các lệnh thao tác với ngăn xếp: PUSH và POP BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 13 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4 Các chế độ địa chỉ Chế độ địa chỉ (Addressing modes) là phương thức CPU tổ chức các toán hạng của lệnh. Chế độ địa chỉ cho phép CPU kiểm tra dạng và tìm các toán hạng của lệnh. Các chế độ địa chỉ: Tức thì (Immediate) Trực tiếp (Direct ) Gián tiếp qua thanh ghi (Register indirect ) Gián tiếp qua ô nhớ (Memory indirect ) Chỉ số (Indexed ) Tương đối (Relative ) BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 14 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.1 Các chế độ địa chỉ - Tức thì Giá trị hằng của toán hạng nguồn (source operand) nằm ngay sau mã lệnh; Toán hạng đích có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ; Ví dụ: LOAD #1000, R1; 1000 R1 Nạp giá trị 1000 vào thanh ghi R1. LOAD #500, B; 500 M[B] Nạp giá trị 500 vào ô nhớ B. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 15 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.2 Các chế độ địa chỉ - Trực tiếp/tuyệt đối Sử dụng một hằng để biểu diễn địa chỉ một ô nhớ làm một toán hạng; Toán hạng còn lại có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ; Ví dụ: LOAD 1000, R1; M[1000] R1 Nạp nội dung ô nhớ có địa chỉ 1000 vào thanh ghi R1. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 16 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.2 Các chế độ địa chỉ - Trực tiếp/tuyệt đối LOAD 1000, R1 200 200 R1 BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 17 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.3 Các chế độ địa chỉ - Gián tiếp Trong chế độ địa chỉ gián tiếp, một thanh ghi hoặc một ô nhớ được sử dụng để lưu địa chỉ toán hạng. Gián tiếp qua thanh ghi: LOAD (Ri), Rj; M[Ri] Rj Nạp nội dung ô nhớ có địa chỉ lưu trong thanh ghi Ri vào thanh ghi Rj. Gián tiếp qua ô nhớ: LOAD (1000), Ri; M[M[1000]] Ri Nạp nội dung ô nhớ có địa chỉ lưu trong ô nhớ 1000 vào thanh ghi Ri. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 18 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.3 Các chế độ địa chỉ - Gián tiếp BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 19 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.4 Các chế độ địa chỉ - Chỉ số Địa chỉ của 1 toán hạng được tạo thành bởi phép cộng giữa 1 hằng và thanh ghi chỉ số (index register); Ví dụ: LOAD X(Rind), Ri; M[X+Rind] Ri X là hằng và Rind là thanh ghi chỉ số. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 20 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.4.5 Các chế độ địa chỉ - Tương đối Địa chỉ của 1 toán hạng được tạo thành bởi phép cộng giữa 1 hằng và bộ đếm chương trình PC (Program Counter); Ví dụ: LOAD X(PC), Ri; M[X+PC] Ri X là hằng và PC là bộ đếm chương trình. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 21 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5 Các dạng lệnh thông dụng Tập lệnh máy tính có thể bao gồm một số nhóm lệnh sau: Các lệnh vận chuyển dữ liệu (Data Movement Instructions) Các lệnh toán học và logic (Arithmetic and Logical Instructions) Các lệnh điều khiển chương trình (Control/Sequencing Instructions ) Các lệnh vào ra (Input/Output Instructions ) BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 22 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.1 Các lệnh vận chuyển dữ liệu Lệnh vận chuyển dữ liệu giữa các bộ phận trong máy tính: Giữa các thanh ghi của CPU: MOVE Ri, Rj; Ri Rj Giữa 1 thanh ghi của CPU register và một ô nhớ: MOVE 1000, Rj; M[1000] Rj Giữa các ô nhớ: MOVE 1000, (Rj); M[1000] M[Rj] BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 23 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.1 Các lệnh vận chuyển dữ liệu Một số lệnh chuyển dữ liệu thông dụng: MOVE: chuyển dữ liệu giữa thanh ghi – thanh ghi, ô nhớ - thanh ghi và ô nhớ - ô nhớ. LOAD: nạp nội dung 1 ô nhớ vào 1 thanh ghi STORE: lưu nội dung 1 thanh ghi ra 1 ô nhớ PUSH: đẩy dữ liệu vào ngăn xếp POP: lấy dữ liệu ra khỏi ngăn xếp BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 24 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.2 Các lệnh tính toán số học & logic Các lệnh tính toán số học & logic được sử dụng để thực hiện các thao tác tính toán trên nội dung các thanh ghi và / hoặc nội dung các ô nhớ. Ví dụ: ADD R1, R2, R3; R1 + R2 R3 SUBSTRACT R1, R2, R3; R1 - R2 R3 ADD A, B, C; M[A]+M[B] M[C] BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 25 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.2 Các lệnh tính toán số học & logic Các lệnh tính toán số học thông dụng: ADD: cộng 2 toán hạng SUBSTRACT: trừ 2 toán hạng MULTIPLY: nhân 2 toán hạng DIVIDE: chia số học INCREMENT: tăng 1 DECREMENT: giảm 1 BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 26 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.2 Các lệnh tính toán số học & logic Các lệnh logic thông dụng: NOT: phủ định AND: và OR: hoặc XOR: hoặc loại trừ COMPARE: so sánh SHIFT: dịch ROTATE: quay BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 27 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.3 Các lệnh điều khiển chương trình Các lệnh điều khiển chương trình được sử dụng để thay đổi trật tự thực hiện các lệnh khác trong chương trình: CONDITIONAL BRANCHING (CONDITIONAL JUMP): các lệnh nhảy/ rẽ nhánh có điều kiện UNCONDITIONAL BRANCHING (JUMP): các lệnh nhảy/ rẽ nhánh không điều kiện CALL and RETURN: lệnh gọi thực hiện và trở về từ chương trình con. Một trong các đặc tính của các lệnh này là chúng làm thay đổi nội dung của bộ đếm chương trình PC. Các lệnh điều khiển chương trình sử dụng các cờ của ALU để xác định điều kiện rẽ nhánh / nhảy. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 28 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.3 Các lệnh điều khiển chương trình Các lệnh điều khiển chương trình thông dụng: BRANCH-IF-CONDITION: chuyển đến thực hiện lệnh ở địa chỉ mới nếu điều kiến là đúng JUMP: chuyển đến thực hiện lệnh ở địa chỉ mới CALL: chuyển đến thực hiện chương trình con RETURN: trở về (từ chương trình con) thực hiện tiếp chương trình gọi. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 29 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.3 Các lệnh điều khiển chương trình Lặp đến khi R1 = 0 BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 30 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.4 Các lệnh vào ra Các lệnh vào ra (I/O instructions) được sử dụng để vận chuyển dữ liệu giữa máy tính và các thiết bị ngoại vi; Các thiết bị ngoại vi giao tiếp với máy tính thông qua các cổng chuyên dụng (dedicated ports). Mỗi cổng được gán một địa chỉ; Hai lệnh vào ra cơ bản: INPUT: sử dụng để chuyển dữ liệu từ thiết bị vào (input devices) đến CPU; OUTPUT: sử dụng để chuyển dữ liệu từ CPU đến thiết bị ra (output devices). BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 31 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.5.5 Ví dụ lập trình Đoạn chương trình cộng nội dung của 100 ô nhớ kề nhau bắt đầu từ địa chỉ 1000. Kết quả lưu vào ô nhớ có địa chỉ 2000. BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH www.ptit.edu.vn GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1 Trang 32 CHƯƠNG 3 – TẬP LỆNH MÁY TÍNH 3.6 Câu hỏi ôn tập 1. Khái niệm lệnh và tập lệnh? Chu kỳ lệnh và các giai đoạn thực hiện lệnh. 2. Dạng lệnh và các dạng địa chỉ toán hạng 3. Khái niệm chế độ địa chỉ và các chế độ địa chỉ 4. Một số dạng lệnh thông dụng.
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_3_tap_lenh_may_tinh_hoan.pdf