Mình là người mới học Pic, mình từng dùng qua 89C51, đối chiếu qua thấy có nhiều chỗ khó hiểu. Đọc phần datasheet của pic16F877A, phần tổ chức bộ nhớ thấy nó có 4 Bank, nhưng tổ chức trên từng Bank khá lộn xộn (ý kiến chủ quan thui) không hiểu có dụng ý gì, có 1 số thanh ghi trùng lại. VD: PORTB có ở bank 0 và bank 3, PCLATH có cả ở 4 bank... Vậy lúc dùng mình thanh ghi trên bank nào cũng như nhau à? Nếu như nhau sao lại chia ra trên các bank như thế?
Các lệnh của Pic cũng dài dòng hơn, lại không mềm dẻo như 89C51. Cách gọi hàm còn có chuyện để ý coi bộ nhớ có sang trang chưa. Các ngắt tập trung vô 1 chỗ. Cảm nhận đầu tiên của mình là Pic tổ chức không hợp lí như 89

(nói xấu PIC nhiều quá, không biết có bị mắng cho không).
Mình nghĩ nếu lập trình pic bằng hợp ngữ có nên tạo một số lệnh thêm cho công việc dễ dàng hơn (bằng cách viết chương trình xử lí file asm). VD: lệnh mov porta,d'10' tự động chuyển thành movlw d'10' và movwf porta, tạo cách tự điều chỉnh khi gọi hàm ...