Computer Science 101 How the Assembler Works. Assembly Language Programming.
-
Upload
joseph-robbins -
Category
Documents
-
view
217 -
download
1
Transcript of Computer Science 101 How the Assembler Works. Assembly Language Programming.
Computer Science 101
How the Assembler Works
Assembly Language Programming
Translation and Loading
• Assembler – Translates a symbolic assembly language
program into machine language
– Tasks performed• Convert symbolic op codes to binary• Convert symbolic addresses to binary• Perform the assembler services requested by the
pseudo-ops• Put the translated instructions into a file for future use
Translation and Loading (continued)
• Op code table– Alphabetized list of all legal assembly language op codes
and their binary equivalents
• In assembly language:– A symbol is defined when it appears in the label field of
an instruction or data pseudo-op
• Pass– Process of examining and processing every assembly
language instruction in the program, one instruction at a time
Structure of the Opcode Table
Translation and Loading (continued)
• First pass over source code– Assembler looks at every instruction
• Binding– Process of associating a symbolic name with a
physical memory address
• Primary purposes of the first pass of an assembler – To bind all symbolic names to address values– To enter those bindings into a symbol table
Generating a Symbol Table
Generating a symbol table
.beginin xload zerocompare xjumpgt endifsubtract xstore xendif: output xhaltx: .data 0zero: .data 0.end
Translation and Loading (continued)
• Location counter– Variable used to determine the address of a given
instruction
• Second pass– Assembler translates source program into machine
language
• After completion of pass 1 and pass 2– Object file contains the translated machine language
object program
Generating machine code
.beginin xload zerocompare xjumpgt endifsubtract xstore xendif: out xhaltx: .data 0zero: .data 0.end
load 0000store 0001clear 0010add 0011increment 0100subtract 0101decrement 0110compare 0111jump 1000jumpgt 1001jumpeq 1010jumplt 1011jumpneq 1100in 1101out 1110halt 1111
Source program
Opcodetable