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  
pdf 12 trang myanh 24260 Free
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:

  • pdfbai_giang_microprocessing_systems_chapter_7_assembly_languag.pdf