0
Chapter 2
Assemblers
Assembly Language Programming
• Writing a program in assembly lang is more
convenient than in machine lang.
• Assembly pro...
Assembler
Assembly
Language
Program
Machine
Language
Figure: Assembler
Example:
MOV AX, X
--MOV is a mnemonic opcode.
--AX is a register operand in symbolic form.
--X is a memory operand in sym...
Elements of Assembly Language
1. Mnemonic Operation Code:-
Eliminates the need to memorize numeric
operation code.
2. Symb...
Statement Format
[Label] <Opcode> <operand Spec> [<operand spec>….]
1. Label:- Is optional.
2. Opcode:- Symbolic opcode
3....
Instruction
Opcode
Assembly
Mnemonic
Remarks
00 STOP Stop Execution
01 ADD Op1  Op1+ Op2
02 SUB Op1  Op1 – Op2
03 MULT O...
Instruction Format
sign opcode reg
operand
memory
operand
Fig: Instruction Format
Assembly Lang to M/C lang Program
1. Find address of variables and labels.
2. Replace Symbolic addr by numeric addr.
3. Re...
START 101
READ X
READ Y
MOVER AREG, X
ADD AREG, Y
MOVEM AREG, RESULT
PRINT RESULT
STOP
X DS 1
Y DS 1
RESULT DS 1
END
Fig: ...
START 101
READ X
READ Y
MOVER AREG, X
ADD AREG, Y
MOVEM AREG, RESULT
PRINT RESULT
STOP
X DS 1
Y DS 1
RESULT DS 1
END
LC
10...
Variable Address
X 108
Y 109
RESULT 110
Figure: After LC Processing
Required M/C Code
LC Opcode Register Address
101 09 0 108
102 09 0 109
103 04 1 108
104 01 1 109
105 05 0 110
106 10 0 110...
Assembly Language Statement
1. Imperative Statement.
2. Declaration Statement.
3. Assembler Directives.
• Imperative Statements:-
– Indicates an action to be taken during execution of a
program.
– Eg: MOV, ADD, MULT, etc.
• De...
Literals & Constants
int z=5;
x = x + 5;
1. Literal cannot be changed during program
execution
2. Literal is more safe and...
Advanced Assembler Directives
• ORIGIN
– ORIGIN <address specification>
• EQU
– <symbol> EQU <address specification>
• LTO...
Pass structure of assembler
Pass I Pass II
Intermediate Code
Source
Program
Target
Program
Figure: Overview of Two Pass As...
Two Pass Translation
• Handles forward references easily.
• Requires 2 scans of the source program.
• LC processing is per...
Single Pass Translation
• The problem of forward reference can be
handled using a technique called as back
patching.
START 100
MOVER AREG, X
L1 ADD BREG, ONE
ADD CREG, TEN
STOP
X DC ‘5’
ONE DC ‘1’
TEN DC ‘10’
END
START 100
MOVER AREG, X
L1 ADD BREG, ONE
ADD CREG, TEN
STOP
X DC ‘5’
ONE DC ‘1’
TEN DC ‘10’
END
100 04 1 _ _ _
101 01 2 _ ...
Machine Instruction After Backpatching
04 1 104
01 2 105
06 2 106
00 0 000
Design of a Two Pass Assembler
• Pass I:-
1. Separate the symbol, mnemonic, opcode and
operand.
2. Build Symbol Table.
3. ...
Pass I
• Pass I uses the following data structures
1. Machine Opcode table (OPTAB)
2. Symbol Table (ST)
3. Literal Table (...
1. OPTAB contains opcode, class and opcode
length.
2. SYMTAB contains symbol and address.
3. LITTAB contains literal and a...
START 200
MOVER AREG, =‘5’
MOVEM AREG, X
L1 MOVER BREG, =‘2’
ORIGIN L1+3
LTORG
NEXT ADD AREG,=‘1’
SUB BREG,=‘2’
BC LT, BAC...
Symbol Address Literal Address Pool Table
0
START 200
MOVER AREG,=‘5’ 200
Symbol Address Literal Address
=‘5’ ---
Pool Tab...
MOVEM AREG,X 201
Symbol Address
X ----
Literal Address
=‘5’ ---
Pool Table
0
L1 MOVER BREG,=‘2’ 202
Symbol Address
X ----
...
ORIGIN L1+3 203
Symbol Address
X ----
L1 202
Literal Address
=‘5’ ---
=‘2’ ---
Pool Table
0
LTORG 205
206
Symbol Address
X...
NEXT ADD AREG, =‘1’ 207
Symbol Address
X ----
L1 202
NEXT 207
Literal Address
=‘5’ 205
=‘2’ 206
=‘1’ ----
Pool Table
0
2
S...
BC LT, BACK 209
Symbol Address
X ----
L1 202
NEXT 207
BACK ----
Literal Address
=‘5’ 205
=‘2’ 206
=‘1’ ----
=‘2’ ----
Pool...
BACK EQU L1 212
Symbol Address
X ----
L1 202
NEXT 207
BACK 202
Literal Address
=‘5’ 205
=‘2’ 206
=‘1’ 210
=‘2’ 211
Pool Ta...
MULT CREG,=‘4’ 212
Symbol Address
X ----
L1 202
NEXT 207
BACK 202
Literal Address
=‘5’ 205
=‘2’ 206
=‘1’ 210
=‘2’ 211
=‘4’...
X DS 1 214
Symbol Address
X 214
L1 202
NEXT 207
BACK 202
Pool Table
0
2
4
END
Symbol Address
X 214
L1 202
NEXT 207
BACK 20...
Upcoming SlideShare
Loading in...5
×

Assemblers

3,037

Published on

Elements of assembly language programming, A simple assembly scheme, Pass structure of
assemblers, design of a two pass assembler

Published in: Engineering, Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,037
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
178
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "Assemblers"

  1. 1. Chapter 2 Assemblers
  2. 2. Assembly Language Programming • Writing a program in assembly lang is more convenient than in machine lang. • Assembly program is more readable. • Assembly lang is machine dependent. • Assembly program is written using symbols(Mnemonics). • Assembly program is translated into machine code before execution.
  3. 3. Assembler Assembly Language Program Machine Language Figure: Assembler
  4. 4. Example: MOV AX, X --MOV is a mnemonic opcode. --AX is a register operand in symbolic form. --X is a memory operand in symbolic form.
  5. 5. Elements of Assembly Language 1. Mnemonic Operation Code:- Eliminates the need to memorize numeric operation code. 2. Symbolic Operands:- Symbolic names can be used. 3. Data Declarations:- Data can be declared in any form Eg: -5, 10.5 etc.
  6. 6. Statement Format [Label] <Opcode> <operand Spec> [<operand spec>….] 1. Label:- Is optional. 2. Opcode:- Symbolic opcode 3. Operand:- Symbolic name (Register or Memory variable)
  7. 7. Instruction Opcode Assembly Mnemonic Remarks 00 STOP Stop Execution 01 ADD Op1  Op1+ Op2 02 SUB Op1  Op1 – Op2 03 MULT Op1  Op1* Op2 04 MOVER CPU Reg  Memory operand 05 MOVEM Memory  CPU Reg 06 COMP Sets Condition Code 07 BC Branch on Condition 08 DIV Op1  Op1/ Op2 09 READ Operand 2  input Value 10 PRINT Output  Operand2 Fig: Mnemonic Operation Codes
  8. 8. Instruction Format sign opcode reg operand memory operand Fig: Instruction Format
  9. 9. Assembly Lang to M/C lang Program 1. Find address of variables and labels. 2. Replace Symbolic addr by numeric addr. 3. Replace Symbolic opcodes by machine opcode. 4. Reserve storage for data.
  10. 10. START 101 READ X READ Y MOVER AREG, X ADD AREG, Y MOVEM AREG, RESULT PRINT RESULT STOP X DS 1 Y DS 1 RESULT DS 1 END Fig: Sample program to find X+Y
  11. 11. START 101 READ X READ Y MOVER AREG, X ADD AREG, Y MOVEM AREG, RESULT PRINT RESULT STOP X DS 1 Y DS 1 RESULT DS 1 END LC 101 102 103 104 105 106 107 108 109 110 + 09 0 108 + 09 0 109 + 04 1 108 + 01 1 109 + 05 0 110 + 10 0 110 + 00 0 000 Opcode Register Memory operand
  12. 12. Variable Address X 108 Y 109 RESULT 110 Figure: After LC Processing
  13. 13. Required M/C Code LC Opcode Register Address 101 09 0 108 102 09 0 109 103 04 1 108 104 01 1 109 105 05 0 110 106 10 0 110 107 00 0 000 108 109 110 111
  14. 14. Assembly Language Statement 1. Imperative Statement. 2. Declaration Statement. 3. Assembler Directives.
  15. 15. • Imperative Statements:- – Indicates an action to be taken during execution of a program. – Eg: MOV, ADD, MULT, etc. • Declaration Statement:- – To reserve memory for variable. [Label] DS <constant> eg: X DS 5 [Label] DC ‘<value>’ eg: X DC 3 • Assembler Directives:- – Instructs the assembler to perform ceratin action during assembly of a program. START <constant> END
  16. 16. Literals & Constants int z=5; x = x + 5; 1. Literal cannot be changed during program execution 2. Literal is more safe and protected than a constant. 3. Literals appear as a part of the instruction.
  17. 17. Advanced Assembler Directives • ORIGIN – ORIGIN <address specification> • EQU – <symbol> EQU <address specification> • LTORG – Allocates address for literals.
  18. 18. Pass structure of assembler Pass I Pass II Intermediate Code Source Program Target Program Figure: Overview of Two Pass Assembler Data Structures
  19. 19. Two Pass Translation • Handles forward references easily. • Requires 2 scans of the source program. • LC processing is performed in the 1st pass and symbols are stored in the symbol table. • Second pass synthesis Target Program.
  20. 20. Single Pass Translation • The problem of forward reference can be handled using a technique called as back patching.
  21. 21. START 100 MOVER AREG, X L1 ADD BREG, ONE ADD CREG, TEN STOP X DC ‘5’ ONE DC ‘1’ TEN DC ‘10’ END
  22. 22. START 100 MOVER AREG, X L1 ADD BREG, ONE ADD CREG, TEN STOP X DC ‘5’ ONE DC ‘1’ TEN DC ‘10’ END 100 04 1 _ _ _ 101 01 2 _ _ _ 102 06 3 _ _ _ 103 00 0 000 104 105 106 Instruction Address Symbol Making a forward reference 100 X 101 ONE 102 TEN Figure : TII
  23. 23. Machine Instruction After Backpatching 04 1 104 01 2 105 06 2 106 00 0 000
  24. 24. Design of a Two Pass Assembler • Pass I:- 1. Separate the symbol, mnemonic, opcode and operand. 2. Build Symbol Table. 3. Perform LC Processing. 4. Construct Intermediate Representation. • Pass II:- 1.Process IR to synthesize the target program.
  25. 25. Pass I • Pass I uses the following data structures 1. Machine Opcode table (OPTAB) 2. Symbol Table (ST) 3. Literal Table (LT) 4. Pool Table (PT)
  26. 26. 1. OPTAB contains opcode, class and opcode length. 2. SYMTAB contains symbol and address. 3. LITTAB contains literal and address. 4. POOLTAB contains starting literal number of each pool.
  27. 27. START 200 MOVER AREG, =‘5’ MOVEM AREG, X L1 MOVER BREG, =‘2’ ORIGIN L1+3 LTORG NEXT ADD AREG,=‘1’ SUB BREG,=‘2’ BC LT, BACK LTORG BACK EQU L1 ORIGIN NEXT+5 MULT CREG,=‘4’ STOP X DS 1 END LC 200 201 202 205 206 207 208 209 210 211 212 212 213 214
  28. 28. Symbol Address Literal Address Pool Table 0 START 200 MOVER AREG,=‘5’ 200 Symbol Address Literal Address =‘5’ --- Pool Table 0
  29. 29. MOVEM AREG,X 201 Symbol Address X ---- Literal Address =‘5’ --- Pool Table 0 L1 MOVER BREG,=‘2’ 202 Symbol Address X ---- L1 202 Literal Address =‘5’ --- =‘2’ --- Pool Table 0
  30. 30. ORIGIN L1+3 203 Symbol Address X ---- L1 202 Literal Address =‘5’ --- =‘2’ --- Pool Table 0 LTORG 205 206 Symbol Address X ---- L1 202 Literal Address =‘5’ 205 =‘2’ 206 Pool Table 0 2
  31. 31. NEXT ADD AREG, =‘1’ 207 Symbol Address X ---- L1 202 NEXT 207 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ ---- Pool Table 0 2 SUB BREG,=‘2’ 208 Symbol Address X ---- L1 202 NEXT 207 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ ---- =‘2’ ----- Pool Table 0 2
  32. 32. BC LT, BACK 209 Symbol Address X ---- L1 202 NEXT 207 BACK ---- Literal Address =‘5’ 205 =‘2’ 206 =‘1’ ---- =‘2’ ---- Pool Table 0 2 LTORG 210 211 Symbol Address X ---- L1 202 NEXT 207 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 Pool Table 0 2 4
  33. 33. BACK EQU L1 212 Symbol Address X ---- L1 202 NEXT 207 BACK 202 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 Pool Table 0 2 4 ORIGIN NEXT+5 213 Symbol Address X ---- L1 202 NEXT 207 BACK 202 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 Pool Table 0 2 4
  34. 34. MULT CREG,=‘4’ 212 Symbol Address X ---- L1 202 NEXT 207 BACK 202 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 =‘4’ ---- Pool Table 0 2 4 STOP 213 Symbol Address X ---- L1 202 NEXT 207 BACK 202 Pool Table 0 2 4 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 =‘4’ ----
  35. 35. X DS 1 214 Symbol Address X 214 L1 202 NEXT 207 BACK 202 Pool Table 0 2 4 END Symbol Address X 214 L1 202 NEXT 207 BACK 202 Pool Table 0 2 4 5 Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 =‘4’ ---- Literal Address =‘5’ 205 =‘2’ 206 =‘1’ 210 =‘2’ 211 =‘4’ 215
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×