Вы находитесь на странице: 1из 28

SYSTEMS PROGRAMMING

ASSEMBLER
Dr. Biju Raveendran
BITS Pilani WILP & Department of CS & IS
Pilani Campus
Last Lecture

• System calls related to process
– fork
– wait
– exec
– exit
– signal
– kill
– raise

2
BITS Pilani, Pilani Campus
Today’s Agenda

• Assembler
• Assembler directives
• Object program
• Two pass assembler
• Data structure used in assembler
– OPTAB
– SYMTAB
– LOCCTR
3
BITS Pilani, Pilani Campus
Software

• software, is a collection of computer programs 
and related data that provide the instructions 
telling a computer what to do and how to do it
Classification
Software

Application Software System Software

4
BITS Pilani, Pilani Campus
System software

• System software is computer software designed 
to operate the computer hardware and to 
provide a platform for running application 
software.
• Examples :
– Loaders
– Assembler 
– Linkers
– Operating system
– Compilers
– Editors
5
BITS Pilani, Pilani Campus
Assemblers

6
BITS Pilani, Pilani Campus
Assemblers

7
BITS Pilani, Pilani Campus
Assembler’s functions

• Convert mnemonic operation codes to their 
machine language equivalents
• Convert symbolic operands to their equivalent 
machine addresses 
• Build the machine instructions in the proper 
format
• Convert the data constants to internal machine 
representations
• Write the object program and the assembly 
listing
8
BITS Pilani, Pilani Campus
Pseudo code

Program copy {
save return address;
cloop:   call subroutine RDREC to read one record;
if length(record)=0 {
call subroutine WRREC to write EOF;
}  else {
call subroutine WRREC to write one record;
goto cloop;  
}
load return address
return to caller
}
9
BITS Pilani, Pilani Campus
Pseudo code

Subroutine RDREC { EOR: 
character x‘00’
clear A, X register to 0;
rloop:    read character from input device to A register
if not EOR {
store character into buffer[X];
X++;
if X < maximum length
goto rloop;  

store X to length(record);
return 
}
10
BITS Pilani, Pilani Campus
Pseudo code
Subroutine WDREC {
clear X register to 0;
wloop: get character from buffer[X]
write character from X to output device
X++;
if X < length(record)
goto wloop;
return
}

11
BITS Pilani, Pilani Campus
Assembler Directives

• Pseudo‐Instructions
– Not translated into machine instructions
– Providing information to the assembler
• Basic assembler directives
– START Specify name and starting address for the program
– END end of the program
– BYTE generate character or hexadecimal constant, 
occupying as  many bytes as needed to represent 
the constant 
– WORD generate one‐word integer constant
– RESB reserve the indicated number of bytes for a data area
– RESW reserve the indicated number of words for a data area

12
BITS Pilani, Pilani Campus
Program – takes input from input device 
F1 and copies them to output device 05
Line Loc Label Inst Arg Obj code
5 1000 COPY START 1000
10 1000 FIRST STL RETADR 141033
15 1003 CLOOP JSUB RDREC 482039
20 1006 LDA LENGTH 001036
25 1009 COMP ZERO 281030
30 100C JEQ ENDFIL 301015
35 100F JSUB WRREC 482061
40 1012 J CLOOP 3C1003
45 1015 ENDFIL LDA EOF 00102A
50 1018 STA BUFFER 0C1039
55 101B LDA THREE 00102D
60 101E STA LENGTH 0C1036
65 1021 JSUB WRREC 482061 13
BITS Pilani, Pilani Campus
Program – takes input from input device 
F1 and copies them to output device 05
Line Loc Label Inst Arg Obj code
70 1024 LDL RETADR 081033
75 1027 RSUB 4C0000
80 102A EOF BYTE C’EOF’ 454F46
85 102D THREE WORD 3 000003
90 1030 ZERO WORD 0 000000
95 1033 RETADR RESW 1
100 1036 LENGTH RESW 1
105 1039 BUFFER RESB 4096
110
115 SUB ROUTINE TO READ RECORD INTO BUFFER

120
125 2039 RDREC LDX ZERO 041030
130 203C LDA ZERO 001030 14
BITS Pilani, Pilani Campus
Assembler 

• Translation of source program to object code 
requires following function
1. Convert mnemonics operation codes to their machine 
language equivalents
• E.g: Translate STL to 14
2. Convert symbolic operands to their equivalent machine 
address
• E.g: Translate RETADR to 1033 
3. Build the machine instructions in the proper format
4. Convert the data constants specified in the source 
program into their internal machine representations
• Translate EOF to 454F46
5. Write the object program and assembly listing 15
BITS Pilani, Pilani Campus
Assembler

• All the steps except step 2 can easily be 
accomplished by sequential processing of the 
source program, one line at a time
• Step 2 can not be achieved by sequential 
processing
– Contains forward reference
– Assembler has to make 2 passes to resolve this
• Pass 1 for label definition and assign address
• Pass 2 for translation
16
BITS Pilani, Pilani Campus
Assembler

• Assembler functionality
– Translate source program to object code
– Process statements called assembler directives
• Assembler directives are not translated into machine 
instructions
• Assembler directives provide instructions to the 
assembler itself
• Example: BYTE, WORD, RESB, RESW, START, END

17
BITS Pilani, Pilani Campus
Object Program

• Simple object program format contains 3 
types of records
– Header
• Starting address, program name and length
– Text
• Translated instructions and data of the program 
together with an indication of the addresses where 
these are to be loaded
– End
• Marks the end of the program and specifies the address 
in the program where the execution is to begin
18
BITS Pilani, Pilani Campus
Object Program

Header
Col. 1 H
Col. 2~7 Program name
Col. 8~13 Starting address (hex)
Col. 14‐19 Length of object program in bytes (hex)
Text 
Col.1  T
Col.2~7 Starting address in this record (hex)
Col. 8~9 Length of object code in this record in bytes (hex)
Col. 10~69 Object code (69‐10+1)/6=10 instructions
End
Col.1 E
Col.2~7 Address of first executable instruction (hex)
(END program_name) 19
BITS Pilani, Pilani Campus
Object Code

H COPY  001000 00107A

T 001000 1E  141033 482039 001036 281030 301015 482061 ...

T 00101E  15 0C1036 482061 081044 4C0000 454F46  000003 … 

T 002039  1E 041030  001030 E0205D  30203F D8205D 281030 …

T 002057  1C  101036  4C0000  F1  001000 041030  E02079 …

T 002073  07 382064  4C0000 05

E 001000
20
BITS Pilani, Pilani Campus
Object Code

21
BITS Pilani, Pilani Campus
Difficulties: Forward Reference

Forward reference: reference to a label that is 
defined later in the program.

Loc Label Operator Operand

1000 FIRST STL RETADR

1003 CLOOP JSUB RDREC


… … … … …
1012 J CLOOP
… … … … …
1033 RETADR RESW 1

22
BITS Pilani, Pilani Campus
Two Pass Assembler

Pass 1
‐Assign addresses to all statements in the program
‐Save the values assigned to all labels for use in Pass 2
‐Perform some processing of assembler directives
• determine the length of data areas defined by BYTE, RESW etc..
Pass 2
Assemble instructions
Generate data values defined by BYTE, WORD
Perform processing of assembler directives not done in Pass 1
Write the object program and the assembly listing

23
BITS Pilani, Pilani Campus
Two Pass Assembler 

Read from input line
LABEL, OPCODE, OPERAND
Source
program

Intermediate Object 
Pass 1 Pass 2 
file codes
OPTAB SYMTAB SYMTAB

24
BITS Pilani, Pilani Campus
Data Structures
• Operation Code Table (OPTAB)
• Used to lookup mnemonic operation codes and 
translate them to their machine language equivalents
• If variable length instruction format: OPTAB contains 
length of the instruction as well
• Organized as hash table with mnemonic operation code 
as key
• OPTAB is a static table

25
BITS Pilani, Pilani Campus
Data Structures
• Symbol Table (SYMTAB)
• Used to store values (addresses) 
assigned to labels COPY 1000
• Contains the name and value (address)  FIRST  1000
CLOOP 1003
for each label in the source program,  ENDFIL 1015
together with flags to indicate error  EOF 1024
THREE 102D
conditions ZERO 1030
• label name, value, flag, (type,  RETADR 1033
LENGTH 1036
length) etc BUFFER 1039
• Organized as hash table for efficiency  RDREC 2039

of insertion & retrieval
• Dynamic table (insert, delete, search) 26
BITS Pilani, Pilani Campus
Data Structures
• Location Counter(LOCCTR)
• Used to help in the assignment of addresses
• Initialized to the address specified in the START 
statement
• After each source statement is processed, the length 
of the assembled instruction or data area to be 
generated is added to LOCCTR

27
BITS Pilani, Pilani Campus
Next Lecture

• Linker and Loader

28
BITS Pilani, Pilani Campus

Вам также может понравиться