Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
239,54 KB
Nội dung
MCS-51 & Assembly language 1
Lp trình Assembly cho
MCS-51
MCS-51 & Assembly language 2
Plan
¸
Tp lnh MCS-51
¸
Ngôn ng Assembly s dng phn mm Keil
¸ Gii thiu Phn mm mô phng mch đin Proteus
¸ Ví d
MCS-51 & Assembly language 3
Tp lnh
¸ Vi x lý đu có mt tp lnh
¸ Các lnh đc đc ct trong b nh chng trình
di dng các mã lnh nh phân
¸ thun tin cho vic lp trình:
̈ Các mã lnh đc quy c vit dng “gi nh”
(mnemonic)
̈ Cn chng trình dch các mnemonic qua mã máy
(Assembler): Hp ng
MCS-51 & Assembly language 4
Chng trình s dng hp ng
EDITOR
PROGRAM
ASSEMBLER
PROGRAM
LINKER
PROGRAM
OH
PROGRAM
Myfile.asm
Myfile.obj
Other obj file
Myfile.lst
Myfile.abs
Myfile.hex
MCS-51 & Assembly language 5
Mt s thut ng
¸ Assembly:
̈ là mt cách th hin các code lnh ca mt CPU di dng các ký
hiu mà con ngi có th d dàng đc
¸ Assembler:
̈ phn mm chy trên máy tính có kh nng dch các file vit bng
Assembly sang dng object file
¸ Object code:
̈ Cha các mã lnh dng binary
¸ Object file:
̈ Object code
̈ Thông tin v “relocation” phc v cho linhker
MCS-51 & Assembly language 6
¸ Linhker
̈ Chng trình có kh nng tp hp các object file đ to
thành mt chng trình duy nht có th “executable”
¸ Segment
̈ Là mt đn v b nh code hoc data.
̈ Có nhiu kiu segment trong mt chng trình Assembly
¸ Absolute segment: c đnh không th thay đi
¸ Relocatable segment: có các thuc tính đi kèm cho phép linker
ghép nhiu segments li vi nhau trc khi to ra mt chng
trình executable
MCS-51 & Assembly language 7
Tp lnh MCS-51
¸ Gm 255 lnh:
̈ 139 lnh 1 byte
̈ 92 lnh 2 byte
̈ 24 lnh 3 byte
¸ c chia thành các nhóm lnh
̈ S hc
̈ Logic
̈ Chuyn data
̈ Kim tra điu kin (Boolean Instructions)
̈ iu khin chng trình
MCS-51 & Assembly language 8
Assembly choMCS-51 (Standard)
¸ Keil cung cp 4 tools
̈ A51 Macro Assembly (\Keil\C51\Bin\A51.EXE)
̈ BL51 Linker/Locator (\Keil\C51\Bin\BL51.EXE)
̈ LIB51 Library Manager (\Keil\C51\Bin\LIB51.EXE)
̈ OH51 Object-Hex Converter (\Keil\C51\Bin\OH51.EXE)
MCS-51 & Assembly language 9
Các bc to
mt chng
trình s dng
Keil ASM
PL/M – 51: là ngôn ng bc cao đc Intel
phát trin vào nhng nm 1980
MCS-51 & Assembly language 10
Cu trúc mt chng trình ASM
¸ Các lnh (statements) ASM gm
̈ Các t khóa điu khin chng trình assembler (assembler control)
̈ Các t khóa đnh hng cho chng trình dch (assembler directive)
̈ Các lnh máy (instruction)
¸ Mi dòng ch có th cha duy nht mt lnh assembler
control hoc assembler directive hoc mnemonic
¸ Mi lnh phi vit trên mt dòng
¸ Các tham bin hoc các toán hng ca các lnh đc phân
bit vi các lnh ít nht bi mt space
¸ Chng trình assembly phi đc kt thúc bi asm directive
END, các statements sau t khóa END s b b qua
MCS-51 & Assembly language 11
$TITLE (Demo Program #1)
CSEG AT 0000h
JMP $
END
TITLE assembler control
JMP instruction mnemonic
CSEG, END assembler derective
MCS-51 & Assembly language 12
Lnh máy
[;comment][, operand][, operand][operand]mnemonic[label:]
[ ] có ngha rng trng đó là optional
label: nhãn đc dùng đ đánh du đa ch mà ti đólnh đc đt
mnemonic dng gi nh ca lnh máy
operand toán hng
comment li chú thích
MCS-51 & Assembly language 13
Directive
¸ nh hng cho chng trình dch ASM
̈ Cách x lý các lnh mnemonic trong chng trình
̈ nh ngha các ký t, đt trc các ô nh,
¸ Không sinh ra code lnh executable (ngoi tr mt s
directive DB và DW), bao gm các nhóm:
̈ Segment control
̈ Symbol definition
̈ Memory Initialization
̈ Reserving Memory
̈ Program linkage
̈ Address control
̈ Other
MCS-51 & Assembly language 14
Segment control
¸ Generic Segments
̈ Có tên và mt lp các thuc tính đi kèm
̈ Các Generic Segment có cùng tên các object file khác
nhau s đc ghép li thành mt segment khi linhker
̈ Các t khóa: SEGMENT, RSEG
¸ Absolute Segments
̈ Dùng đ đnh ngha các vùng nh xác đnh
̈ Các t khóa: CSEG, BSEG, DSEG, ISEG, XSEG
MCS-51 & Assembly language 15
SEGMENT
segment SEGMENT class reloctype alloctype
segment tên ca segment
SEGMENT t khóa
class ch ra không gian các lp b nh (code, data, idata, xdata )
reloctype xác đnh hot đng relocation cho linker
allotype xác đnh hot đng allocation cho linker
MCS-51 & Assembly language 16
RSEG
RSEG segment
RSEG t khóa
segment tên ca generic segment đã đc đnh ngha trc đóbi
t khóa SEGMENT
RSEG c dùng đ La chn mt generic segment đã đc đnh ngha bi
SEGMENT
Ví d:
MYPROG SEGMENT CODE ; declare a segment
RSEG MYPROG ; select the segment
MOV A, #0
MOV P0, A
MCS-51 & Assembly language 17
BSEG, CSEG, DSEG, ISEG, XSEG
BSEG AT address defines an absolute BIT segment.
CSEG AT address defines an absolute CODE segment.
DSEG AT address defines an absolute DATA segment.
ISEG AT address defines an absolute IDATA segment.
XSEG AT address defines an absolute XDATA segment.
Thông báo vi chng trình linker mt segment ti mt đa ch đnh trc
MCS-51 & Assembly language 18
inh ngha các ký hiu (Symbol directive)
¸ Cho phép s dng các ký hiu đ biu din thanh
ghi. đa ch, các s
¸ Các ký hiu đã đc đnh ngha s không đc đnh
ngha li, ngoi tr lnh SET
MCS-51 & Assembly language 19
EQU, SET
symbol EQU expression
symbol EQU register
symbol SET expression
symbol SET register
symbol tên ca ký hiu
expression biu thc s, có th cha các ký hiu nhng phi đc
khai báo trc đó
register thanh ghi: A, R0-R7
symbol đc đnh ngha vi EQU s không đc đnh ngha li
Không th s dng EQU đ đnh ngha li các symbol đã đnh ngha bi SET và ngc li
MCS-51 & Assembly language 20
Ví d:
LIMIT EQU 1200
VALUE EQU LIMIT – 200 + 'A'
SERIAL EQU SBUF
ACCU EQU A
COUNT EQU R5
VALUE SET 100
VALUE SET VALUE / 2
COUNTER SET R1
TEMP SET COUNTER
TEMP SET VALUE * VALUE
[...]... Ví d : ON_FLAG: DBIT 1 ; reserve 1 bit OFF_FLAG: DBIT 1 label GAP: DS DS DS TIME: Liên k t ch ¸ ̈ ¸ MCS-51 & Assembly language ̈ ̈ ng liên k t ch ng trình cho phép Phân chia m t ch ng trình thành các module (file) riêng bi t Các module “trao i” v i nhau thông qua tên và các tham chi u Có 3 ki u ̈ 27 ng trình (Program linkage) S d ng các inh h ̈ (($ + 16) AND 0FFF0H) – $ 20 8 nh h ng PUBLIC a ra danh... s d ng Ch c m t NAME c s d ng trong m t file MCS-51 & Assembly language 31 Address control ¸ ¸ nh h ng cho ch ng trình d ch bi t a ch n i s t code l nh ho c a ch c a các thanh ghi s d ng Có 2 ki u ̈ ̈ ORG thay i n i dung c a b m a ch n m t giá tr m i Các statements ti p theo sau s c t b t ut a ch m i ó USING ch ra bank thanh ghi nào c s d ng cho R0 n R7 MCS-51 & Assembly language 32 ORG ORG expression... ki m tra c ng P1.5, n u b ng 0 thì thi t l p P1.6 = 1 b ng 1 thì thi t l p P1.6 = 0 Quá trình ki m tra cl p l i cho n khi t t ngu n MCS-51 & Assembly language 37 Ví d 2 ¸ Vi t ch ng trình assembler phát ra xung vuông có chu k 20ms v i duty cycle 50% t i c ng P1.0 (s d ng timer) Bi t t n s clock c a MCU là 12MHz MCS-51 & Assembly language 38 ... ng s d ng SPICE VSM (Virtrual System Modelling) cho phép mô ph ng ch mixed gi a t ng t và s (bao g m c các h th ng có s d ng các chip vi i u khi n) Giá ph n m m tùy thu c vào tính n ng mà khách hàng l a ch n Tài li u tham kh o có r t ít, ch y u là các file help i kèm MCS-51 & Assembly language 35 MCS-51 & Assembly language 36 Ví d 1 ¸ Vi t ch ̈ ̈ ¸ ng trình assembler ki m tra c ng P1.5, n u b ng 0 thì... character string, or an expression Ví d : REQUEST: TABLE: ZERO: DB DW DW 'PRESS ANY KEY TO CONTINUE', 0 TABLE, TABLE + 10, ZERO 0 MCS-51 & Assembly language 25 Reserving memory ¸ ¸ Khai báo dung l T khóa ̈ ̈ DBIT DS ng vùng b nh s c s d ng khai báo vùng b nh bit khai báo vùng b nh byte MCS-51 & Assembly language 26 DBIT, DS label: DBIT expression label: DS expression is the symbol that is given the address... offset Ví d : ORG 100H ORG RESTART c MCS-51 & Assembly language 33 USING USING expression expression is the register bank number which must be a value between 0 and 3 USING không t o ra b t k m t code l nh thay là s d ng a ch tuy t i c a các thanh ghi i register bank, nó ch n gi n USING 3 PUSH AR2 ; Push register 2 in bank 3 USING 1 PUSH AR2 ; Push register 2 in bank 1 MCS-51 & Assembly language 34 Ph... position of the SFR bit in the range 0 – 7 Ví d : sfr P0 = 0x80; sfr P1 = 0x90; sbit P0_0 = P0^0; sbit P1_1 = 0x90^1; MCS-51 & Assembly language 23 Kh i t o b nh (Memory initialization) ¸ ¸ Kh i t o các giá tr trong b nh code T khóa ̈ ̈ DB DW define byte (8 bits) define word (16 bits) MCS-51 & Assembly language 24 label: DB label: DW label: expression expression , expression expression , expression... BINASC PUBLIC GETTOKEN, GETNUMBER MCS-51 & Assembly language 29 EXTRN EXTRN class (symbol , symbol … ) class is the memory class where the symbol has been defined and may be one of the following: BIT, CODE, DATA, IDATA, XDATA, or NUMBER (to specify atypeless symbol) symbol is an external symbol name Ví d : EXTRN EXTERN CODE (PUT_CRLF), DATA (BUFFER) CODE (BINASC, ASCBIN) MCS-51 & Assembly language 30 NAME... bên ngoài module Symbol ph i c nh ngh a trong module co t khóa PUBLIC EXTRN a ra danh sách các symbol mà module có th s d ng nh ng các symbol này c nh ngh a trong module khác NAME ch ra tên c a mudule MCS-51 & Assembly language 28 PUBLIC PUBLIC symbol , symbol … must be a symbol that was defined somewhere within the source file Forward references to symbol names are permitted All symbol names, with... a SFR bit CODE 00H CODE RESTART + 3 CODE RESTART + 0BH CODE RESTART + 1BH DATA SBUF ; redfinition of SBUF DATA 40H DATA RESULT + 2 DATA 90H ; a SFR symbol IDATA 60H EQU 20H IDATA BUFFER + BUF_LEN – 1 MCS-51 & Assembly language 22 sfr, sbit sfr sbit sfr_symbol = address; sfr_symbol = bit-address; sfr_symbol is the name of the special function register (SFR) symbol to define address is an SFR address . MCS-51 & Assembly language 1 Lp trình Assembly cho MCS-51 MCS-51 & Assembly language 2 Plan ¸ Tp lnh MCS-51 ¸ Ngôn ng Assembly s dng phn. 20 TIME: DS 8 Ví d: MCS-51 & Assembly language 28 Liên kt chng trình (Program linkage) ¸ S dng các đinh hng liên kt chng trình cho phép ̈ Phân chia mt chng trình thành các module. Thông tin v “relocation” phc v cho linhker MCS-51 & Assembly language 6 ¸ Linhker ̈ Chng trình có kh nng tp hp các object file đ to thành mt chng trình duy nht có th “executable” ¸