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
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 ...
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ìm kiếm theo từ khóa liên quan:
ngôn ngữ lập trình Assembly cơ chế hoạt động của ngăn xếp cách sử dụng macro cách gọi thủ tục cách tạo MacroGợi ý tài liệu liên quan:
-
Bài giảng Vi điều khiển: Chapter 2 - Ngô Như Khoa
23 trang 16 0 0 -
Bài giảng Vi điều khiển: Chapter 3 - Ngô Như Khoa
21 trang 15 0 0 -
Ngôn ngữ lập trình Assembly - Nguyễn Tiến Duy
130 trang 15 0 0 -
Bài thực hành số 7: Lập trình màn hình
4 trang 13 0 0 -
Giáo trình Ngôn ngữ lập trình Assembly (dùng trong các trường THCN): Phần 1
74 trang 13 0 0 -
Bài thực hành số 6: Lập trình bàn phím
5 trang 13 0 0 -
Bài thực hành số 4: Làm việc với số nguyên
2 trang 12 0 0 -
Bài thực hành số 2: Lệnh so sánh – Lệnh nhảy – Lệnh lặp
7 trang 12 0 0 -
Bài giảng MS Access 2003: Chương 6 - Macro - Tập lệnh
10 trang 7 0 0 -
Giáo trình Ngôn ngữ lập trình Assembly (dùng trong các trường THCN): Phần 2
51 trang 6 0 0