Professional Documents
Culture Documents
STACK &
CHƯƠNG TRÌNH CON
SS dùng để lưu địa chỉ segemnt của đoạn bộ nhớ dùng làm STACK
SP để lưu địa chỉ của ô nhớ đỉnh STACK (trỏ tới đỉnh STACK)
; Nhập chuỗi kí tự
Khởi động bộ đếm
Đọc một kí tự
WHILE kí tự <> 13 DO
Cất kí tự vào STACK
Tăng biến đếm
Đọc một kí tự
END_WHILE
; Hiển thị đảo ngược
FOR biến đếm lần DO
Lấy một kí tự từ STACK
Hiển thị nó
END_FOR
Chương 10: CHƯƠNG TRÌNH CON 10
GiỚI THIỆU CHƯƠNG TRÌNH CON
Lợi ích
CTC làm cho cấu trúc logic của của CT dễ
kiểm soát hơn, dễ tìm sai sót hơn và có thể
tái sử dụng mã tiết kiệm được công sức
và thời gian lập trình.
Chương 10: CHƯƠNG TRÌNH CON 11
CẤU TRÚC CỦA CTCON
.DATA
EXTRN MemVar : WORD, Array1 : BYTE , ArrLength :ABS
…
.CODE
EXTRN NearProc : NEAR , FarProc : FAR
….
MOV AX,MemVar
MOV BX, OFFSET Array1
MOV CX, ArrLength
…
CALL NearProc
….
CALL FarProc
…..
BYTE
DATAPTR
WORD NEAR
DWORD FAR
PROC
Chương 10: CHƯƠNG TRÌNH CON 17
GLOBAL
Viết chương trình nằm trên 2 file (2 module) với sự phân công như
sau :
Module của chương trình chính (Main.ASM) có nhiệm vụ xác định
Offset của 2 chuổi ký tự và gọi CTC nối 2 chuổi này và cho hiện kết
quả ra màn hình.
Module CTC (Sub.ASM) làm nhiệm vụ nối 2 chuổi và đưa vào bộ
nhớ.
Bài 2 :Viết chương trình nhap vao 1 chuổi ky tu. Hay in ra man hinh
chuổi ky tu vua nhap theo thứ tự đảo (trong mỗi từ đảo từng ký tự).
Bài 3 :Viết chương trình kiểm tra một biểu thức đại số có chứa các dấu
ngoặc (như (), [] và {}) là hợp lệ hay không hợp lệ .
Ví dụ : (a + [b – { c * ( d – e ) } ] + f) là hợp lệ nhưng (a + [b – { c * ( d – e )] }
+ f) không hợp lệ.
HD : dùng ngăn xếp để PUSH các dấu ngoặc trái ( ‘(‘, ’{‘, ‘[‘ ) vào Stack
Ex :
Nhập : ngo phuoc nguyen
Xuất : Ngo Phuoc Nguyen
Nhập : VU tHanh hIEn
Xuất : Vu Thanh Hien
Bài 7 : Viết chương trình tìm số hoàn thiện (giới hạn 2 chữ
số). Xuất các số hoàn thiện từ số lớn nhất đến số nhỏ.