Tập lệnh asembly, tóm tắt chức năng
Ng i báo cáo: Tài li u: Ngày: 10/31/2005 BOOK03.02 Trang: oàn Hi p 1/47 BOOK no 03.02 G i n: oàn Hi p, DM , N i dung: TA, MT , www.picvietnam.com T p l nh PIC Midrange MICROSOFT WORD Tóm t t: H ng d n v t p l nh c a dòng PIC Midrange Các quy [nhãn] c c a ngôn ng MPASM L NH tham s 1, tham s M t dòng nh th c g i m t dòng l nh Ch ng trình MPASM c chia làm c t rõ ràng C t th nh t vi t nhãn, c t th hai vi t tên l nh mu n th c hi n mà s trình bày d i kia, c t th tham s th nh t c a l nh, c t th t tham s th hai c a l nh Gi a tham s th nh t tham s th cách m t d u ph y (,) Các c t c cách b ng nh t m t ký t TAB (kho ng tr ng r ng) dài c a kho ng tr ng có th c quy nh cho d nhìn v i ng i l p trình.Gi a c t th c t th t khơng c n có kho ng TAB Nh ng d dàng cho vi c c l i ch ng trình, v n nên dùng kho ng TAB gi a hai c t N u m c nh nh cài t MPLAB, ngh s d ng hình th c nh sau: [nhan] LENH thamso_2 ; thamso_1, :++++++++ :++++++++ :++++++++; ; tab - tab tab - tab tab - tab Chúng ta ph i vi t cho ch ng trình c vi t ph i phân bi t rõ thành t ng c t, v a p m t trình bày, d c l i ch ng trình 1.1 [nhãn] [nhãn] m t chu i ký t ánh d u m t i m ó ch ng trình, thay ph i ghi nh v trí ó b nh , thay v trí ó b ng m t [nhãn] [nhãn] th ng c g i l i b ng l nh GOTO ho c CALL M i câu l nh, có th có ho c khơng có [nhãn] Tuy nhiên, nên vi t cho s [nhãn] nh t tránh s l m l n r i m t l p trình Ng i báo cáo: Ngày: t Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 2/47 [nhãn] c vi t c t th nh t c a dịng l nh [nhãn] khơng c b t u b ng ký c bi t nh : *,&, kho ng tr ng, s (0,1,2…)… Gi a ký t c a nhãn c ng khơng c có ký t c bi t *,^, kho ng tr ng,… dài c a m t [nhãn] không gi i h n, nhiên, ph i vi t cho [nhãn] n m c t th nh t c a dòng l nh, dài nhãn v a ph i d quan sát, thông tin g i nh thu n ti n l p trình Chúng ta hồn tồn có th ký hi u [nhãn] NHAN_1, NHAN_2… nh ng n i dung thông tin c a nhãn không th hi n công vi c s c th c hi n, nh v y s r t khó nh l p trình, nh t ch ng trình c a b n dài có n hàng ch c hàng tr m nhãn ch ng trình Ví d : nhãn úng nhãn sai HELLO nhãn úng hello nhãn úng good_bye nhãn úng goodbye_1 nhãn úng 2_hello nhãn sai (b t good^bye nhãn sai (có ký t bon jour nhãn sai (có kho ng tr ng nhãn) welcome nhãn sai (b t 1.2 u b ng m t s ) c bi t nhãn) u nhãn b ng ký t tr ng) L NH tham s : L NH tên c a l nh g i nh c li t kê theo b ng ch ABC bên d i L NH c vi t vào c t th hai, m i dòng l nh ph i có tên L NH, n u khơng có s khơng bi t dịng l nh ó làm vi c L NH th hi n cơng vi c ph i làm c a dịng l nh Tùy theo L NH mà có th có tham s tham s 2, ho c ch có tham s 1, ho c khơng có tham s h t Trong m t dòng l nh, ph i vi t tham s c a L NH ó T p l nh c cung c p phía cu i ch l nh ph n gi i b n d th g p làm ơi, th chúng tơi dán lên tr c bàn làm vi c v a c ph tra c u ng Ý nh c a chúng tơi trình bày song song t p i chi u, so sánh, nhiên, t gi y cu n sách không ngh b n photo ho c in thêm m t b ng t p l nh n v a so sánh, l p trình có th d dàng Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 3/47 Ví d : tham s c a m t L NH L nh có tham s : [nhãn] ADDWF F, [nhãn] BTFSS F, d b L nh có tham s : [nhãn] CLRF F [nhãn] ADDLW k L nh khơng có tham s : [nhãn] NOP [nhãn] RETURN [nhãn] SLEEP 1.3 Quy c kí hi u: W = Working register: ghi W F = File register: ghi F d = destination ( ích): n u d=0, k t qu c t vào W N u d=1, k t qu c t vào F k = Literal value: s bit ho c m t b = bit address : a ch b nh ch ng trình 11 bit a ch c a bit byte ( ghi) ó 1.3.1 Thanh ghi W: Chúng ta th y r ng, b n ch t c a dòng l nh c th c hi n máy tính phép toán c thao tác ghi Do v y, b t k m t câu l nh c ng s th c hi n m t phép tốn ó, k t qu c a phép tốn ó ph i c s d ng cho l nh ti p theo, n u không dịng l nh ó tr nên m t dịng l nh vô ngh a Ngo i tr l nh NOP l nh không th c hi n thao tác t n i m t chu k máy, nh ng có tác d ng cân b ng th i gian th c hi n o n ch ng trình t ng ng Chúng ta s nói v vi c cân b ng th i gian th c hi n ch ng trình b ng l nh NOP ph n v gi i thu t l p trình phía sau V n chúng tơi c p ây, ó vi c tính tốn s c x y nh th bên vi i u n N u b n ng i ã h c l p trình Pascal, C, ho c ngôn ng c p cao khác, b n s th y r ng th c hi n phép toán c ng hai bi n b c, sau ó gán vào bi n a, b n có th làm m t cách tr c ti p nh sau: Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 4/47 a: = b + c; Tuy nhiên, vi c i v i PIC không th th c hi n c, mà ph i th c hi n theo t ng b c nh sau, chuy n b vào ghi W, sau ó l y W c ng v i c, r i gán l i vào ghi W, sau ó m i chuy n k t qu vào a Công vi c c th c hi n b ng m t chu i l nh sau: CONG MOVF b, W ; W := b ADDWF c, W ; W := W + c MOVWF a ; a := W Nh v y, ây, PIC ch cho phép m t th i i m t ng tác v i ghi (hay m t bi n) N u c n có s t ng tác gi a hai hay nhi u ghi, ph i thông qua ghi W nh m t ghi m Chính v y, c có m t l nh t ng tác v i ghi, d ng nh s có m t l nh t ng ng t ng tác v i ghi W Ví d : t p l nh t ng tác ghi W ADDLW: W = W +k ADDWF: d = W + F ANDLW: W = W and k ANDWF: d = W and F CLRW: xóa ghi W CLRF: xóa ghi F IORLW: W = W or k IORWF: d = W or F MOVLW: W = k MOVF: d = F MOVWF: F = W SUBLW: W = k – W SUBWF: d = F – W XORLW: W = W xor k XORWF: d = W xor F 1.3.2 ích d: Ngồi ra, b n có th th y r ng d ch có th 0, ho c Khi d = 0, có ngh a k t qu l i c l u vào ghi W Nh v y, ghi W v a có th coi m t ghi t m, l i v a có th coi m t ghi ho t ng liên t c trình ch y ch ng trình c a b n B n c ng luôn nh r ng t i m i th i i m th c hi n m t dòng l nh, ch c phép thao tác v i m t ghi nh t, (ho c) ghi W Khơng có m t l nh cho phép t ng tác v i hai ghi khác mà m t hai ghi ó khơng ph i ghi W i u th hai c n ghi nh , ó c có m t l nh t ng tác v i ghi W, s có m t l nh t ng Ng i báo cáo: Tài li u: Ngày: 10/31/2005 BOOK03.02 Trang: oàn Hi p 5/47 ng t ng tác v i ghi (bi n) F i u ng c l i không úng Nh ng n u có m t l nh t ng tác v i ghi F, k t qu u có th c ghi vào ghi W ho c ghi F Hãy ý t i c t bên ph i c a b ng d ( ích) có th ghi W ho c ghi F L u ý: Chúng ta hịan tồn có th thay th d t trình d ch MPASM cho phép ghi nh v y Ví d : hai câu l nh t ng ng ng v i W F d nh Ch ng ng TANG_1 INCF BIEN_1, TANG_1 INCF BIEN_1, F C hai câu l nh u t ng BIEN_1 lên n v c t giá tr t ng lên ó vào l i BIEN_1 N u vi t b ng Pascal, câu l nh s nh sau : BIEN_1 : = BIEN_1 + ; 1.3.3 a ch bit b: i u s quan tâm ây tham s b Tham s b ch xu t hi n l nh t ng tác bit : BCF, BSF, BTFSS, BTFSC Tham s ch có giá tr 0, 1, 2, 3, 4, 5, 6, Ngoài không th mang b t k m t giá tr khác Vì nh v y ? Vì ang làm vi c v i vi i u n PIC bit, có ngh a d li u c tính tốn vi i u n ch có bit c ánh s nh sau : Thanh ghi F : Bit Bit Bit Bit Bit Bit Bit Chính v y, ch s b v trí bit, ch có th mang giá tr t d sau : Ví d : Quan sát ghi [nhãn] BCF c A, n Các b n xem ví t tên A có giá tr 10110110 ; xóa bit c a ghi A Sau th c hi n l nh này, ghi A s có giá tr : 10010110 [nhãn] BSF A, ; b t bit c a ghi A Sau th c hi n l nh này, ghi A s có giá tr : 11010110 Bit Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: ồn Hi p 6/47 1.3.4 Chú thích: À, m t i u n a xu t hi n, ó b n th y sau chúng tơi vi t dịng l nh ví d ây, phía bên ph i, chúng tơi ánh d u « ; » vi t m t s ghi cho câu l nh ây m t chu n úng ch không ph i vi t thích cho cu n sách mà vi t thêm vào MPASM c ng nh ngôn ng l p trình khác, cho phép ng i l p trình vi t thích cho m i dịng l nh ho c m t o n dòng l nh sau d ki m tra, s a ch a, ho c giúp cho ng i khác có th c c d dàng h n n i dung vi t T t c thích u ph i n m m t dòng n m sau d u ch m ph y dịng ó N u thích dài h n m t dịng ph i có d u ch m ph y u dịng bên d i Ví d : ; ; Chúng ta th c hi n m t ví d tính tốn ; theo cơng th c a : = b + c ; b ng ngôn ng MPASM ; CONG MOVF b, W ; chuy n giá tr t ghi b vào W ADDWF c, W ; c ng giá tr W c, ghi l i vào W MOVWF a ; ghi giá tr t ng vào a ; t i ph i làm th này? ; t i khơng th làm khác! ; ; K t thúc tính tốn ; T t c thích, ký t b t k ngh a i v i ch ng trình d ch, ch sau d u ch m ph y dịng ó c vi t phía sau d u “;” m t dịng u vơ ng trình d ch s khơng d ch t t c nh ng n m phía V n n y sinh v i vi c vi t thích ó ph i vi t v a có th d dàng ki m tra l i sau này, không vi t nhi u s ph i m t nhi u th i gian vi t thích h n vi t l nh th c thi Ch ng h n ví d v vi c vi t thích nh th a, không c n ph i vi t nhi u nh th Hãy th vi t th sao? CONG MOVF b, W ADDWF c, W MOVWF a ; a := b + c Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 7/47 Ch n gi n nh v y thôi, b n s m t công vi t thích, s cung c p n i dung cho b n b n c l i ch ng trình Vi t thích theo nh cu n sách T h c Visual C++ 21 ngày c ng m t ngh thu t Vì v y, b n c ng nên t p vi t thích cho hi u qu i v i MPASM Trong trình th c hi n t p, s c g ng truy n cho b n ý t ng vi t thích, chúng tơi mong b n ti p nh n nó, s d ng s có m t h th ng vi t thích, t ó v sau s d c hi u h n Cu i cùng, a m t vài s th ng kê mà có th s giúp ích cho b n d hình dung trình h c t p l nh c a PIC T ng c ng dịng PIC Mid Range có 35 l nh M i l nh th ng chi m chu k máy, tr l nh v i u n tr ch ng trình Có 16 l nh t ng tác byte (bao g m ghi F b t k ghi W), ch có l nh t ng tác bit 15 l nh i u n dài mã l nh chu k máy Nh n th y m t th c t r ng, b n sinh viên m i làm quen v i vi i u n th ng l m l n v hai khái ni m s chu k máy th c hi n l nh dài mã l nh Do ó, ph n này, ch c g ng gi i thích s qua b n có th phân bi t hai v n th t rõ ràng 2.1 Chu k máy Xuyên su t t p tài li u này, ch mu n h ng d n b n m t cách t o dao ng cho PIC b ng th ch anh b i nh ng cách t o dao ng khác u có s n datasheet (ch a vi t xong) 2.2 dài mã l nh dài mã l nh c a dòng PIC midrange 14 bit 13 12 11 10 c ánh s nh sau: Hình 1: Mã l nh c a dịng PIC midrange C ng nh ã nói trên, t p l nh PIC midrange có th c chia thành lo i ch y u, l nh t ng tác byte, l nh t ng tác bit l nh i u n S khác c a l nh gì? Các b n ý r ng, v i l nh t ng tác byte, ln có thơng s F d, ó F a ch ghi, hay nói ng n g n ghi, d bit ch n xem k t qu c Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 8/47 l u ng c l i vào F hay l u W Trong ó, l nh t ng tác bit c n có bit c a bit m t ghi ó (t n 7, ngh a t 000 n 111) mã hố v trí V i l nh i u n tính tốn, có giá tr bit k (t l nh c bi t CALL GOTO giá tr k 11 bit (t n 2047) n 255), hai Chúng ta s xem xét cách t ch c mã l nh c a dòng PIC midrange 2.2.1 Các l nh t 13 12 11 m c d i ây ng tác byte 10 OPCODE d a ch c a F b nh Hình 2: Mã l nh c a l nh t ng tác byte Các b n ý m t i u r ng, a ch c a m t ghi, ch có bit thôi, n m t bit n bit M i ghi m c dù có bit, nh ng a ch c a ch có bit Ph n OPCODE ây gì? Chính ph n mã hoá c l nh mà vi t nh ADDWF, ANDWF,… Khi vi t nh th này, vi t b ng mã g i nh , ó, vi i u n hi u l nh d i d ng bit Vì v y, ph i c mã hoá vi i u n hi u M t i m l u ý i v i l nh t ng tác byte, ph n mã hố c a dài bit, n m t bit n bit 13 Trong ó, bit12 – bit13 = 00 (nh hình 2.2) K t qu , th y r ng, ph n OPCODE có bit, nh ng hai bit u tiên ã 00, v y, ch cịn l i bit phân bi t l nh v i ch có t i a 16 l nh t ng tác byte 2.2.2 Các l nh t 13 12 11 10 OPCODE ng tác bit b b b Hình 3: Mã l nh c a l nh t a ch c a F b nh ng tác bit T ng t nh trên, bit quy nh a ch c a ghi F l nh t ng tác bit bit, n m t bit n bit Các bit n m t bit n bit dùng quy nh v trí c a bit t n ghi (ngh a t 000 n 111) Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 9/47 Ph n OPCODE c a l nh t ng tác bit có mã hoá b t u b ng 01 ng v i bit 12 13 Chính v y, ph n l i phân bi t l nh mã hố ch cịn l i bit, nên ch có th mã hố c l nh Do ó, th y r ng ch có l nh t ng tác bit BCF, BSF, BTFSC BTFSS 2.2.3 Các l nh i u n 13 12 11 10 OPCODE k (8 bit) Hình 3: Mã l nh c a l nh i u n Chúng ta th y r ng, mã l nh c a l nh i u n c ng ch có bit, bit cịn l i dành cho ph n giá tr k nh p vào Khác v i l nh t ng tác byte có bit dùng ch m t ghi bit d dùng ch n v trí ích c a phép tính c a ch Hai bit 12 13 c a nhóm l nh c m c nh 11 Ph n OPCODE bit ch l i bit phân bi t l nh nhóm Tuy nhiên, nhóm l nh này, ng i ta không dùng h t 16 l nh mà ch dùng l nh là: ADDLW, ANDLW, IORLW, MOVLW, SUBLW XORLW 2.2.4 L nh GOTO CALL 13 12 11 10 0 CALL k (11 bit) 1 GOTO k(11 bit) Hình 4: Mã l nh c a l nh CALL GOTO Hai l nh hai l nh trí c n nh y t i (k) c bi t, ph n OPCODE ch có bit, cịn l i 11 bit 2.2.5 Các l nh i u n a ch c a v c bi t Các l nh i u n c bi t, l nh không t ng tác v i ghi có b nh d li u, bao g m l nh: CLRWDT, NOP, RETURN, RETFIE, SLEEP a ch Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 10/47 Các l nh khơng ch a ghi mã l nh, nên ph n 000000 (6 bit t bit 13 n bit u 0) Nh hình sau: 13 12 11 10 0 0 0 Ph n mã hố Hình 5: Mã l nh c a l nh i u n u OPCODE c a s 12 11 10 0 0 0 phân bi t l nh c bi t V y m t i u làm th c m c là, l nh phân bi t MOVWF, l nh MOVWF c ng có ph n OPCODE 00 0000 nh sau: 13 c v i l nh a ch c a F b nh Hình 6: Mã l nh c a l nh MOVWF Các b n l u ý r ng l nh MOVWF ích t i ghi k t qu s F, ó v trí bit d (bit 7) s Trong ó, l nh i u n c bi t, mã l nh c a t i v trí bit s Nh v y, l nh c mã hoá m t cách hoàn toàn Trong ph n ti p theo c a ch ng này, s c p n t ng l nh cách s d ng l nh Tuy nhiên, không nh c l i c th mã l nh c a t ng l nh, b i thi t ngh r ng khơng c n thi t n a m c ích c a chúng tơi vi t cu n sách h ng d n c b n, ch không i sâu vào v n nghiên c u mã code phát tri n sâu v PIC 2.3 S chu k c a m t l nh: (ch a vi t xong) Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] MOVF F, BOOK03.02 Trang: oàn Hi p 33/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] MOVWF F, BOOK03.02 Trang: oàn Hi p 34/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] BOOK03.02 Trang: oàn Hi p 35/47 NOP ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] BOOK03.02 Trang: oàn Hi p 36/47 RETFIE ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] RETLW BOOK03.02 Trang: oàn Hi p 37/47 k ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] BOOK03.02 Trang: oàn Hi p 38/47 RETURN ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] RLF F, BOOK03.02 Trang: oàn Hi p 39/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] RRF F, BOOK03.02 Trang: oàn Hi p 40/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] BOOK03.02 Trang: oàn Hi p 41/47 SLEEP ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] SUBLW BOOK03.02 Trang: oàn Hi p 42/47 k ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] SUBWF F, BOOK03.02 Trang: oàn Hi p 43/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] XORLW BOOK03.02 Trang: oàn Hi p 44/47 k ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 [nhãn] XORWF F, BOOK03.02 Trang: oàn Hi p 45/47 d ; N i dung c a ghi W ; c c ng v i s bit k, ; k t qu c c t l i vào W Th c hi n l nh: W = W + k Các bit tr ng thái b nh h k ch có th s có giá tr t ng: C, DC, Z ng ng m t s th p phân t n 255 =? =? Ví d : Ban u: W = 200 C CONG_1 ADDLW K t qu : W DC d’50’ = 250 C =? Z ; W = 200 + 50 = DC = Z = N u bây gi ti p t c th c hi n phép c ng nh sau CONG_2 ADDLW d’20’ K t qu : W C Ghi chú: = 14 ; W = 250 + 20 = DC = Z = Ng i báo cáo: Ngày: Tài li u: 10/31/2005 T ng k t ch Qua ch 46/47 ng ng này, b n ã h c c nh ng v n C u trúc c a m t l nh MPASM Quy t c BOOK03.02 Trang: oàn Hi p sau: c vi t nh th cách ghi thích t [nhãn] Các l nh chi ti t c th c a dòng PIC midrange, tham s c a t ng l nh Ki n th c v mã l nh, dài mã l nh, chu k máy… Tóm l i, qua h c này, b n ã có ki n th c l p trình cho m t vi i u n PIC, v i tác v n gi n, có th th c hi n m t s thu t tốn tính tốn v i vi i u n Nh v y, nh ng t p cu i ch ng s giúp b n ôn t p m t cách nhanh chóng nh ng ã h c c M tv n quan tr ng mà b n c n ph i nh , ó vi c vi t ch ng trình cho th t rõ ràng, nhìn d ch u, b i ch ng trình vi t b ng MPASM nh th th ng r t dài, n u khơng b trí h p lý, ch ng trình c a b n s r t khó coi s tr nên r i r m Vi c vi t thích c ng có th làm r i ch ng trình n u thích q nhi u Chính v y, ph n “C u trúc m t ch ng trình MPASM”, chúng tơi s trình bày chi ti t h n v m t chu n ch ng trình mà chúng tơi cho r ng h p lý, ng th i c ng kinh nghi m c a nh ng ng i l p trình lâu n m v i PIC h ng d n Trong ph n này, ch nêu m t s y u t , b n làm nh ng t p c b n, b n làm quen d n d n thói quen s khơng khó kh n cho b n vi t nh ng ch ng trình l n: c t1t ng ng ký t TAB c t2t ng ng ký t TAB c t3t ng ng ký t TAB c t4t ng ng ký t TAB thích c vi t cách c t kho ng n ký t TAB Nhãn, L nh, tham s vi t b ng ch IN HOA Chú thích vi t b ng ch th ng, ti ng Vi t, không d u Ví d : | ký t TAB | TAB | TAB NHAN_1 ADDLW b’10101010’ NHAN_2 ADDWF REG_1, | TAB | TAB | ; chu thich F ; phep cong Ng i báo cáo: Ngày: Tài li u: 10/31/2005 BOOK03.02 Trang: oàn Hi p 47/47 Bài t p 1: phép c ng cho bi n byte Cho bi n A g m A2 A1 byte ghi B B2 B1 g m byte Các b n th c hi n m t o n ch ng trình tính t ng c a A + B l u vào ghi C g m byte , C3 C2 C1 ó A1, A2, B1, B2 byte mang giá tr b tk Bài t p 2: th c hi n vòng l p ki m tra i u ki n l p Th c hi n vịng l p c trình bày b ng ngôn ng Pascal sau b ng ngôn ng MPASM: A: = 0; B: = 0; For I := to 100 Begin A: = A + 1; B: = B + 2; End; Trong ó A, B, I ghi (hay bi n) bit thông th ng Bài t p 3: ki m tra i u ki n, phép tr l nh GOTO Cho A B hai ghi bit b t k Ki m tra i u ki n A > B nh y v NHAN_1, n u A = B nh y v NHAN_2, n u A < B nh y v NHAN_3 If (A>B) then goto NHAN_1 Else If (A=B) then goto NHAN_2 Else goto NHAN_3; Bài t p 4: t ng tác bit d ch bit Cho ghi A có giá tr b t k , ghi B có giá tr ban u b t k B t u o n l nh, cho B = D ch n i dung ghi A sang trái t ng bit m t N u bit b d ch i ghi A t ng ghi B lên m t n v N u bit b d ch i tr ghi B i m t n v Th c hi n vi c cho h t bit c a ghi A Th c hi n ti p vi c b t t t bit c a ghi B N u s bit mang giá tr c a ghi A nhi u h n s bit mang giá tr bit c a ghi B s mang giá tr 0, ng c l i Dùng bit u tiên c a ghi B (bit – bit – bit – bit 0) th hi n hi u s gi a s bit mang giá tr s bit mang giá tr ghi A ... t c th c a dòng PIC midrange, tham s c a t ng l nh Ki n th c v mã l nh, dài mã l nh, chu k máy… Tóm l i, qua h c này, b n ã có ki n th c l p trình cho m t vi i u n PIC, v i tác v n gi n, có th