Các chư thị bieđn dịch:

Một phần của tài liệu luận văn thiết kế EPROM dùng 89c51 (Trang 38 - 43)

III. Chương trình ngođn ngữ Assembly cụa 8951:

5. Các chư thị bieđn dịch:

5. Các chư thị bieđn dịch:

ASM51 cung câp các chư thị sau:

0 Sự đieău khieơn tráng thái bieđn dịch (ORG, AND, USING)

1 Sự xác định ký hiu (SEGMENT, EQU, SET, DATA, NDATA, BIT, CODE)

2 Sự khởi gán lưu trữ hay đeơ dành trước sự lưu trữ (DS, DBIT, DB, DW) 3 Sự kêt nơi chương trình (PUBLIC, EXTRN, NAME)

4 Sự chĩn segment (PSEG, CSEG, DSEG, ISEG, BSEG, XSEG)

5.1 Sự đieău khieơn tráng thái bieđn dịch:

5.1 Sự đieău khieơn tráng thái bieđn dịch:

Chư thị ORG thay đoơi b đêm vùng nhớ đeơ đaịt sự khởi đaău mt chương trình mới bởi tráng thái theo sau đĩ, dáng cụa chư thị ORG là: ORG Expression

Chư thị END đaịt ở cuơi cùng trong file nguoăn. Dáng cụa nĩ là END.

Chư thị USING cung câp cho ASM51 dãy thanh ghi tích cực hin hành. Dáng chư thị cụa nĩ là USING Expression

Vic dùng địa chư các thanh ghi ký hiu được định nghĩa trước AR0-AR7 sẽ biên thành địa chư trực tiêp phù hợp cụa dãy thanh ghi tích cực.

Ví dú : USING 3 : Dùng Bank 3 trong dãy thanh ghi. PUSH AR7 : Push R7 (R7=1FH)

5.2 Định nghĩa ký hiu (Symbol Definition):

5.2 Định nghĩa ký hiu (Symbol Definition):

Dáng chư thị cụa segment như sau: symbol SEGMENT segmenttype

Trong đĩ symbol là teđn cụa segment cĩ theơ đoơi ch được. Các kieơu segment cĩ theơ CODE (segment mã), XDATA (vùng dữ liu ngồi), DATA (vùng dữ liu ni) cĩ theơ truy xuât baỉng sự định vị trực tiêp từ (00H-7FH), IDATA (tồn b vùng dữ liu ni), BIT (vùng BIT từ 20H-2FH dữ liu ni).

Ví dú : EPROM SEGMENT CODE cho biêt EPROM cụa mt segment kieơu code.

Dáng chư thị EQU : symbol EQU Expression Dáng chư thị BIT : symbol BITExpression

Lưu ý raỉng nêu ta dùng chư thị BIT như FLAGS BIT 05H thì ta cĩ theơ SETB FLAGS mà khođng được dùng lnh MOV.

5.3 Sự khởi gán/dành lưu trữ trước (Storage Initilization/Reservation)

5.3 Sự khởi gán/dành lưu trữ trước (Storage Initilization/Reservation)

Các chư thị cụa Storage Initilization khởi gán và Storage Reservation đeơ dành mt vùng nhớ trong từ, byte hoaịc các đơn vị bit. Vùng được dành trước khi baĩt đaău tái vùng nhớ được chư rõ bởi giá trị hin hành cụa b đêm vùng nhớ trong segment tích cực đang hin hành. Các chư thị này cĩ theơ đứng trước mt nhãn.

5.3.1 Khai báo lưu trữ DS (Define Storage)

Dáng phát bieơu DS là : [label:]DS Expression

Phát bieơu DS dành mt vùng nhớ trong đơn vị byte. Nĩ cĩ theơ được dùng trong bât kỳ phát bieơu segment nào ngối trừ BIT. Khi phát bieơu DS được baĩt gaịp trong chương trình thì b đêm vị trí location cụa segment hin hành được tng leđn mt khoạng baỉng giá trị cụa bieơu thức. Toơng cụa b đêm location và bieơu thức đã được định rõ sẽ khođng vược quá sự hán chê cụa vùng hin hành.

Phát bieơu sau táo ra mt vùng đm 40 byte trong segment dữ liu ni.

DSEG AT 30 : Đaịt vào segment data noơi. LENGTH EQU 40

Nhãn BUFFER tượng trưng cho địa chư cụa location đaău tieđn cụa vùng nhớ được lưu trữ. Trong ví dú tređn buffer đaĩt đaău ở địa chư 30H bởi từ “AT 30” được định rõ bởi DSEG. Vùng đm này cĩ theơ xố như sau:

MOV R7,#LENGTH : R7 chứa con sơ LENGTH là 40 MOV R0,#BUFFER : R0 chứa địa chư tái buffer là 30H LOOP : MOV @R0,#0 : Laăn lượt xố

DJNZ,R7,LOOP (continue)

Đeơ táo ra vùng đm 1000 byte trong RAM ngối baĩt đaău tái địa chư 4000H, các chư thị sau đađy cĩ theơ được dùng:

XSTART EQU 4000H XLENGTH EQU 1000H

XSEG AT XSTART : Phađn đốn data ngồi baĩt đaău ở 4000H

XBUFFER: DS XLENGTH : Táo ra mt vùng đm cĩ đ dài 1000byte

Các lnh sau đađy cĩ theơ dùng đeơ xố vùng đm tređn :

MOV DPTR,#BUFFER: Đưa địa chư 4000H và DPTR LOOP : CLR A

MOVX @DPTR : Xố ni dúng từ địa chư 4000H trở đi INC DPTR : Tng theđm 1 ( trường hợp đaău trở thành 4001H) MOV A,DPL

CJNZ A,#LOW (XBUFFER=LENGTH+1),LOOP MOV A,DPH

CJNZ A,HIGH (XBUFFER=XLENGTH+1),LOOP (Continue)

Nêu so sánh hai cách dùng tređn dành cho byte thâp và byte cao DPTR, Vì lnh CJNZ chư làm nhim vú đơi với thanh ghi A hoaịc thanh ghi Rn, do đĩ byte thâp hoaịc byte cao cụa b đêm dữ liu phại được MOV vào A trước khi đên lnh CJNZ. Vịng laịp chư kêt thúc khi b đêm dữ liu đã được đĩc địa chư XBUFFER+XLENGTH+1

5.3.2 Khai báo DBIT (Define Bit)

Chư thị DBIT dành trước vùng nhớ các đơn vị bit, nĩ cĩ theơ được dùng trong 1 segment bit. Khi phát bieơu này được baĩt gaịp trong chương trình thì b đêm vị trí cụa segment hin hành được cng theđm giá trị cụa bieơu thức.

5.3.3 Khai báo byte DB (Define Byte)

Sự thành lp chư thị ĐAỊC BIT : [label:] ĐAỊC BIEƠT Expression [,Expression] [...]

Chư thị DB khởi gán b mã neđn segment CODE phại tích cực. Danh sách bieơu thức là mt chui cụa mt hay nhieău giá trị byte (mi cách cĩ theơ là mt bieơu thức) được phađn ra bởi dâu phaơy.

Chư thị DB cho phép các chui ký tự (được kèm trong dâu ngoaịc kép đơn) dài hơn 2 ký tự. Mi ký tự trong chui được biên thành mã ASCII tương ứng. Nêu mt nhãn được dùng thì nhãn đĩ đã được ân định địa chư cụa byte đaău tieđn.

Ví dú : CSEG AT 0100H

DSQUARES : DB 0,1,4,9,16,25 :Bình phương từ 0-5

Kêt quạ cụa sự phađn chia b nhớ hexa cụa b nhớ mã ngồi như sau :

Address Content Note

0100H 00H Cửa sơ 0 0101H 01H Cửa sơ 1 0102H 04H Cửa sơ 4 0103H 9H Cửa sô 9 0104H 10H Cửa sơ 16 0105H 19H Cửa sơ 25

5.3.4 Khai báo từ DW (Define Word)

Sự thành lp : [label:]DW Expression [,Expression][...]

Chư thị giơng chư thị DB ngối trừ hai vị trí nhớ 16 bit được chia làm mi khoạng dữ liu.

Ví dú :

CSEG AT 200H DW 1234H,2

0200H 12H Byte cao 1234H

0201H 34H Byte thâp 1234H

0202H 00H Byte cao cụa 2

Một phần của tài liệu luận văn thiết kế EPROM dùng 89c51 (Trang 38 - 43)

Tải bản đầy đủ (DOC)

(72 trang)
w