![]() |
Làm sao để viết chương trình MPASM đúng
to namqn
tôi có một vài điều không hiểu xin nhờ bạn chỉ giúp giả sử tôi có một doạn chương trình: Code:
|
câu hỏi 1
khi tôi viết xong đến chương trình con chtr_goto2
lúc đó các chương trình of_goto , table1 , table2 đã viết xong Khi kiểm tra thực hành thì nó chạy chtr_goto2 call of_goto ... call table2 ... goto exit_chtr_call1 chtr_goto3 goto exit_chtr_call1 chtr_goto4 goto exit_chtr_call1 nhưng khi viết xong đến chtr_goto3 khi kiểm tra thì nó chỉ chạy tới chtr_goto2 nhưng khi tôi xóa nội dung của chtr_goto2 thì khi kiểm tra thì nó chỉ chạy tới chtr_goto3 xem trong File *.list thì thấy toàn bộ chương trình chưa hết PAGE0 |
Thử phân tích hàm main của bạn thì sẽ rõ:
Main->chtr_call1 Giả sử điều kiện 1 thoả mãn thì sẽ chạy tiếp: Main->chtr_call1->chtr_goto1->[gọi hàm of_goto,table1 rồi trở lại ] -> exit_chtr_call1 Cái exit_chtr_call1 sẽ làm cho chương trình chạy tiếp lệnh call chtr_call2 (dòng thứ 2 của hàm main) Do vậy đương nhiên nó sẽ không chạy đến chtr_goto2 hay chtr_goto3. Cũng theo logic phân tích như vậy nếu như chương trình chạy xong chtr_goto2 thì sẽ không nhảy tới chtr_goto3, trừ khi bạn xoá nội dung của chtr_goto2 đi thì nó mới chạy chtr_goto3. Cuối cùng thì mình không hiểu ý bạn muốn chương trình phải chạy như thế nào mới đúng vì bạn hỏi không rõ ràng. |
Gửi bạn phamthanhkhuyen:
Câu hỏi 1 của bạn chưa rõ ràng lắm. Với chương trình loại này, trước hết bạn cho biết bạn muốn làm gì, và vẽ lưu đồ giải thuật ra. Dựa vào lưu đồ giải thuật đó, bạn hiện thực các cấu trúc điều khiển đó. Như vậy bạn sẽ ít gặp sai sót hơn. Với một chương trình tương đối phức tạp như bạn đang viết, rất khó cho người đọc chỉ nhìn vào code mà hiểu được thuật toán. Điểm quan trọng là thuật toán của bạn rõ ràng. Nếu bạn gặp khó khăn trong việc chuyển thuật toán thành các lệnh thì chúng tôi có thể giúp, còn nếu bạn không cho biết thuật toán thì quả thực rất khó giúp bạn. Thân, |
to namqn
đúng là thiếu sót, thuật toán sẽ đưa lên sau to Jerry đúng ra tôi hơi sơ ý vì muốn cô động vấn đề nên thành ra khó hiểu đúng ra còn 1 chương trình con Chtr_call0 đây là chương trình đưa ra điều kiện để Chtr_call1 so sánh và nó chỉ chạy cho 1 điều kiện được thỏa Cái tôi muốn các bạn giải thích là vị trí của các đoạn chương trình khi ở vị trí khác nhau thì chương trình lạl không chạy đúng ví dụ Bây giờ giả sử chương trình đang chạy tốt khi tôi hoán đổi vị trí 2 chương trình con thì nó lạl chạy sai đây là doạn chương trình đã bị hoán đổi chtr_goto3 goto exit_chtr_call1 chtr_goto2 call of_goto ... call table2 ... goto exit_chtr_call1 chtr_goto4 goto exit_chtr_call1 |
Múi giờ GMT. Hiện tại là 05:51 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam