View Single Post
Old 29-09-2007, 03:19 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Lệnh goto không lưu vào stack (TOS = Top Of Stack). Lệnh goto chỉ ảnh hưởng tới PC.

Quản lý TOS chỉ ảnh hưởng khi mà bạn viết bằng MPASM, còn nếu bạn viết bằng C thì tự động giải thuật sẽ xử lý các vòng lặp cho bạn, và gần như các vòng lặp trong ngôn ngữ cấp cao chỉ là vòng lặp về mặt thuật toán, nó không ảnh hưởng tới TOS vì những nhà lập trình đã phải xử lý vấn đề này. Họ xử lý như thế nào thì F cũng không rõ, vì mỗi trình dịch và ngôn ngữ đều khác nhau.

Còn trong MPASM, thực chất khi nhảy vào ngắt thì khi có ngắt chúng ta sẽ lập tức khoá ngắt, không cho ngắt xảy ra đồng thời, vào trước ra trước, nếu ngắt đồng thời thì xử lý ưu tiên. Đó là cách xử lý thông dụng nhất. Do vậy, ngắt chỉ tốn 1 ngăn. Như vậy trong chương trình, còn lại 7 ngăn. Nguyên tắc của 7 ngăn chỉ ảnh hưởng bởi lệnh Call. Như vậy nếu bạn viết lệnh Call, thì bạn nhớ ghi chú vào đó là Call cấp mấy. Nếu bạn dùng tới Call cấp 7 lồng nhau, thì như vậy bạn rất có nguy cơ bị tràn stack.

Ngoài ra, không thể lường trước hết mọi tình huống như vòng lặp xoay vòng, tràn TOS, hoặc các ảnh hưởng nhiễu, chúng ta có công cụ WDT (Watch Dog Timer) để quản lý các trường hợp này.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn