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)
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:
- microprocessing_systems_chapter_7_assembly_language_programm.pdf