Tải bản đầy đủ (.pdf) (12 trang)

VI XỬ LÝ 8051 chap7 assembly programming

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.68 MB, 12 trang )

17-May-12

Chapter 7
Assembly Language Programming

Chap 7 Assembly Language
Programming
• Assembler
– Change mnemonic code into machine code
– Label can be used to represent symbolic address/data
– Directives : like pre-processing operator (#) in C
language.

• Linkage Editor
– Link objective code into executable file
(*.obj → *.exe)

1


17-May-12

FIGURE 7–1

Assembling a source program

Assembler

FIGURE 7–2

Pseudo code sketch of a two-pass operator



PASS 1 –
Establish symbol table
- Computing
address/symbol

PASS 2 –
Convert mnemonic code
into machine code

2


17-May-12

FIGURE 7–3

Use of the generic JMP mnemonic

Symbol Table :
Symbol →Address/Data

• Assembly program
– Machine instructions
MOV A, #0

– Assembler Directives
• Like Variable declaration in high-level language

– Assembler controls

• Conditional compiling

– Comments
After ; to EOL
……. ; this is a comment

3


17-May-12

• Formant of Assembly language
– case insensitive
[label:] mnemonic [operation] [,operand].. ; comment

Example :
PAR


EQU

500

; #define symbol

JNB

TI, $

; HERE: JNB TI, HERE


• Constant expression
– Implement by assembler
Examples:
MOV A, ‘9’-’0’

; ‘ ‘ means char constant

• Operators in constant expressions
– Arithmetic : + - * / MOD
– Logic : AND OR NOT XOR
– Relational : EQ NE LT LE GT GE
= <> < <= > >=
– Special : SHR SHL HIGH LOW ()

4


17-May-12

• Precedence of constant
()
HIGH LOW
/ MOD SHR SHL
+EQ NE LT LE GT GE =
NOT
AND
OR
XOR


<> < <= > >=

• Directives
(1) Assembler state control
• ORG – define the location of the code
• END – directive to tell assembler the end of source file
• USING – set the register bank

Examples :
ORG 100H
ORG $+100H
USING 3
PUSH AR7 ; now AR7 means $23H
….
END

5


17-May-12

(2) Symbol define






Segment
EQU

Storage initialization/reservation
Program link
Segment selection

(A) Segment define
In low-level language, the programmer need to manage the
location of program/data in memory
symbol
…..

SEGMENT
segment_type
; the following program was form a segment
; called symbol,
; The content is segment_type (code or data)

segment_type can be one of
• CODE (program)
• XDATA (the extended data segment)
• DATA (direct address space, 00-7fH)
• IDATA (indirect address space, 00-7FH 80-FFH for 8052)
• BIT (bit address space)
• CSEG AT (equivalent to SEGMENT CODE)
• DSEG AT
• XSEG AT
• ISEG AT
• BSEG AT

6



17-May-12

(B) EQU
like the named constant define in C (#define)

Example:
BASE EQU

10

other constants :
#10H, $(current location)

(C) Storage initialization/reservation





DS
DBIT
DB
DW

(define space, like unintialized array)
(define bit data)
(define byte data)
(define word data, low-byte in lower address)


Example 1:

LENGTH:
BUFFER:
PROG


LOOP:

DSEG AT 30H
EQU
40
DS
LENGTH
SEGMENT
MOV
MOV
MOV
BJNZ

CODE

R7, #LENGTH
R0, #BUFFER
@R0, #0
R7, LOOP

….
END


7


17-May-12

Example 2:

XLENGTH:
XBUFFER:
PROG


XSEG AT 4000H
EQU
1000
DS
XLENGTH
SEGMENT
MOV
CLR
MOVX
INC
MOV
CJNE
MOV
CJNE

LOOP:

CODE


DPTR, #XLENGTH
A
@DPTR, A
DTPR
A, DPL
A, #LOW(XBUFFER+XLENGTH+1),LOOP
A, DPH
A, #HIGH(XBUFFER+XLENGTH+1),LOOP

….
END

FIGURE 7–4

Use of the EXTRN and PUBLIC assembler directives

(3) Program link
Multi-file : EXTERN, PUBLIC directive

8


17-May-12

FIGURE 7–5

Defining and initiating absolute and relocatable segments

RSEG directive – reallocatable segment


FIGURE 7–6

Assembler controls supported by ASM51

9


17-May-12

FIGURE 7–6 (continued)

FIGURE 7–7

Assembler controls supported by ASM51

Linker operation

10


17-May-12

FIGURE 7–8a
Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST. (c)
EXAMPLE.M51.

Address-relative content
Need to fix in linkage
- reallocatable


FIGURE 7–8a
Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST. (c)
EXAMPLE.M51.

Symbol Table

11


17-May-12

FIGURE 7–8d (continued)
(c) EXAMPLE.M51.

Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST.

Output of linkage editor
-Symbol table
-Reallocatable address were
computed already

12



×