Bài giảng Microprocessing Systems - Chapter 7: Assembly language programming - Lê Chí Thông
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
(define space, like unintialized array)
(define bit data)
– DBIT
– DB
(define byte data)
– DW
(define word data, low-byte in lower address)
Example 1:
DSEG AT 30H
LENGTH:
EQU
DS
40
BUFFER:
LENGTH
PROG
…
SEGMENT
CODE
MOV
MOV
MOV
R7, #LENGTH
R0, #BUFFER
@R0, #0
LOOP:
….
BJNZ R7, LOOP
END
7
17-May-12
Example 2:
XSEG AT 4000H
EQU
DS
XLENGTH:
XBUFFER:
1000
XLENGTH
PROG
…
SEGMENT
CODE
MOV DPTR, #XLENGTH
CLR A
MOVX @DPTR, A
LOOP:
INC
MOV
DTPR
A, DPL
CJNE A, #LOW(XBUFFER+XLENGTH+1),LOOP
MOV A, DPH
CJNE 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)
Assembler controls supported by ASM51
FIGURE 7–7
Linker operation
10
17-May-12
FIGURE 7–8a
EXAMPLE.M51.
Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST. (c)
Address-relative content
Need to fix in linkage
- reallocatable
FIGURE 7–8a
EXAMPLE.M51.
Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST. (c)
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
Bạn đang xem tài liệu "Bài giảng Microprocessing Systems - Chapter 7: Assembly language programming - Lê Chí Thông", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_microprocessing_systems_chapter_7_assembly_languag.pdf

