1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tập lệnh asembly, tóm tắt chức năng

47 364 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tập lệnh assembly, tóm tắt chức năng
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật Máy tính
Thể loại Báo cáo
Năm xuất bản 2005
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 47
Dung lượng 404,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tập lệnh asembly, tóm tắt chức năng

Trang 1

BOOK n o 03.02

G i đ n: Đoàn Hi p, DMĐ, ĐTA, MTĐ, www.picvietnam.com

N i dung: T p l nh PIC Midrange

s trình bày d i kia, c t th 3 là tham s th nh t c a l nh, c t th t là tham s th hai c a

l nh Gi a tham s th nh t và tham s th 2 luôn cách nhau m t d u ph y (,) Các c tđ ccách nhau b ng ít nh t m t ký t TAB (kho ng tr ng r ng).Đ dài c a kho ng tr ng này có

th đ c quy đ nh sao cho d nhìn v i ng i l p trình.Gi a c t th 3 và 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, chúng ta v n nên dùngkho ng TAB gi a hai c t này

N uđ m c đ nh nh khi cài đ t MPLAB, chúng tôi đ ngh s d ng hình th c nh sau:

tab - tab

[nhan] LENH thamso_1, thamso_2 :++++++++; :++++++++; :++++++++;

Chúng ta ph i vi t sao cho ch ng trìnhđ c vi t ph i phân bi t rõ thành t ng c t, v a

Trang 2

[nhãn] đ c vi t trong c t th nh t c a dòng l nh [nhãn] không đ c b t đ u b ng các ký

t đ c bi t nh : *,&, kho ng tr ng, các con s (0,1,2…)… Gi a các ký t c a nhãn cễng không

đ c có 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, tuy nhiên, chúng ta ph i vi t sao cho [nhãn] luôn

n m trong 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 và thu n ti n khi l p trình

Chúng ta hoàn toàn có th ký hi u các [nhãn] là 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ó nhkhi l p trình, nh t là khi ch ng trình c a các b n dài và cóđ n hàng ch c hàng trăm nhãntrong ch ng trình

2_hello nhãn sai (b t đ u b ng m t con s )

good^bye nhãn sai (có ký t đ c bi t trong nhãn)

bon jour nhãn sai (có kho ng tr ng trong nhãn)

welcome nhãn sai (b t đ u nhãn b ng ký t tr ng)

1.2 L NH và các tham s :

L NH là tên c a các l nh g i nh đ c li t kê theo b ng ch cái 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ó thì s không bi tdòng l nhđó làm vi c gì 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 1 và tham s 2, ho c ch có tham s 1, ho c không cótham s nào 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 ng Ý đ nh c a chúng tôi là trình bày song song t p

l nh và ph n chú gi i nàyđ các b n d đ i chi u, so sánh, tuy nhiên, t gi y cu n sách không

th g p làmđôi, chính vì th chúng tôi đ ngh các b n photo ho c in thêm m t b ng t p l nhdán lên tr c bàn làm vi cđ v a đ c ph n này v a so sánh, và khi l p trình có th d dàngtra c u

Trang 3

W = Working register: thanh ghi W.

F = File register: thanh 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: là s 8 bit ho c m t đ a ch trong b nh ch ng trình 11 bit

b = bit address : đ a ch c a bit trong 1 byte ( thanh ghi) nào đó.

1.3.1 Thanh ghi W:

Chúng ta th y r ng, b n ch t c a các dòng l nhđ c th c hi n trên máy tính là các phéptoánđ c thao tác trên các thanh ghi Do v y, b t k m t câu l nh nào cễng s th c hi n m tphép toán nàođó, và k t qu c a phép toán đó ph i đ c s d ng cho các l nh ti p theo, n ukhông dòng l nhđó tr nên m t dòng l nh vô nghĩa

Ngo i tr l nh NOP là l nh không th c hi n thao tác gì và t nđi m t chu k máy, nh ng

nó có tác d ngđ cân b ng th i gian th c hi n các đ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 trong các ph n v gi ithu t l p trình phía sau

V nđ chúng tôi đ c p đây, đó là vi c tính toán s đ c x y ra nh th nào bên trong vi

đi u khi n N u các b n là ng i đã h c l p trình Pascal, C, ho c các ngôn ng c p cao khác,các b n s th y r ng khi th c hi n phép toán c ng hai bi n b và c, sauđó gán vào bi n a, các

b n có th làm m t cách tr c ti p nh sau:

Trang 4

a: = b + c;

Tuy nhiên, vi c nàyđ i v i PIC không th th c hi n đ c, mà chúng ta ph i th c hi n theo

t ng b c nh sau, chuy n b vào thanh ghi W, sauđó l y W c ng v i c, r i gán l i vào thanhghi 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:

Nh v y, đây, PIC ch cho phép trong m t th i đi m t ng tác v i 1 thanh ghi (hay m t

bi n) N u c n có s t ng tác gi a hai hay nhi u thanh ghi, ph i thông qua thanh ghi W nh

là m t thanh ghiđ m Chính vì v y, c có m t l nh t ng tác v i thanh ghi, thì d ng nh s

có m t l nh t ng ng t ng tác v i thanh ghi W

Ví d :t p l nh t ng tác thanh ghi W

ANDLW: W = W and k ANDWF: d = W and F

CLRW: xóa thanh ghi W CLRF: xóa thanh ghi F

IORLW: W = W or k IORWF: d = W or F

MOVWF: F = WSUBLW: W = k – W SUBWF: d = F – W

XORLW: W = W xor k XORWF: d = W xor F

1.3.2 Đích d:

Ngoài ra, các b n có th th y r ng d ch có th là 0, ho c 1 Khi d = 0, có nghĩa là k t qu l i

đ c l u vào thanh ghi W Nh v y, thanh ghi W v a có th coi là m t thanh ghi t m, l i v a

có th coi là m t thanh ghi ho tđ ng liên t c trong quá trình ch y ch ng trình c a b n B ncễng luôn 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 thanh ghi duy nh t, và (ho c) thanh ghi W Không có m t l nh nào cho phép t ngtác v i hai thanh ghi khác nhau mà m t trong hai thanh ghiđó không ph i thanh ghi W Đi u

th hai c n ghi nh ,đó là c có m t l nh t ng tác v i thanh ghi W, thì s có m t l nh t ng

Trang 5

ng t ng tác v i thanh ghi (bi n) F.Đi u ng c l i không đúng Nh ng n u có m t l nh nào

t ng tác v i thanh ghi F, thì k t qu đ u có th đ c ghi vào thanh ghi W ho c thanh ghi F.Hãy chú ý t i c t bên ph i c a b ng trên d (đích) có th là thanh ghi W ho c thanh ghi F

L u ý: Chúng ta hòan toàn có th thay th d t ng ng v i 0 là W và 1 là F đ d nh Ch ng trình d ch MPASM cho phép ghi nh v y.

Ví d : hai câu l nh này là t ngđ ng

C hai câu l nh nàyđ u tăng BIEN_1 lên 1 đ n v 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 trên s nh sau :

BIEN_1 : = BIEN_1 + 1 ;

1.3.3 Đ a ch bit b:

Đi u chúng ta s quan tâm đây là tham s b trên Tham s b ch xu t hi n trong 4 l nh

t ng tác bit : BCF, BSF, BTFSS, BTFSC Tham s này ch có giá tr 0, 1, 2, 3, 4, 5, 6, 7 Ngoài rakhông th mang b t k m t giá tr nào khác Vì sao nh v y ? Vì chúng tađang làm vi c v i vi

đi u khi n PIC 8 bit, có nghĩa là d li u đ c tính toán trong vi đi u khi n ch có 8 bit và đ cđánh s nh sau :

Thanh ghi F :

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Chính vì v y, ch s b là v trí bit, cho nên ch có th mang giá tr t 0đ n 7 Các b n xem ví

d sau :

Ví d :Quan sát thanh ghiđ c đ t tên là A có giá tr 10110110

Sau khi th c hi n l nh này, thanh ghi A s có giá tr : 10010110

Sau khi th c hi n l nh này, thanh ghi A s có giá tr : 11010110

Trang 6

1.3.4 Chú thích:

À, và m tđi u n a xu t hi n, đó là các b n th y sau khi chúng tôi vi t dòng l nh ví d trênđây, phía bên ph i, chúng tôi đánh d u « ; » và vi t m t s ghi chú cho câu l nh Đây là m tchu nđúng ch không ph i chúng tôi vi t chú thích cho cu n sách mà vi t thêm vào

MPASM cễng nh các ngôn ng l p trình khác, cho phép ng i l p trình vi t chú thíchcho m i dòng l nh ho c m tđo n các dòng l nh đ sau này d ki m tra, s a ch a, ho c giúpcho ng i khác có th đ c đ c d dàng h n các n i dung mình vi t

T t c các chú thíchđ u ph i n m trên m t dòng và n m sau d u ch m ph y trên dòng đó

N u chú thích nào dài h n m t dòng thì ph i có d u ch m ph y đ u các dòng bên d i

CONG MOVF b, W ; chuy n giá tr t thanh ghi b vào W

ADDWF c, W ; c ng giá tr W và c, ghi l i vào W

V nđ n y sinh v i vi c vi t chú thích đó là ph i vi t làm sao v a đ đ có th d dàng

ki m tra l i sau này, và không vi t quá nhi u s ph i m t nhi u th i gian vi t chú thích h n là

vi t l nh th c thi Ch ng h n ví d v vi c vi t chú thích nh trên kia là quá th a, và chúng takhông c n ph i vi t quá nhi u nh th

Hãy th vi t th này thì sao?

Trang 7

Ch đ n gi n nh v y thôi, b n s đ m t công vi t chú thích, và s cung c p đ n i dungcho b n khi b nđ c l i ch ng trình Vi t chú thích theo nh trong cu n sách T h c VisualC++ trong 21 ngày cễng chính là m t ngh thu t Vì v y, các b n cễng nên t p vi t chú thíchcho hi u qu đ i v i MPASM Trong quá trình th c hi n các bài t p, chúng tôi s c g ngtruy n cho b n các ý t ng khi vi t chú thích, và chúng tôi mong các b n ti p nh n nó, và s

d ng nóđ chúng ta s có cùng m t h th ng vi t chú thích, t đó v sau chúng ta s d đ c

và hi u nhau h n

Cu i cùng, chúng tôiđ a ra m t vài con s th ng kê mà có th nó s giúp ích cho các b n

d hình dung trong quá 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 1 chu k máy, tr các l nh v đi u khi n con tr ch ng trình

Có 16 l nh t ng tác byte (bao g m thanh ghi F b t k và thanh ghi W), ch có 4 l nh t ng tác bit và 15 l nh đi u khi n.

2 Đ dài mã l nh và chu k máy

Nh n th y m t th c t r ng, các b n sinh viên m i làm quen v i viđi u khi n th ng l m

l n v hai khái ni m s chu k máy th c hi n l nh vàđ dài mã l nh Do đó, trong ph n này,chúng tôi ch c g ng gi i thích s quađ các b n có th phân bi t hai v n đ trê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úng tôi ch mu n h ng d n các b n m t cách t o ra dao

đ ng cho PIC b ng th ch anh b i vì nh ng cách t o dao đ ng khác đ u có s n trong datasheet.(ch a vi t xong)

2.2 Đ dài mã l nh

Đ dài mã l nh c a dòng PIC midrange là 14 bit và đ c đánh s nh sau:

Hình 1: Mã l nh c a dòng PIC midrange

Cễng nh chúng ta đã nói trên, t p l nh PIC midrange có th đ c chia thành 3 lo i ch

y u, l nh t ng tác byte, l nh t ng tác bit và các l nhđi u khi n S khác nhau c a các l nhnày là gì?

Các b n chú ý r ng, v i l nh t ng tác byte, thì chúng ta luôn có 2 thông s là F và d, trong

đó F là đ a ch thanh ghi, hay nói ng n g n là thanh ghi, và d là bit đ ch n xem k t qu đ c

Trang 8

l u ng c l i vào F hay l u ra W Trong khiđó, l nh t ng tác bit c n có 3 bit đ mã hoá v trí

c a bit trong m t thanh ghi nàođó (t 0 đ n 7, nghĩa là t 000 đ n 111)

V i các l nhđi u khi n và tính toán, thì chúng ta có các giá tr 8 bit k (t 0 đ n 255), và hai

l nhđ c bi t CALL và GOTO thì giá tr k là 11 bit (t 0 đ n 2047)

Chúng ta s xem xét cách t ch c mã l nh c a dòng PIC midrange các m c d iđây

Hình 2: Mã l nh c a các l nh t ng tác byte

Các b n chú ý m tđi u r ng, đ a ch c a m t thanh ghi, ch có 7 bit thôi, và n m t bit 0

đ n bit 6 M i thanh ghi m c dù có 8 bit, nh ng đ a ch c a nó ch có 7 bit

Ph n OPCODE đây là gì? Chính là ph n mã hoá c các l nh mà chúng ta vi t nh

ADDWF, ANDWF,… Khi vi t nh th này, là chúng ta vi t b ng các mã g i nh , trong khi

đó, vi đi u khi n hi u các l nh này d i d ng bit Vì v y, nó ph i đ c mã hoá đ vi đi ukhi n hi u

M tđi m l u ý là đ i v i các l nh t ng tác byte, ph n mã hoá c a nó dài 6 bit, n m t bit

8đ n bit 13 Trong đó, bit12 – bit13 = 00 (nh hình 2.2)

K t qu , chúng ta th y r ng, ph n OPCODE có 6 bit, nh ng hai bitđ u tiên đã là 00, chính

vì v y, ch còn l i 4 bitđ phân bi t các l nh v i nhau và chúng ta ch có t i đa 16 l nh t ng tác byte

Hình 3: Mã l nh c a các l nh t ng tác bit

T ng t nh trên, bit quyđ nh đ a ch c a thanh ghi F trong các l nh t ng tác bit là 7 bit,

n m t bit 0đ n bit 6 Các bit n m t bit 7 đ n bit 9 dùng đ quy đ nh v trí c a bit t 0 đ n 7trong thanh ghi (nghĩa là t 000 đ n 111)

Trang 9

Ph n OPCODE c a các l nh t ng tác bit có mã hoá b tđ u b ng 01 ng v i bit 12 và 13.Chính vì v y, ph n còn l iđ phân bi t các l nh khi mã hoá ch còn l i 2 bit, nên ch có th mãhoáđ c 4 l nh Do đó, chúng ta th y r ng ch có 4 l nh t ng tác bit là BCF, BSF, BTFSC và BTFSS.

m t thanh ghi và 1 bit d dùngđ ch n v trí đích c a phép tính

Hai bit 12 và 13 c a nhóm l nh nàyđ c m c đ nh là 11 Ph n OPCODE 6 bit ch còn l i 4bitđ phân bi t các l nh trong nhóm này Tuy nhiên, trong nhóm l nh này, ng i ta không

dùng h t 16 l nh mà ch dùng 6 l nh là: ADDLW, ANDLW, IORLW, MOVLW, SUBLW và XORLW

Các l nhđi u khi n đ c bi t, là các l nh không t ng tác v i các thanh ghi có đ a ch trong

b nh d li u, bao g m các l nh: CLRWDT, NOP, RETURN, RETFIE, SLEEP

Trang 10

Các l nh này vì không ch a các thanh ghi trong mã l nh, nên ph nđ u OPCODE c a nó s

là 000000 (6 bit t bit 13đ n bit 8 đ u là 0) Nh hình sau:

Trang 11

Trong ph n t p l nh này, ph n ghi chú cho m i l nh là r t quan tr ng Nó là ph n chúngtôi mu n trình bày v

(ch a vi t xong)

Trang 12

[nhãn] ADDLW k ; N i dung c a thanh ghi W

b n vi t h’XX’ ho c 0xXX

Ví d : d’50’, d’103’, b’01101101’, b’11011011’, h’C3’, 0xA8, 0x44 …

Dòng PIC mà chúng ta tìm hi u là các MCU 8 bit Do v y, không th nào m t thanh ghi

d li u có th ch a m t s mà giá tr c a nó l n h n giá tr có th th hi n b ng 8 bit

Nh c l i r ng, m t s 8 bit ch có th th hi n m t s nh phân t b’00000000’ đ nb’11111111’, hay m t s th p phân t d’0’ đ n d’255’ và s th p l c phân t 0x00 đ n0xFF M t khi phép toán c ng làm tràn 8 bit, nó ch có th gi l i k t qu là 8 bit, còn giá

tr tràn s b b qua Tuy nhiên, các bit tr ng thái C, Z, DC s báo cho chúng ta bi t r ngthanh ghi b tràn

Trang 13

[nhãn] ADDWF F, d ; N i dung c a thanh ghi W

; đ c c ng v i n i dung c a thanh ghi F,

BIEN_2 RES 2 ;0x20 Hay nói cách khác, BIEN chính là

; thanh ghi cóđ a ch 0x20 Cách này dùng đ

;đ t tên cho hàng lo t bi n liên ti p nhau

; BIEN_2 s cóđ dài2 byteb tđ u t 0x21

Cách th hai dùng cblock Cách th ba dùng #DEFINE đ đ t tên cho h ng s ho c đ ttên cho bi n có đ a ch đ c đ nh s n Hai cách sau chúng ta s nh c t i trong ph nDIRECTIVE

Trang 14

[nhãn] ANDLW k ; “And” n i dung c a thanh ghi W

Z thay đ i khi và ch khi k t qu đ c tr v có giá tr b’00000000’ Các b n ghi nh nó

m t cách r tđ n gi n Z = ZERO Khi k t qu c a m t phép tính toán nào đó b ng

ZERO thì bit Z = 1, và n u không ph i là ZERO thì bit Z = 0.

Trang 15

[nhãn] ANDWF F, d ; N i dung c a thanh ghi W

; đ c and v i n i dung c a thanh ghi F,

Z thay đ i khi và ch khi k t qu đ c tr v có giá tr b’00000000’ Các b n ghi nh nó

m t cách r tđ n gi n Z = ZERO Khi k t qu c a m t phép tính toán nào đó b ng

ZERO thì bit Z = 1, và n u không ph i là ZERO thì bit Z = 0.

Trang 16

[nhãn] BCF F, b ; Xoá bit th b c a thanh ghi F

Trang 17

[nhãn] BSF F, b ; Đ t bit th b c a thanh ghi F

Trang 18

[nhãn] BTFSC F, b ; N u bit th b c a thanh ghi F

FALSE_3 GOTO LAMVIEC_1 ; b qua l nh này, th c hi n NOP TRUE_3 GOTO LAMVIEC_2 ; th c hi n l nh này goto LAMVIEC_2

K t qu : Th c hi n l nh nhãn TRUE_3, ch không th c hi n l nh nhãn

FALSE_3

Các b n xem ti p thí d này

Ban đ u: REG = b’11000111’

FALSE_4 BCF REG, 0 ; th c hi n l nh này REG(0) = 0

TRUE_4 GOTO LAMVIEC_2 ; th c hi n l nh này goto LAMVIEC_2

K t qu : REG = b’11000110’, sauđó l nh nhãn TRUE_4 v n đ c th c hi n ti ptheo

Ghi chú:

N u nh l nh ki m tra là sai, có nghĩa bit b c a thanh ghi F là 1, l nh ti p theo s đ c

th c hi n nh trong ví d BIT_4 Khiđó, l nh BTFSC ch t n 1 chu k máy

Tuy nhiên, n u k t qu ki m tra là đúng, có nghĩa là bit b c a thanh ghi F là 0, thay vì

th c hi n l nh ti p theo nh ví d BIT_4, nó s th c hi n m t l nh NOP (không làm gì

c ), sauđó nó nh y xu ng TRUE_3 gi ng nh thí d BIT_3

Chính vì th c hi n m t l nh NOP, cho nên trong tr ng h p ki m trađúng, chúng ta

có th coi nh l nh BTFSC t n 2 chu k máy, và trong tr ng h p ki m tra không

đúng, nó v n ch t n 1 chu k máy.

Trang 19

[nhãn] BTFSS F, b ; N u bit th b c a thanh ghi F

FALSE_5 GOTO LAMVIEC_3 ; b qua l nh này, th c hi n NOP TRUE_5 GOTO LAMVIEC_4 ; th c hi n l nh này goto LAMVIEC_4

K t qu : Th c hi n l nh nhãn TRUE_5, ch không th c hi n l nh nhãn

FALSE_5

Các b n xem ti p thí d này

Ban đ u: REG = b’01000111’

FALSE_6 GOTO LAMVIEC_3 ; th c hi n l nh này goto LAMVIEC_3 TRUE_6 GOTO LAMVIEC_4 ; con tr đã nh y sang LAMVIEC_3

K t qu : Nh yđ n LAMVIEC_3

Ghi chú:

Ví d BIT_6 là m t ví d đi n hình trong l nh r nhánh đi u ki n N u ki m tra m t

đi u khi n nào đó đúng hay sai, b n s ki m tra m t bit đ bi t đúng hay sai Thông

th ng, vi c r nhánh này th ngđ c th c hi n v i các bit tr ng thái nh Z, DC, C…

Trang 20

[nhãn] CALL k ; G i m t ch ng trình con

Th c hi n l nh: (PC) + 1 > TOS

k > PC(10:0) (PCLATH(4:3)) > PC(12:11)

Các bit tr ng thái b nh h ng: Không bit nào b nh h ng

Trang 21

[nhãn] CLRF F ; N i dung c a thanh ghi W

Trang 22

[nhãn] CLRW ; N i dung c a thanh ghi W

Trang 23

[nhãn] CLRWDT ; N i dung c a thanh ghi W

Ngày đăng: 28/03/2014, 00:04

HÌNH ẢNH LIÊN QUAN

Hình 1: Mã l nh c a dòng PIC midrange - Tập lệnh asembly, tóm tắt chức năng
Hình 1 Mã l nh c a dòng PIC midrange (Trang 7)
Hình 2: Mã l nh c a các l nh t ng tác byte - Tập lệnh asembly, tóm tắt chức năng
Hình 2 Mã l nh c a các l nh t ng tác byte (Trang 8)
Hình 4: Mã l nh c a l nh CALL và GOTO - Tập lệnh asembly, tóm tắt chức năng
Hình 4 Mã l nh c a l nh CALL và GOTO (Trang 9)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w