1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

VI XỬ LÝ 8051 chap7 assembly programming

12 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

17-May-12 Chapter Assembly Language Programming Chap 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 FIGURE 7–1 Assembling a source program Assembler FIGURE 7–2 Pseudo code sketch of a two-pass operator PASS – Establish symbol table - Computing address/symbol PASS – Convert mnemonic code into machine code 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 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 () 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 PUSH AR7 ; now AR7 means $23H … END 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 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 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 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 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

Ngày đăng: 13/04/2023, 08:09

w