View Single Post
Old 21-04-2006, 01:08 PM   #69
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Một số vấn đề về các thông báo, cảnh báo và lỗi khi biên dịch dùng MPASM. Mấy cái này, trong mấy cái Tutorial, mình đã rất cẩn trọng khi viết, để tránh được những thông báo không cần thiết của trình biên dịch, nhưng chắc có một số bạn không để ý.

Trích:
Error[122] : Illegal opcode (_cp_off)
Cái "config" phải có tới hai dấu gạch ở đằng trước nó lận. Viết như thế này nó mới hiểu "__config". Nếu chỉ có một dấu gạch ở đằng trước, trình biên dịch sẽ không hiểu được đó là một derective, mà chỉ hiểu là một cái label bình thường.

Trích:
Warning[207]: Found label after column 1. (_config)
Do trình biên dịch chỉ hiểu cái derective "_config" của bạn là một label khi bạn viết sai, nên mới xuất hiện thông báo này. Các label phải được đặt ở cột đầu tiên khi soạn thảo các file asm. Khi đó các thông báo tương tự sẽ không xuất hiện nữa.

Trích:
Warning[205]: Found directive in column 1. (end)
Các lệnh phải được đặt ở các cột tiếp theo, mà không viết ở đầu hàng như các label. Nếu bạn cho lệnh "END" thụt vào bên trong hàng đầu tiên (trở về đầu dòng và nhấn "tab" một cái cho cái lệnh "END" nó thụt vô bên trong, khi đó, nếu biên dịch lại, dòng thông báo này sẽ không xuất hiện nữa. Các lệnh khác cũng vậy, bạn nên viết thụt vào trong một cột.

Trích:
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
Đây không phải là một thông báo lỗi, mà chỉ là một cảnh báo để bạn xem lại việc truy xuất thanh ghi đó có nằm trong bank hiện hành hay không. Trình biên dịch không kiểm tra các thao tác này cho bạn, mà chỉ đưa ra một thông báo như vậy để bạn kiểm tra lại thôi. Xin nhắc lại, đây không phải là một thông báo lỗi. Bằng chứng là, mặc dù các thông báo này xuất hiện rất nhiều khi biên dịch, nhưng nếu không có lỗi nào khác ngoài các thông báo này, thì việc build vẫn "success".

Trong chương trình của bạn, bạn truy xuất thanh ghi TRISB ở BANK 1 trong khi vẫn đang ở BANK 0. Như vậy là không đúng, và giả sử, không còn lỗi nào khác, thì trình biên dịch vẫn báo "build success", nhưng chương trình khi thực thi sẽ không đúng. Phải sửa dòng lệnh 00013 thành "bsf STATUS,RP0" mới đúng.

Trích:
Error[122] : Illegal opcode (_cp_off)
Phải có thêm dấu "&" ở đằng trước mới được.

Vạn sự khởi đầu nan hả.

Như vậy, có một số điểm cần lưu ý khi soạn thảo chương trình asm cho trình biên dịch MPASM như sau:

Các label nên được viết ở cột đầu tiên của trình soạn thảo. Như vậy các cảnh báo "warning[207]" sẽ không xuất hiện khi biên dịch.

Các lệnh, kể cả lệnh END nên được viết ở các cột tiếp theo (nên cách một khoảng tab từ đầu dòng rồi viết lệnh). Khi đó các "warning[205]" sẽ không xuất hiện khi biên dịch.

Các thông báo (message) và cảnh báo (warning) không phải là lỗi. Trình biên dịch chỉ đưa ra các thông điệp này để lưu ý bạn rằng các chỗ này đã được kiểm tra chưa, đã bảo đảm đúng hay chưa, và không gây ảnh hưởng đến việc build chương trình có "successed" hay "failed".

Các thông báo lỗi (error) mới là những lỗi thực sự. Nếu không sửa lại cho đúng thì biên dịch không thành công (failed).

Vậy đó.

__________________


thay đổi nội dung bởi: ntc, 22-04-2006 lúc 12:00 PM.
ntc vẫn chưa có mặt trong diễn đàn