xếp
Khi lệnh Call gọi một thủ tục thì các lệnh của thủ tục đó sẽ thi hành. Vậy làm cách nào để quay trở về chương trình chính sau khi thủ tục thi hành xong?
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Kiến trúc máy tính 2 - 80
Trình tự thực hiện lệnh của bộ vi xử lý 8086:
Đoạn mã lệnh có địa chỉ segment nằm
trong thanh ghi CS, còn offset của các lệnh sẽ được đặt vào thanh ghi con trỏ lệnh IP (Instruction Pointer).
Như vậy cặp thanh ghi CS:IP chứa địa chỉ của ô nhớ nào thì lệnh tại ô nhớ đó sẽ được thi hành.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Kiến trúc máy tính 2 - 81
Khi sử dụng lệnh Call thì các công việc sau đây được thực hiện:
Cất địa chỉ của lệnh đứng sau lệnh Call
(trong chương trình chính) vào ngăn xếp. Nạp địa chỉ lệnh đầu tiên của thủ tục vào cặp thanh ghi CS:IP (tức là thi hành lệnh này).
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Kiến trúc máy tính 2 - 82 Lần lượt các lệnh trong thủ tục sẽ được thi hành cho tới khi gặp lệnh RET.
Lệnh RET sẽ lấy địa chỉ lệnh từ ngăn xếp (do lệnh Call cất trước đó) rồi nạp vào các thanh ghi CS:IP. Như vậy quyền điều khiển đã được trả về chương trình chính
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 83 Call <Thủ tục> Lệnh tiếp theo … … Lệnh đầu tiên … … … RET Chương trình chính Thủ tục
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Kiến trúc máy tính 2 - 84