III. Chương trình ngođn ngữ Assembly cụa 8951:
3. Sự saĩp đaịt chương trình ngođn ngữ Assmebly:
3. Sự saĩp đaịt chương trình ngođn ngữ Assmebly:
Chương trình ngođn ngữ Asembly bao goăm: Các lnh máy, lời chư chị cụa trình bieđn dịch, sự đieău khieơn bieđn dịch và các chú thích.
Các lnh máy là các kỹ xạo cụa lnh cĩ theơ thực thi (ví dú như ANL). Các chư thị cụa trình bieđn dịch là các lnh đeơ trình bieđn dịch định câu trúc chương trình, các dữ liu, ký hiu, haỉng, … (ví dú Org ). Các sự đieău khieơn trình bieđn dịch set các mode cụa trình bieđn dịch và đieău khieơn sự cháy chương trình Assembly (ví dú STILLE ).
Các chú thích hốt đng cụa lnh.
Các lnh phại ghi theo nguyeđn taĩc rõ ràng đeơ được trình bieđn dịch hieơu. Sự saĩp xêp cụa chúng như sau:
(Label:) mnemonic [operand][:operand][...][:comment] 3.1 Vùng nhãn (label Field ):
3.1 Vùng nhãn (label Field ):
Mt nhãn tượng trưng cho địa chư cụa lnh (hoaịc dữ liu ) theo sau nhãn. Khi các rẽ nhánh đên lnh này, nhãn được dùng trong vùng tốn háng cụa nhánh (hoaịc lnh nhạy).
Các “nhãn“ là mt kieơu ký hiu, sau nhãn phại cĩ dâu hai châm (:) cịn sau ký hiu thì khođng.
Các kieơu ký hiu được quy cho các giá trị hoaịc quy cho vic dùng các chư thị như: EQU, SEGMENT, BIT, DATA, … Các ký hiu cĩ theơ là địa chư, haỉng, data, teđn các segment hoaịc sự xađy dựng khác được hieơu bởi người lp trình. Sau đađy là mt ví dú đeơ phađn bit nhãn và ký hiu:
PRA EQU 500 : PRA là ký hiu tượng trưng giá trị 500
START :MOV A , #0FFH :START là nhãn tương trưng địa chư lnh MOV
Mt ký hiu hoaịc mt nhãn phại baĩt đaău mt chữ cái dâu “?”, hoaịc dâu “-“; phại được theo sau baỉng mt chữ cái, các sơ, dâu “?” hay “-“, và cĩ theơ chứa tới 31 ký tự.
3.2 Vùng thut nhớ (Mnemonic Field ):
3.2 Vùng thut nhớ (Mnemonic Field ):
Các thut nhớ hay các chư chị bieđn dịch đi vào vùng thut nhớ theo sau vùng nhãn. Ví dú các thut nhớ lnh như: ADD, MOV, DIV, INC, … ; các chư thị bieđn dịch như : ORG , EQU.
3.3 Vùng tốn háng (Operand Field):
3.3 Vùng tốn háng (Operand Field):
Vùng tốn háng theo sau vùng thut nhớ. Vùng này chứa địa chư hay dữ liu được dùng bởi lnh. Mt nhãn cĩ theơ dùng đeơ tượng trưng cho haỉng dữ liu. Các khạ nng cho phép vùng tốn háng phú thuc lớn vào các hốt đng. Mt vài hốt đng khođng cĩ tốn háng như : RET, NOP trong khi các hốt đng khác cho phép nhieău tốn háng được phađn ra baỉng dâu phaơy.
3.4 Vùng chú thích (Comment Field ):
3.4 Vùng chú thích (Comment Field ):
Các chú thích phại d hieơu đaịt đeơ giại thích lnh, và cĩ dâu châm phaơy ở đaău. Khơi chú thích trong khung đeơ giại thích tính chât chung cụa phaăn chương trình được caĩt ra beđn dưới.
3.5 Các ký hiu bieđn dịch đaịc bit (Special Assembler Symbol ):
3.5 Các ký hiu bieđn dịch đaịc bit (Special Assembler Symbol ):
Các ký hiu bieđn dịch đaịc bit được dùng trong các mode định vị thanh ghi cú theơ chúng bao goăm các thanh ghi A, Ro – R7, DPTR, PC,C, AB, hay các ký hiu $ được dùng đeơ quy vào giá trị hin hành cụa b đêm Location.
Ví dú : lnh JNZ T1 , $ tương đương với lnh sau : HERE : JNZ T1, HERE
3.6 Địa chư gián tiêp (Indirect Address):
3.6 Địa chư gián tiêp (Indirect Address):
Đơi với mt sơ lnh dùng tốn háng cĩ theơ xác định thanh ghi mà nĩ chứa địa chư gián tiêp và nĩ chư cĩ theơ dùng với R0, R1 , DPTR. Ví dú leơnh MOV A, @R0 khođi phúc lái byte dữ liu từ RAM ni tái địa chư được định rõ trong R0.
Leơnh MOVC, @A + PC khođi phúc lái byte dữ liu từ b nhớ dữ liu ngồi tái địa chư được táo thành bởi vic cng ni dung thanh ghi tích lũy A và b đêm chương trình.
3.7 Dữ liu tức thời (Immediate Data ):
3.7 Dữ liu tức thời (Immediate Data ):
Các lnh dùng sự định vị tức thời cung câp dữ liu vào vùng tốn háng, ký hiu # đaịt trước dữ liu tức thời. Ví dú:
CONSTANT EQU 100 MOV A, 0FFH
ORL 40H, # CONSTANT
3.8 Địa chư dữ liu (Data Address):
3.8 Địa chư dữ liu (Data Address):
Nhieău lnh truy xuât các vùng nhớ dùng sự định vị trực tiêp và địi hỏi mt địa chư nhớ dữ liu tređn chip (00 – FFH) hay mt địa chư SFR (80H – FFH) tređn vùng tốn háng. Các ký hiu đã được định nghĩa cĩ theơ được dùng cho các địa chư SFR. Ví dú:
MOV A, 45H hay MOV A, SBUF.
3.9 Địa chư Bit (Bit Address):
3.9 Địa chư Bit (Bit Address):
Mt trong những đieơm mánh cụa 8951 là khạ nng truy xuât các bit rieđng lẹ, khođng caăn các hốt đng trang bị tređn byte. Các lnh truy xuât các bit định vị phại cung câp mt địa chư trong b nhớ dữ liu ni (00H – 7FH) hoaịc địa chư bit trong các SFR (80H - FFH).
Cĩ 3 cách đeơ xác định địa chư bit trong ođ nhớ dữ liu: Dùng địa chư bit trực tiêp, dùng hốt đng đieơm giữa địa chư byte và địa chư bit, dùng ký hiu bieđn dịch đã được định nghĩa.
Ví dú:
SETB 0E7H : Dùng địa chư trực tiêp. SETB ACC, 7 :Dùng hốt đng đieơm.
JNZ T1 ,$ : Dùng ký hiu được định nghĩa “TT”.
3.10 Địa chư mã (Code Address):
3.10 Địa chư mã (Code Address):
Địa chư mã được dùng trong tốn háng cho các lnh nhạy, bao goăm các sự nhạy tương đơi (như SJMP và các lnh nhạy cĩ đieău kin), các sự nhạy và các sự gĩi tuyt đơi (ACALL , AJMP). Địa chư mã thường được cho ở dáng nhãn sau:
HERE: _ _ _
SJMP HERE
ASM51 sẽ xác định địa chư mã đúng và loăng vào Offset đúng được ký hiu 8 bit lnh, địa chư trang 11 bit hoaịc địa chư dài 16 bit cho thích hợp.
3.11 Các sự nhạy và gĩi chung ( generic Jump and Calls):
3.11 Các sự nhạy và gĩi chung ( generic Jump and Calls):
ASM51 cho phép người lp trình dùng thut nhớ JMP chung hay CALL chung. Leơnh “JMP “cĩ theơ được dùng thay cho “SJMP, AJMP, LJMP“ và “CALL” có theơ thay cho ACALL hay LCALL. Sự bieđn dịch biên đoơi thut nhớ chung đêm mt lnh “thực tê“ sau vài qui lut đơn giạn, thut nhớ chung biên đoơi thành dáng tuyt đơi nêu nhạy hay gĩi trong trang 2k. Nêu các dáng ngaĩn và tuyt đơi khođng dùng thì sẽ được chuyeơn thành dáng dài.