View Single Post
Old 17-12-2006, 11:29 PM   #72
tranhuyky
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 39
:
Send a message via Yahoo to tranhuyky
cho em hỏi có cách nào hay hơn không

Trích:
Nguyên văn bởi namqn View Post
À, anh xem lướt qua nên không phát hiện lỗi ở lần đầu.

Phần khai báo của bạn friends dịch không có lỗi, nhưng chạy chương trình sẽ bị sai (vì các địa chỉ biến được đặt không đúng). Toàn bộ 4 biến đó đều sẽ có địa chi 0x20. Bạn friends cần phải chỉnh lại như sau thì mới có chương trình đúng:
Code:
Org 0x20
W_SAVE res 1
STAT_SV res 1
PCH_SV res 1
FSR_SV res 1
ORG 0X0000
Giải thích thêm về phần này. Directive org chỉ làm thay đổi bộ đếm địa chỉ của trình hợp dịch. Với đoạn code như trên, chúng ta sẽ có W_SAVE là nhãn ở địa chỉ 0x20, STAT_SV là nhãn ở địa chỉ 0x21, và cứ thế. Từ khóa res và giá trị 1 sẽ làm bộ đếm địa chỉ tăng 1 đơn vị. Cách này không hay vì các địa chỉ biến thực chất là địa chỉ của các nhãn được hiểu là sẽ được dùng làm đích của các lệnh chuyển điều khiển (hay nói cách khác chúng là các địa chỉ của các từ lệnh), nếu dùng chúng trong các PIC18 chẳng hạn thì sẽ bị sai (vì các từ lệnh cách nhau 2 byte, và PIC18 dùng địa chỉ byte).

Thân,
Theo lời bác namqn nói cách dùng org không hay nếu chuyển sang PIC18 thì sai, em cũng thử rồi, làm như vậy phải sửa lại nhiều. Xin hỏi các bác có cách nào hay hơn không? cảm ơn các bác.
tranhuyky vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn