Danh mục

Bài thực hành số 3: Ngăn xếp – Thủ tục – Macro

Số trang: 7      Loại file: doc      Dung lượng: 169.00 KB      Lượt xem: 16      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Ngăn xếp (Stack) là vùng nhớ đặc biệt được truy cập theo cơ chế “vào trước rasau” (LIFO – Last In First Out), nghĩa là dữ liệu nào đưa vào sau sẽ được lấy ratrước.Ngăn xếp gồm nhiều phần tử, mỗi phần tử là một từ (2 bytes).Vị trí của ngăn xếp trong bộ nhớ được xác định bởi cặp thanh ghi SS:SP (SS chứađịa chỉ đoạn, SP chứa địa chỉ ô của đỉnh ngăn xếp). Khi chưa sử dụng, ngăn xếprỗng, vị trí được xác định bởi SP lúc đó là đáy ngăn xếp....
Nội dung trích xuất từ tài liệu:
Bài thực hành số 3: Ngăn xếp – Thủ tục – Macro Bài thực hành số 3 Ngăn xếp – Thủ tục – MacroMục đích  Hiểu được cơ chế hoạt động của ngăn xếp, quá trình gọi một thủ tục.  Biết cách sử dụng ngăn xếp, khai báo và gọi thủ tục.  Biết cách tạo và sử dụng macro.Tóm tắt lý thuyếtNgăn xếp 1. Một số lưu ý: − Ngăn xếp (Stack) là vùng nhớ đặc biệt được truy cập theo cơ chế “vào trước ra sau” (LIFO – Last In First Out), nghĩa là dữ liệu nào đưa vào sau sẽ được lấy ra trước. − Ngăn xếp gồm nhiều phần tử, mỗi phần tử là một từ (2 bytes). − Vị trí của ngăn xếp trong bộ nhớ được xác định bởi cặp thanh ghi SS:SP (SS chứa địa chỉ đoạn, SP chứa địa chỉ ô của đỉnh ngăn xếp). Khi chưa sử dụng, ngăn xếp rỗng, vị trí được xác định bởi SP lúc đó là đáy ngăn xếp. 2. Khai báo: .STACK Ví dụ: khai báo một vùng ngăn xếp có kích thước 256 bytes: .STACK 100h 3. Các thao tác: • Đưa trị vào (đỉnh) ngăn xếp: PUSH ; đưa nguồn (thanh ghi hay từ nhớ ; 16 bit) vào đỉnh ngăn xếp PUSHW ; đưa trực tiếp một hằng16 bit vào ; đỉnh ngăn xếp PUSHF ; đưa nội dung thanh ghi cờ vào đỉnh ; ngăn xếp • Lấy trị (ở đỉnh) ra khỏi ngăn xếp: POP ; lấy giá trị (2 bytes) ở đỉnh ngăn xếp ; đưa vào đích (thanh ghi (trừ thanh ; ghi IP) hay từ nhớ 16 bit) POPF ; lấy giá trị (2 bytes) ở đỉnh ngăn xếp ; đưa vào thanh ghi cờ Chú ý : Các lệnh PUSH, PUSHF, POP và POPF không ảnh hưởng tới các cờ. Ví dụ: Chương trình xuất chuỗi ngược dùng stack:.model small 1. Khai báo.stack 100h 000h … 0FCh.data 0FCh msg1 DB Nhap vao 1 chuoi: $ SS:SP  100h msg2 DB 10,13,Chuoi nghich 2. Nhập lần lượt a,b,c đưa vào ngăn dao la: $ xếp:.code Nhập ký tự ‘a’: mov ax,@data 000h mov ds,ax … 0FCh mov ah,9 SS:SP  61 00 0FCh lea dx,msg1 Nhập ký tự ‘b’: 100h int 21h 000h mov cx,0 … 00 62nhap: SS:SP  61 00 0FCh mov ah,1 Nhập ký tự ‘c’: 0FCh int 21h cmp al,13 100h je thongbaoxuat 00 63 xor ah,ah 00 62 000h push ax 00  61 SS:SP … inc cx 0FCh 3. Xuất các giá trị trong ngăn xếp jmp nhap Xuất ký tự ‘c’: 0FChthongbaoxuat: 100h mov ah,9 00 63 lea dx,msg2 00 62 int 21h 00 61 000hxuat: Xuất ký tự ‘b’: SS:SP  … pop ax 0FCh mov dl,al 0FCh mov ah,2 00 62 100h int 21h 00 ...

Tài liệu được xem nhiều: