Ngăn xếp và thủ tục 1 Ngăn xếp:

Một phần của tài liệu Giáo trình Kiến trúc máy tính - Trường CĐ Nông Lâm Đông Bắc (Trang 64 - 65)

7 1 B/IHGBIRG B

6.4. Ngăn xếp và thủ tục 1 Ngăn xếp:

6.4.1. Ngăn xếp:

Đoạn ngăn xếp (stack segment) trong chương trình được dùng để cất giữtạm thời số liệu và địa chỉ . Trong phần này chúng ta sẽ xem xét cách tổ chức stack và sử dụng nó để thực hiện các thủ tục (procedure).

Ngăn xếp là cấu trúc dữ liệu 1 chiều. Điều đó có nghĩa là số liệu được đưa

vào và lấy ra khỏi stack tại đầu cuối của stack theo nguyên tắc LIFO ( last in first out) . Vị trí tại đó số liệu được đưa vào hay lấy ra gọi là đỉnh của ngăn xếp (top of stack) .Có thể hình dung satck như một chồng đĩa. Đĩa đưa vào sau cùng nằm tại đỉnh của chồng

đĩa. Khi lấy ra, đĩa trên cùng sẽ được lấy ra trước. Một chương trình phải dành ra một khối nhớ cho ngăn xếp. Chúng ta dùng chỉ dẫn .STACK 100h để khai báo kích thước vùng stack là 256 bytes . Khi chương trình được dịch và nạp vào bộ nhớ thanh ghi SS ( stack segment) sẽ chứa địa chỉ đoạn stack . Còn SP ( stack pointer) chứa địa chỉ đỉnh của ngăn xếp . Trong khai báo stack 100h trên đây , SP nhận giá trị 100h . Điều này có nghĩa là stack trống rỗng (empty) như hình 49.

Lệnh PUSH

Để thêm một từ mới vào stack chúng ta dùng lệnh :

PUSH nguồn; đưa một thanh ghi hoặc từ nhớ 16 bit vào stack Ví dụ PUSH AX . Khi lệnh này được thực hiện thì :

- SP giảm đi 2

- Một bản copy của toán hạng nguồn đưọc chuyển đến địa chỉ SS:SP cịn tốn hạng nguồn không thay đổi .

Lệnh POP

Để lấy số liệu tại đỉnh stack ra khỏi stack ,chúng ta dùng lệnh : POP đích ; lấy số liệu tại đỉnh stack ra đích

Đích có thể là 1 thanh ghi hoặc từ nhớ 16 bit . Ví dụ : POP BX ; Lấy số liệu trong stack ra thanh ghi BX . Khi thực hiện lệnh POP :

- Nội dung của đỉnh stack ( địa chỉ SS:SP) được di chuyển đến đích . - SP tăng 2

Một phần của tài liệu Giáo trình Kiến trúc máy tính - Trường CĐ Nông Lâm Đông Bắc (Trang 64 - 65)