Microprocessing Systems - Chapter 7: Assembly Language Programming - Lê Chí Thông

• 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)

pdf12 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 453 | Lượt tải: 0download
Tóm tắt nội dung Microprocessing Systems - Chapter 7: Assembly Language Programming - Lê Chí Thông, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
17-May-12
1
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)
17-May-12
2
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
17-May-12
3
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
17-May-12
4
• 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 ()
17-May-12
5
• 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
17-May-12
6
(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
17-May-12
7
(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)
– DBIT (define bit data)
– DB (define byte data)
– DW (define word data, low-byte in lower address)
Example 1:
DSEG AT 30H
LENGTH: EQU 40
BUFFER: DS LENGTH
PROG SEGMENT CODE
MOV R7, #LENGTH
MOV R0, #BUFFER
LOOP: MOV @R0, #0
BJNZ R7, LOOP
.
END
17-May-12
8
Example 2:
XSEG AT 4000H
XLENGTH: EQU 1000
XBUFFER: DS XLENGTH
PROG SEGMENT CODE
MOV DPTR, #XLENGTH
LOOP: CLR A
MOVX @DPTR, A
INC DTPR
MOV 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 
Multi-file : EXTERN, PUBLIC directive
(3) Program link
17-May-12
9
FIGURE 7–5 Defining and initiating absolute and relocatable segments 
RSEG directive – reallocatable segment
FIGURE 7–6 Assembler controls supported by ASM51 
17-May-12
10
FIGURE 7–6 (continued) Assembler controls supported by ASM51
FIGURE 7–7 Linker operation 
17-May-12
11
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
17-May-12
12
FIGURE 7–8d (continued) Annotated example: linking relocatable segments and modules. (a) ECHO.LST. (b) IO.LST. 
(c) EXAMPLE.M51. 
Output of linkage editor
-Symbol table
-Reallocatable address were
computed already

File đính kèm:

  • pdfmicroprocessing_systems_chapter_7_assembly_language_programm.pdf