3
Most read
5
Most read
9
Most read
WALCHAND INSTITUTE OF TECHNOLOGY, SOLAPUR
PRESENTING A SEMINAR ON
TWO PASS ASSEMBLERS
TWO PASS ASSEMBLER
• Processing the source program into two passes.
• The internal tables and subroutines that are used only during Pass 1.
• The SYMTAB, LITTAB, and OPTAB are used by both passes.
• The main problems to assemble a program in one pass involves
forward references.
Pass 1
Forward references
table String storage
buffer Partially
configured object file
Assembly
Language
Pass 2 Machine
Language
• PASS 1
• Assign addresses to all statements in the program.
• Addresses of symbolic labels are stored.
• Some assemble directives will be processed.
• PASS 2
• Translate opcode and symbolic operands.
• Generate data values defined by BYTE,WORD etc.
• Assemble directives will be processed.
• Write the object program and assembly listing.
DATA STRUCTURES
• Two major data structures:
• Operation Code Table (OPTAB): is used to look up mnemonic operation
codes and translate them to their machine language equivalents
• Symbol Table (SYMTAB): is used to store values (addresses) assigned to
labels
• Variable:
• Location Counter (LOCCTR) is used to help the assignment of addresses
• LOCCTR is initialized to the beginning address specified in the START
statement
• The length of the assembled instruction or data area to be generated is
added to LOCCTR
Algorithm for Pass 1 of Assembler(3/1)
read first input line
if OPCODE=‘START’ then
begin
save #[OPERAND] as starting address
initialize LOCCTR to starting address
write line to intermediate file
read next input line
end
else
initialize LOCCTR to 0
while OPCODE≠’END’ do
begin
if this is not a comment line then
begin
if there is a symbol in the LABEL field then
Algorithm for Pass 1 of Assembler(3/2)
begin
search SYMTAB for LABEL
if found then
set error flag (duplicate symbol)
else
insert (LABEL, LOCCTR) into SYMTAB
end {if symbol}
search OPTAB for OPCODE
if found then
add 3 {instruction length} to LOCCTR
else if OPCODE=‘WORD’ then
add 3 to LOCCTR
else if OPCODE=‘RESW’ then
add 3 * #[OPERAND] to LOCCTR
Algorithm for Pass 1 of Assembler(3/3)
else if OPCODE=‘RESB’ then
add #[OPERAND] to LOCCTR
else if OPCODE=‘BYTE’ then
begin
find length of constant in bytes
add length to LOCCTR
end {if BYTE}
else
set error flag (invalid operation code)
end {if not a comment}
write line to intermediate file
read next input line
end {while not END}
Write last line to intermediate file
Save (LOCCTR-starting address) as program length
Algorithm for Pass 2 of Assembler(3/1)
read first input line (from intermediate file)
If OPCODE=‘START’ then
begin
write listing line
read next input line
end {if START}
Write Header record to object program
Initialize first Text record
While OPCODE≠ ‘END’ do
begin
if this is not a comment line then
begin
search OPTAB for OPCODE
if found then
begin
Algorithm for Pass 2 of Assembler(3/2)
if there is a symbol in OPERAND field then
begin
search SYMTAB for OPERAND
if found then
store symbol value as operand address
else
begin
store 0 as operand address
set error flag (undefined symbol)
end
end {if symbol}
else
store 0 as operand address
assemble the object code instruction
end {if opcode found}
Algorithm for Pass 2 of Assembler(3/3)
else if OPCODE=‘BYTE’ or ‘WORD’ then
convert constant to object code
if object code will not fit into the current Text record then
begin
write Text record to object program
initialize new Text record
end
add object code to Text record
end {if not comment}
write listing line
read next input line
end {while not END}
write last Text record to object program
Write End record to object program
Write last listing line
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
char *code[9][4]={
{"PRG1","START","",""},
{"","USING","*","15"},
{"","L","",""},
{"","A","",""},
{"","ST","",""},
{"FOUR","DC","F",""},
{"FIVE","DC","F",""},
{"TEMP","DS","1F",""},
{"","END","",""}
};
char av[2],avail[15]={'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N'};
int i,j,k,count[3],lc[9]={0,0,0,0,0,0,0,0,0},loc=0;
clrscr();
Program
printf("----------------------------------------------------n");
printf("LABELttOPCODEn");
printf("----------------------------------------------------nn");
for(i=0;i<=8;i++)
{
for(j=0;j<=3;j++)
{
printf("%stt",code[i][j]);
}
j=0;
printf("n");
}
getch();
printf("-----------------------------------------------------");
printf("nVALUES FOR LC : nn");
for(j=0;j<=8;j++)
{
if((strcmp(code[j][1],"START")!=0)&&(strcmp(code[j][1],"USING")!=0)&&(strcmp(code[j][1],"L")!=0))
lc[j]=lc[j-1]+4;
printf("%dt",lc[j]);
}
printf("nnSYMBOL TABLE:n----------------------------------------------------n");
printf("SYMBOLttVALUEttLENGTHttR/A");
printf("n----------------------------------------------------n");
for(i=0;i< 9;i++)
{
if(strcmp(code[i][1],"START")==0)
{
printf("%stt%dtt%dtt%cn",code[i][0],loc,4,'R');
}
else
if(strcmp(code[i][0],"")!=0)
{
printf("%stt%dtt%dtt%cn",code[i][0],loc,4,'R');
loc=4+loc;
}
else
if(strcmp(code[i][1],"USING")==0)
{
}
else
{
loc=4+loc;
printf("----------------------------------------------------");
printf("nnBASE TABLE:n-------------------------------------------------------n");
printf("REG NOttAVAILIBILITYtCONTENTS OF BASE TABLE");
printf("n-------------------------------------------------------n");
for(j=0;j<=8;j++)
{
if(strcmp(code[j][1],"USING")!=0)
{
}
else
{
strcpy(av,code[j][3]);
}
}
count[0]=(int)av[0]-48;
count[1]=(int)av[1]-48;
count[2]=count[0]*10+count[1];
avail[count[2]-1]='Y';
for(k=0;k< 16;k++)
{
printf(" %dtt %cn",k,avail[k-1]);
}
printf("-------------------------------------------------------n");
printf("Continue..??");
getchar();
printf("PASS2 TABLE:nn");
printf("LABELttOP1ttLCtt");
printf("n----------------------------------------------------n");
loc=0;
for(i=0;i<=8;i++)
{
for(j=0;j<=3;j++)
{
printf("%stt",code[i][j]);
}
j=0;
printf("n");
}
printf("-----------------------------------------------------");
getch();
----------------------------------------------------
LABEL OPCODE
----------------------------------------------------
PRG1 START
USING * 15
L
A
ST
FOUR DC F
FIVE DC F
TEMP DS 1F
END
-----------------------------------------------------
VALUES FOR LC :
0 0 0 4 8 12 16 20 24
OUTPUT
SYMBOL TABLE:
----------------------------------------------------
SYMBOL VALUE LENGTH R/A
----------------------------------------------------
PRG1 0 4 R
FOUR 12 4 R
FIVE 16 4 R
TEMP 20 4 R
----------------------------------------------------
BASE TABLE:
-------------------------------------------------------
REG NO AVAILIBILITY CONTENTS OF BASE TABLE
-------------------------------------------------------
0
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
9 N
10 N
11 N
12 N
13 N
Continue..??
PASS2 TABLE:
LABEL OP1 LC
----------------------------------------------------
PRG1 START
USING * 15
L
A
ST
FOUR DC F
FIVE DC F
TEMP DS 1F
END
-----------------------------------------------------
Two pass Assembler

More Related Content

PPTX
Symbol table design (Compiler Construction)
PPTX
Unit iv(simple code generator)
PPTX
Single Pass Assembler
PPTX
Three address code In Compiler Design
PPTX
Basic blocks and control flow graphs
PPTX
Structure of the compiler
PPTX
Run time administration
PPTX
Design of a two pass assembler
Symbol table design (Compiler Construction)
Unit iv(simple code generator)
Single Pass Assembler
Three address code In Compiler Design
Basic blocks and control flow graphs
Structure of the compiler
Run time administration
Design of a two pass assembler

What's hot (20)

PPTX
Direct linking loaders
PPTX
Ch 4 linker loader
PDF
loaders and linkers
PPTX
Assemblers
PPTX
System Programming Unit II
PPTX
Unit 3 sp assembler
PPTX
Single pass assembler
PPTX
Loaders ( system programming )
PPTX
Macro Processor
PPTX
Fundamentals of Language Processing
PDF
Unit 3
PPTX
System Programming- Unit I
PPT
Loaders
PDF
Macro-processor
PPT
Assemblers: Ch03
PPTX
The analysis synthesis model of compilation
PPTX
System software - macro expansion,nested macro calls
PPTX
Direct linking loader
PPT
Comet Cloud
Direct linking loaders
Ch 4 linker loader
loaders and linkers
Assemblers
System Programming Unit II
Unit 3 sp assembler
Single pass assembler
Loaders ( system programming )
Macro Processor
Fundamentals of Language Processing
Unit 3
System Programming- Unit I
Loaders
Macro-processor
Assemblers: Ch03
The analysis synthesis model of compilation
System software - macro expansion,nested macro calls
Direct linking loader
Comet Cloud
Ad

Similar to Two pass Assembler (20)

PDF
computer architecture Lecture 8 for computer science
PPT
Unit 3 assembler and processor
PPT
8051assembly language
DOC
35787646 system-software-lab-manual
PPTX
SPOS UNIT1 PPTS (1).pptx
PDF
Assembler
PPTX
Ch 3 Assembler in System programming
PPTX
Assembly Language Compiler Implementation
PPTX
System software module 1 presentation file
PPTX
Unit1 111206003944-phpapp02
PPTX
Programming the basic computer
PPTX
Computer Organization
PPTX
Assembler - System Programming
PPSX
Spr ch-02
PPTX
First pass of assembler
PPTX
CH-3 CO-all-about-operating-system(Update).pptx
PPT
Assembler
PPTX
3.ASSEMBLERS.pptx
PDF
Microprocessor 8086-lab-mannual
PPTX
computer architecture Lecture 8 for computer science
Unit 3 assembler and processor
8051assembly language
35787646 system-software-lab-manual
SPOS UNIT1 PPTS (1).pptx
Assembler
Ch 3 Assembler in System programming
Assembly Language Compiler Implementation
System software module 1 presentation file
Unit1 111206003944-phpapp02
Programming the basic computer
Computer Organization
Assembler - System Programming
Spr ch-02
First pass of assembler
CH-3 CO-all-about-operating-system(Update).pptx
Assembler
3.ASSEMBLERS.pptx
Microprocessor 8086-lab-mannual
Ad

More from Satyamevjayte Haxor (16)

DOCX
Processes and threads
PPTX
PPT
Uml class Diagram
DOCX
Uml Common Mechanism
PPTX
Types and roles
DOCX
States machine
PPTX
What is symbol table?
PPTX
PPTX
sCode optimization
PPTX
Nested micro
PPTX
Multiplier control unit
PPTX
Control unit design
PPTX
PPTX
Keyword Presentation
PPTX
Linking in MS-Dos System
Processes and threads
Uml class Diagram
Uml Common Mechanism
Types and roles
States machine
What is symbol table?
sCode optimization
Nested micro
Multiplier control unit
Control unit design
Keyword Presentation
Linking in MS-Dos System

Recently uploaded (20)

PDF
MiniTool Power Data Recovery 12.6 Crack + Portable (Latest Version 2025)
PDF
IDM Crack 6.42 Build 42 Patch Serial Key 2025 Free New Version
PDF
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
PPTX
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
PPTX
Odoo ERP for Injection Molding Industry – Optimize Production & Reduce Scrap
PPTX
Viber For Windows 25.7.1 Crack + Serial Keygen
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PDF
What Makes a Great Data Visualization Consulting Service.pdf
PPTX
Python is a high-level, interpreted programming language
PPTX
Airline CRS | Airline CRS Systems | CRS System
PDF
Internet Download Manager IDM Crack powerful download accelerator New Version...
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PDF
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
PDF
Crypto Loss And Recovery Guide By Expert Recovery Agency.
PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PPTX
Human-Computer Interaction for Lecture 1
PPTX
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PPTX
Folder Lock 10.1.9 Crack With Serial Key
MiniTool Power Data Recovery 12.6 Crack + Portable (Latest Version 2025)
IDM Crack 6.42 Build 42 Patch Serial Key 2025 Free New Version
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
DevOpsDays Halifax 2025 - Building 10x Organizations Using Modern Productivit...
Odoo ERP for Injection Molding Industry – Optimize Production & Reduce Scrap
Viber For Windows 25.7.1 Crack + Serial Keygen
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
What Makes a Great Data Visualization Consulting Service.pdf
Python is a high-level, interpreted programming language
Airline CRS | Airline CRS Systems | CRS System
Internet Download Manager IDM Crack powerful download accelerator New Version...
BoxLang Dynamic AWS Lambda - Japan Edition
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
Crypto Loss And Recovery Guide By Expert Recovery Agency.
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
Human-Computer Interaction for Lecture 1
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
Practical Indispensable Project Management Tips for Delivering Successful Exp...
Folder Lock 10.1.9 Crack With Serial Key

Two pass Assembler