M Ụ C L Ụ C
4. Ngăn xế p và các th ủ t ụ c
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ỉ
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 6.1.
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