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 hay làm thay đổi logic chƣơng trình. Đây là nhóm lệnh gây ra các rẽ nhánh (branching), hoặc nhảy (jumping) làm cho quá trình thực hiện chƣơng trình phức tạp
hơn. 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 – nơi chứa địa chỉ ô nhớ chứa lệnh tiếp theo đƣợc thực hiện, có nghĩa là yêu
Chương 3- Tập lệnh máy tính
29
cầu CPU thực hiện chƣơng trình từ một vị trí mới thay vì thực hiện lệnh kế tiếp lệnh đang thực hiện. Các lệnh điều khiển chƣơng trình sử dụng các cờ của ALU (lƣu trong thanh ghi cờ FR) để xác định điều kiện rẽ nhánh hoặc nhảy. Có thể chia các lệnh điều khiển chƣơng trình thành 3 loại chính sau:
Các lệnh nhảy / rẽ nhánh có điều kiện (CONDITIONAL BRANCHING/ CONDITIONAL JUMP);
Các lệnh nhảy/ rẽ nhánh không điều kiện (UNCONDITIONAL BRANCHING / JUMP);
Các lệnh gọi thực hiện (CALL) và trở về (RETURN) từ chƣơng trình con.
Ví dụ:Cộng nội dung 100 ô nhớ cạnh nhau, bắt đầu từ địa chỉ 1000. Kết quả lƣu vào R0. LOAD R1, #100; R1 100 LOAD R2, #1000; R2 1000 LOAD R0, #0; R0 0 Loop: ADD R0, (R2); R0 R0 + M[R2] INCREMENT R2; R2 R2 + 1 DECREMENT R1; R1 R1 – 1 BRANCH-IF-GREATER-THAN Loop;
; Quay lại thực hiện lệnh sau nhãn Loop nếu R1 còn lớn hơn 0.
Một số lệnh điều khiển chương trình thông dụng
Tên lệnh Ý nghĩa
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.