0% found this document useful (0 votes)
315 views

Unit2 Assembler

The document discusses the functions and design of assemblers. It explains that assemblers translate assembly language programs into machine code by converting mnemonic operation codes to machine language equivalents and symbolic operands to machine addresses. Assemblers typically use a two-pass approach, symbol tables, and operation code tables to handle forward references and other complexities in the assembly process.

Uploaded by

Ramesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
315 views

Unit2 Assembler

The document discusses the functions and design of assemblers. It explains that assemblers translate assembly language programs into machine code by converting mnemonic operation codes to machine language equivalents and symbolic operands to machine addresses. Assemblers typically use a two-pass approach, symbol tables, and operation code tables to handle forward references and other complexities in the assembly process.

Uploaded by

Ramesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 165

SYSTEM SOFTWARE

UNIT 2

Assemblers
Outline
 Basic Assembler Functions(SIC, algorithm,
data structure)
 Machine-dependent Assembler

Features(Instruction formats , addressing


modes , program relocation)
 Machine-independent Assembler

Features(literals,SDS,expressions,program
blocks,control sections,program linking).
 Assembler Design Options(one pass ,

multipass
Role of Assembler

Source Object
Assembler Linker
Program Code

Executable
Code

Loader

Chap 2
Assembler
 


Programming language processor that
translates an assembly language program (the
source program) to the machine language .

Chap 2
Introduction to Assemblers

Fundamental functions
 translating mnemonic operation codes to their
machine language equivalents
 assigning machine addresses to symbolic
labels


Machine dependency
 different machine instruction formats and codes

Chap 2
Assembler Directives

Pseudo-Instructions
 Not translated into machine instructions
 Providing information to the assembler

Basic assembler directives
 START:specify name and starting address of program.
 END: specify end of source program and first executable
instruction in the program.
 BYTE: generate character or hexadecimal constant.
 WORD:generate one word integer constant.
 RESB:indicated number of bytes are reserved in data area.
 RESW:indicated number of words are reserved in data
area.

Chap 2
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

Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
The line numbers are for reference only.
Indexing addressing is indicated by adding the
modifier “,X”

Lines beginning with “.”contain comments
only.

Reads records from input device (code F1)

Copies them to output device (code 05)

At the end of the file, writes EOF on the output
device, then RSUB to the operating system

Chap 2
Example Program (Fig. 2.1)

Data transfer (RD, WD)
 a buffer is used to store record
 buffering is necessary for different I/O rates
 the end of each record is marked with a null
character (0016)
 the end of the file is indicated by a zero-length
record

Subroutines (JSUB, RSUB)
 RDREC, WRREC
 save link register first before nested jump

Chap 2
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

Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
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~69Object code (69-10+1)/6=10 instructions

End
Col.1 E
Col.2~7 Address of first executable instruction (hex)
(END program_name)
Chap 2
Fig. 2.3
H COPY 001000 00107A
T 001000 1E 141033 482039 001036 281030 301015 482061 ...
T 00101E 15 0C1036 482061 081044 4C0000 454F46 000003 000000
T 002039 1E 041030 001030 E0205D 30203F D8205D 281030 …
T 002057 1C 101036 4C0000 F1 001000 041030 E02079 302064 …
T 002073 07 382064 4C0000 05
E 001000

Chap 2
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

Chap 2
Forward Referencing

If we attempt to translate the source program
line by line we will be unable to process this
statement because we do not know which
address will be assigned to RETADR.

Due to this most assemblers make two
passes.

First pass does little more than scan for label
definition and assign the addresses

Second does actual translation.

Chap 2
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

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

Chap 2
Two Pass Assembler

Read from input line
 LABEL, OPCODE, OPERAND

Source
program

Intermediate Object
Pass 1 Pass 2
file codes

OPTAB SYMTAB SYMTAB

Chap 2
Data Structures

1. Operation Code Table (OPTAB)

2. Symbol Table (SYMTAB)

3. Location Counter(LOCCTR)

Chap 2
Operation Code Table (OPTAB)

OPTAB is used to look up mnemonic instructions and
translate them to their Machine language codes.
 OPTAB must contain (at least) the Mnemonic operation
code and its machine language equivalents.
 In complex assemblers, this table also contains
information about instruction format and its length.

During PASS 1 OPTAB is used to look up and validate
operation codes in the source program.


In PASS 2 OPTAB is used to translate the operation codes
to machine language .


IN SIC assembler both of these processes could be done
together in either PASS 1 or PASS 2.
Chap 2
In Complex Assembler
( SIC/XE)

OPTAB Structure
Mnemonic Opcode Format
(M/c Eqt code)
Op
era ADD m 58 3/4
n d ADDR r1, r2 90 2
CLEAR r1 B4 2
J m 3C 3/4

RSUB 4C 3/4
o de
n C FLOAT C0 1
a t io
p er .
O .
.
.

Chap 2
Location Counter (LOCCTR)

LOCCTR is a variable used to help in the assignment of
addresses to the labels.


LOCCTR is initialized to the beginning address specified in
the START statement.

By default LOCCTR is initialized to 0, if the beginning address is not


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.


Whenever we reach a label in the source program, the
current value of LOCCTR gives the address to be associated
with the label.

Chap 2
Symbol Table (SYMTAB)

SYMTAB is used to store values (addresses)
assigned to labels.


SYMTAB includes the name and value
(address) field for each label in the source
program.


SYMTAB is also contain a Flag field, used to
indicate error conditions.
(e.g. a symbol defined in two different places)

Chap 2
SYMTAB Structure

SYMBOL VALUE FLAGS


LIST 1026

BACK 0056

. m,
r a
. prog
u rce
. t he so
. ces i n y m bo l
t pla E s
n T
if f ere LICA
o d UP
t w D
ed in s as
d efin dition
T i s r c on
l LIS erro
m bo icate
t he sy gs ind
If F la
t he n
Chap 2
Function of SYMTAB during PASS 1 and PASS 2

During PASS1 of the assembler, labels are
inserted into the SYMTAB as they are
encountered in the source program along with
their assigned addresses (from LOCCTR).


During PASS 2, symbols used as OPERANDS
are looked up in SYMTAB to obtain the
addresses to be inserted in the assembled
instructions.

Chap 2
Chap 2
SYMTAB (symbol table)
COPY 1000
FIRST 1000
CLOOP 1003
ENDFIL 1015
EOF 1024
THREE 102D
ZERO 1030
RETADR 1033
LENGTH 1036
BUFFER 1039
RDREC 2039

Chap 2
Intermediate File

It is possible for both the passes of the assembler to
read the original source program as input.

There is certain information such as location counter
values and error flags for statements. (Obtained in
PASS 1), can or should be communicated between
the two passes.

For this reason PASS 1 usually writes an intermediate
file that contains each source program statements
along with its assigned address, error indicators,
etc…

This intermediate file is given as an input to the PASS
2 of assembler.

Chap 2
Assumptions: ( Two Pass Assembler)

For simplicity we assume that, source
programs are written in a fixed format with
fields as
LABEL OPCODE OPERAND

If one of these fields contains a character string that


represents a number, we denote its numeric value with the
prefix #
For e.g. #[OPERAND]

Chap 2
Two PASS Assembler Algorithms.


PASS 1 Algorithm of Two PASS Assembler.


PASS 2 Algorithm of Two PASS Assembler.

Chap 2
PASS 1 Algorithm


Original source program as input.


Intermediate file as the output.

Chap 2
Chap 2
Chap 2
Source Program

Chap 2
Subroutine Program to READ record into BUFFER

Chap 2
Subroutine Program to WRITE record from BUFFER

Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Output of PASS 1 Assembly Process (Intermediate File)

Chap 2
Chap 2
Chap 2
PASS 2 Algorithm

Intermediate File as input.


Object Code as the output

Chap 2
Chap 2
Chap 2
Chap 2
Output of PASS 2 Assembly Process (Object Code)

Chap 2
Object Code

Chap 2
Object Code

Chap 2
Homework #3
SUM START 4000
FIRST LDX ZERO
LDA ZERO
LOOP ADD TABLE,X
TIX COUNT
JLT LOOP
STA TOTAL
RSUB
TABLE RESW 2000
COUNTRESW 1
ZERO WORD 0
TOTAL RESW 1
END FIRST

Chap 2
Assembler Design

Machine Dependent Assembler Features
 instruction formats and addressing modes
 program relocation

Machine Independent Assembler Features
 literals
 symbol-defining statements
 expressions
 program blocks
 control sections and program linking

Chap 2
Machine-dependent
Assembler Features
Sec. 2-2

Instruction formats and addressing modes

Program relocation
Line Location Source Statement Object Code

5 0000 COPY START 0

10 0000 FIRST STL RETADR 17202D


12 0003 LDB #LENGTH 69202D
13 BASE LENGTH

15 0006 CLOOP +JSUB RDREC 4B101036


20 000A LDA LENGTH 032026
25 000D COMP #0 290000
30 0010 JEQ ENDFIL 332007
35 0013 +JSUB WRREC 4B10105D
40 0017 J CLOOP 3F2FEC
45 001A ENDFIL LDA EOF 032010
50 001D STA BUFFER 0F2016
Chap 2
55 0020 LDA #3 010003
60 0023 STA LENGTH 0F200D
65 00026 +JSUB WRREC 4B10105D
70 002A J @RETADR 3E2003
80 002D EOF BYTE C’EOF’ 454F46
95 0030 RETADR RESW 1
100 0033 LENGTH RESW 1
105 0036 BUFFER RESB 4096
110 .
115 . SUBROUTINE TO READ RECORD INTO BUFFER
120 .
125 1036 RDREC CLEAR X B410
130 1038 CLEAR A B400
132 103A CLEAR S B440
133 103C +LDT #4096 75101000
135 1040 RLOOP TD INPUT E32019

140 1043 JEQ RLOOP 332FFA

145 1046 RD INPUT DB2013

150 1049 COMPR A, S A004

155 104B JEQ EXIT 332008

160 104E STCH BUFFER, X 57C003

165 1051 TIXR T B850

170 1053 JLT RLOOP 3B2FEA

175 1056 EXIT STX LENGTH 134000

180 1059 RSUB 4F0000


185 105C INPUT BYTE X ’F1’ F1
195
200
205
210 105D WRREC CLEAR X B410
212 105F LDT LENGTH 774000
215 1062 WLOOP TD OUTPUT E32011
220 1065 JEQ WLOOP 332FFA
225 1068 LDCH BUFFER, X 53C003
230 106B WD OUTPUT DF2008
235 106E TIXR T B850
240 1070 JLT WLOOP 3B2FEF
245 1073 RSUB 4F0000
250 1076 OUTPUT BYTE X ‘05’ 05
255 END FIRST
Instruction Format and Addressing Mode

SIC/XE
 PC-relative or Base-relative addressing: op m
 Indirect addressing: op @m
 Immediate addressing: op #c
 Extended format: +op m
 Index addressing: op m,x
 register-to-register instructions
 larger memory -> multi-programming (program
allocation)

Example program
Translation

Register translation
 register name (A, X, L, B, S, T, F, PC, SW) and their
values (0,1, 2, 3, 4, 5, 6, 8, 9)
 preloaded in SYMTAB

Address translation
 Most register-memory instructions use program counter
relative or base relative addressing
 Format 3: 12-bit address field
 base-relative: 0~4095
 pc-relative: -2048~2047
 Format 4: 20-bit address field

Chap 2
Line Location Source Statement Object Code

5 0000 COPY START 0

10 0000 FIRST STL RETADR 17202D


12 0003 LDB #LENGTH 69202D
13 BASE LENGTH

15 0006 CLOOP +JSUB RDREC 4B101036


20 000A LDA LENGTH 032026
25 000D COMP #0 290000
30 0010 JEQ ENDFIL 332007
35 0013 +JSUB WRREC 4B10105D
40 0017 J CLOOP 3F2FEC
45 001A ENDFIL LDA EOF 032010
50 001D STA BUFFER 0F2016
Chap 2
55 0020 LDA #3 010003
60 0023 STA LENGTH 0F200D
65 00026 +JSUB WRREC 4B10105D
70 002A J @RETADR 3E2003
80 002D EOF BYTE C’EOF’ 454F46
95 0030 RETADR RESW 1
100 0033 LENGTH RESW 1
105 0036 BUFFER RESB 4096
110 .
115 . SUBROUTINE TO READ RECORD INTO BUFFER
120 .
125 1036 RDREC CLEAR X B410
130 1038 CLEAR A B400
132 103A CLEAR S B440
133 103C +LDT #4096 75101000
Machine dependent Assembler features:


Addressing modes and instruction
formats.

Program relocation.

Chap 2
PC-Relative Addressing Modes
PC-Relative Addressing Modes


PC-relative
 10 0000 FIRST STL RETADR 17202D

op(6) n I xbp e disp(12)


(14)16 110010 (02D) 16
 displacement= RETADR - PC = 30-3 = 2D
 40 0017 J CLOOP 3F2FEC

op(6) n I xbp e disp(12)


(3C)16 1 1 0 0 1 0 (FEC) 16
 displacement= CLOOP-PC= 6 - 1A= -14= FEC

Chap 2
Immediate Address Translation
Immediate Address Translation


Immediate addressing
 55 0020 LDA #3 010003
op(6) n I xbp e disp(12)
( 00 )16 010000 ( 003 ) 16

 133 103C +LDT #4096 75101000


op(6) n I xbp e disp(20)
( 74 )16 010001 ( 01000 ) 16

Chap 2
Immediate Address Translation (Cont.)


Immediate addressing
 12 0003 LDB #LENGTH 69202D
op(6) n I xbp e disp(12)
( 68)16 010010 ( 02D ) 16

 the immediate operand is the symbol LENGTH


 the address of this symbol LENGTH is loaded into
register B
 LENGTH=0033=PC+displacement=0006+02D
 if immediate mode is specified, the target address
becomes the operand

Chap 2
Indirect Address Translation

Indirect addressing
 target addressing is computed as usual (PC-
relative or BASE-relative)
 only the n bit is set to 1
 70 002A J @RETADR 3E2003

op(6) n I xbp e disp(12)

( 3C )16 100010 ( 003 ) 16


 TA=RETADR=0030
 TA=(PC)+disp=002D+0003

Chap 2
Program Relocation

Relocation: which modifies the object program
so that it can be loaded at an address different
from the location originally specified.

A re-locatable program is an object program that
contains the information necessary to perform the
modification in the addresses used by the
program. The assembler can identify for loader
those part of the object program that need
modification.

Chap 2
A re-locatable program is an object program that
contains the information necessary to perform the
modification in the addresses used by the program.
The assembler can identify for loader those part of
the object program that need modification.
Let us consider one absolute assembly language
program. This program must be loaded at address
1000 (this address is specified during assembly time)
in order to execute properly.

55 101B LDA THREE 00102D

Chap 2
In the object program this statement is translated as
00102D, specifying that register A is loaded from
memory address 102D.
Suppose we load and execute program at address 2000
instead of address 1000. If we do this, address 102D will
not contain the value that we expect.
In fact it will be part of other user’s program. All we
need to make some change in the address portion of the
instruction, so that we can load and execute the program
at address 2000. So in order to change the address
portion of the instruction we need to modify the existing
object code program. This can be done by using program
relocation concept.

Chap 2
Let us consider one assembly level program, assembled using a
starting address 0000

The below fig shows this program loaded at starting address 0000. The
JSUB instruction is loaded at address 0006. The address of this
instruction contains 01036, which is the address of the instruction
labeled RDREC.

Chap 2
Now suppose that we want to load this program at 5000 as
shown in fig. The address of the instruction labeled RDREC is
then 6036. Thus JSUB instruction must be modified as shown
in fig

Chap 2
Similarly if we load this program at address 7420, the JSUB instruction
would need to be changed to 4B108456 correspond to the new address of
RDREC. (Here RDREC is always 1036 bytes away from the starting
address of the program.)

Chap 2
•When the assembler generates the object code
for the JSUB instruction we are considering, it
will insert the address of RDREC relative to the
start of the program.

•The assembler will generate a command for the


loader, instructing it to add the beginning
address of the program to the address field in
the JSUB instruction at load time.

Chap 2
Example

Chap 2
Relocatable Program


Modification record
 Col 1 M
 Col 2-7 Starting location of the address field to be
modified, relative to the beginning of the program
 Col 8-9 length of the address field to be modified, in half-
bytes

Chap 2
Object Code

Chap 2
Machine-Independent Assembler
Features
Literals
Symbol Defining Statement
Expressions
Program Blocks
Control Sections and Program
Linking
Literals

Design idea
 Let programmers to be able to write the value of a
constant operand as a part of the instruction that
uses it.
 This avoids having to define the constant elsewhere
in the program and make up a label for it.

Example
 e.g. 45 001A ENDFIL LDA =C’EOF’ 032010
 93 LTORG
 002D * =C’EOF’ 454F46
 e.g. 215 1062 WLOOP TD =X’05’ E32011

Chap 2
Literals vs. Immediate Operands

Immediate Operands
 The operand value is assembled as part of the
machine instruction
 e.g. 55 0020 LDA #3 010003

Literals
 The assembler generates the specified value
as a constant at some other memory location
 e.g. 45 001A ENDFIL LDA =C’EOF’ 032010

Chap 2
Chap 2
Chap 2
Chap 2
Literal - Implementation (1/3)

Literal pools
 Normally literals are placed into a pool at the
end of the program
 see Fig. 2.10 (END statement)
 In some cases, it is desirable to place literals
into a pool at some other location in the object
program
 assembler directive LTORG
 reason: keep the literal operand close to the
instruction

Chap 2
Literal - Implementation (2/3)

Duplicate literals
 e.g. 215 1062 WLOOP TD =X’05’
 e.g. 230 106B WD =X’05’
 The assemblers should recognize duplicate
literals and store only one copy of the specified
data value

Chap 2
Literal - Implementation (3/3)

LITTAB
 literal name, the operand value and length, the address assigned to the
operand

Pass 1 C'EOF' 454F46 3 002D
 build LITTAB with literal name, operand
X'05' value and length,
05 leaving
1 the
1076
address unassigned
 when LTORG statement is encountered, assign an address to each literal
not yet assigned an address

Pass 2
 search LITTAB for each literal operand encountered
 generate data values using BYTE or WORD statements
 generate modification record for literals that represent an address in the
program

Chap 2
Symbol-Defining Statements

Labels on instructions or data areas
 the value of such a label is the address assigned
to the statement

Defining symbols
 symbol EQU value
 value can be:  constant,  other symbol, 
expression
 making the source program easier to understand
 no forward reference

Chap 2
Symbol-Defining Statements

Example 1
 MAXLEN EQU 4096
 +LDT #MAXLEN +LDT #4096

Example 2 (Many general purpose registers)
 BASE EQU R1
 COUNT EQU R2
 INDEX EQU R3

Example 3
 MAXLEN EQU BUFEND-BUFFER

Chap 2
Symbol-Defining Statements

All symbols used to specify new location counter value must have
been previously defined.
ORG ALPHA
BYTE1 RESB 1
BYTE2 RESB 1
BYTE3 RESB 1
ORG
ALPHA RESW 1
Forward reference
ALPHA EQU BETA
BETA EQU DELTA
DELTA RESW 1
Need 3 passes

Chap 2
ORG (origin)

Indirectly assign values to symbols

Reset the location counter to the specified value
 ORG value

Value can be:  constant,  other symbol, 
expression

No forward reference

Example
 SYMBOL: 6bytes
SYMBOL VALUE FLAGS
 VALUE: 1word STAB
 FLAGS: 2bytes (100 entries)
. . .
. . .
. . .
Chap 2
ORG Example

Using EQU statements
 STAB RESB 1100
 SYMBOL EQU STAB
 VALUE EQU STAB+6
 FLAG EQU STAB+9

Using ORG statements
 STAB RESB 1100
 ORG STAB
 SYMBOL RESB 6
 VALUE RESW 1
 FLAGS RESB 2
 ORG STAB+1100

Chap 2
Expressions

Expressions can be classified as absolute
expressions or relative expressions
 MAXLEN EQU BUFEND-BUFFER
 BUFEND and BUFFER both are relative terms,
representing addresses within the program
 However the expression BUFEND-BUFFER represents
an absolute value

When relative terms are paired with opposite
signs, the dependency on the program starting
address is canceled out; the result is an absolute
value

Chap 2
Chap 2
SYMTAB


Errors:
 BUFEND+BUFFER
 100-BUFFER
 3*BUFFER

The type of an expression
 keep track of the types of all symbols defined in
the program
Symbol Type Value
RETADR R 30
BUFFER R 36
BUFEND R 1036
MAXLEN A 1000
Chap 2
Program Blocks

Program blocks
 refer to segments of code that are rearranged
within a single object program unit
 USE [blockname]
 Default block

 Each program block may actually contain


several separate segments of the source
program

Chap 2

Default: executable instructions

CDATA: all data areas that are less in
length

CBLKS: all data areas that consists of
larger blocks of memory

Chap 2
Program Blocks - Implementation

Pass 1
 each program block has a separate location counter
 each label is assigned an address that is relative to the start
of the block that contains it
 at the end of Pass 1, the latest value of the location counter
for each block indicates the length of that block
 the assembler can then assign to each block a starting
address in the object program

Pass 2
 The address of each symbol can be computed by adding the
assigned block starting address and the relative address of
the symbol to that block

Chap 2
Chap 2
Chap 2
Chap 2
Figure 2.12

Each source line is given a relative address
assigned and a block number
Block name Block number Address Length
(default) 0 0000 0066
CDATA 1 0066 000B
CBLKS 2 0071 1000


For absolute symbol, there is no block number
 Line of MAXLEN

Chap 2
Program Readability

Program readability
 No extended format instructions .(JSUB lines)
 No needs for base relative addressing .
 LTORG is used to make sure the literals are placed
ahead of any large data areas .

Object code
 It is not necessary to physically rearrange the
generated code in the object program

Chap 2
Chap 2
Control Sections and Program Linking

Control Sections
 are most often used for subroutines or other
logical subdivisions of a program
 the programmer can assemble, load, and
manipulate each of these control sections
separately
 instruction in one control section may need to refer
to instructions or data located in another section
 because of this, there should be some means for
linking control sections together

Chap 2
Chap 2
Chap 2
Chap 2
External Definition and References

External definition
 EXTDEF name [, name]
 EXTDEF names symbols that are defined in this control
section and may be used by other sections

External reference
 EXTREF name [,name]
 EXTREF names symbols that are used in this control
section and are defined elsewhere

Example
 15 0003 CLOOP +JSUB RDREC 4B100000
 160 0017 +STCH BUFFER,X 57900000
 190 0028 MAXLEN WORD BUFEND-BUFFER 000000

Chap 2
Implementation

The assembler must include information in the object program
that will cause the loader to insert proper values where they are
required

Define record
 Col. 1 D
 Col. 2-7 Name of external symbol defined in this control section
 Col. 8-13 Relative address within this control section (hexadeccimal)
 Col.14-73 Repeat information in Col. 2-13 for other external symbols

Refer record
 Col. 1 D
 Col. 2-7 Name of external symbol referred to in this control section
 Col. 8-73 Name of other external reference symbols

Chap 2
Modification Record

Modification record
 Col. 1 M
 Col. 2-7 Starting address of the field to be modified (hexiadecimal)
 Col. 8-9 Length of the field to be modified, in half-bytes
(hexadeccimal)
 Col.11-16 External symbol whose value is to be added to or subtracted
from the indicated field
 Note: control section name is automatically an external symbol, i.e. it is
available for use in Modification records.

Example
 Figure 2.17
 M00000405+RDREC

Chap 2
External References in Expression

Earlier definitions
 required all of the relative terms be paired in an expression
(an absolute expression), or that all except one be paired (a
relative expression)

New restriction
 Both terms in each pair must be relative within the
same control section
 Ex: BUFEND-BUFFER

In general, the assembler cannot determine whether or
not the expression is legal at assembly time. This work
will be handled by a linking loader.

Chap 2
Assembler Design Options

One-pass assemblers
Multi-pass assemblers
Two-pass assembler with overlay
structure
One-Pass Assemblers

Main problem
 forward references
 data items
 labels on instructions

Solution
 data items: require all such areas be defined
before they are referenced
 labels on instructions: no good solution

Chap 2
Load-and-go Assembler

Characteristics
 Useful for program development and testing
 Avoids the overhead of writing the object program out
and reading it back
 Both one-pass and two-pass assemblers can be
designed as load-and-go.
 However one-pass also avoids the over head of an
additional pass over the source program
 For a load-and-go assembler, the actual address
must be known at assembly time, we can use an
absolute program

Chap 2
Forward Reference in One-pass Assembler

For any symbol that has not yet been defined
1. omit the address translation
2. insert the symbol into SYMTAB, and mark this symbol
undefined
3. the address that refers to the undefined symbol is
added to a list of forward references associated with
the symbol table entry
4. when the definition for a symbol is encountered, the
proper address for the symbol is then inserted into any
instructions previous generated according to the
forward reference list

Chap 2
Load-and-go Assembler (Cont.)

At the end of the program
 any SYMTAB entries that are still marked with *
indicate undefined symbols
 search SYMTAB for the symbol named in the
END statement and jump to this location to
begin execution

The actual starting address must be
specified at assembly time

Example
 Figure 2.18, 2.19

Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Two-Pass Assembler with Overlay Structure

For small memory
 pass 1 and pass 2 are never required at the
same time
 three segments
 root: driver program and shared tables and
subroutines
 pass 1
 pass 2
 tree structure
 overlay program

Chap 2
Multi-Pass Assemblers

Restriction on EQU and ORG
 no forward reference, since symbols’ value
can’t be defined during the first pass

Example
 Use link list to keep track of whose value
depend on an undefined symbol

Figure 2.21

Chap 2
Chap 2
Chap 2
Chap 2
Chap 2
Loaders and Linkers

Chap 2
Chap 2
Simple Bootstrap Loader

Chap 2
Chap 2
Chap 2
Generate the object code and object program for the
program shown below:
LDX #0
LDT #100
LOOP TD INDEV
JEQ LOOP
RD INDEV
STCH RECORD, X
TIXR T
JLT LOOP
INDEV BYTE X ‘F1’
RECORD RESB 100
END
Assuming starting address 1000H
Opcode for mnemonics are as follows:
LDX = 04H LDT = 74H TD = E0H
JEQ=30H RD =D8H STCH = 54H
TIXR = B8H JLT =38H

Chap 2
Location Source Statement Object Code
1000 LDX #0 050000
1003 LDT #100 750100
1006 LOOP TD INDEV E3200E

1009 JEQ LOOP 332FFA

100C RD INDEV DB2008

100F STCH RECORD, X 57A006

1012 TIXR T B850

1014 JLT LOOP 3B2FEF


1017 INDEV BYTE X ‘F1’ F1
1018 RECORD RESB 100

END
At the end of First of Pass LOCCTR =1018+64(H) =107C

Chap 2
Object Program:
H ^001000^00007C
T^001000^18^050000^750100^E3200E^332FFA^DB2008^57A006^B850^3B2F
EF^F1
E^001000.

Chap 2
1.Generate the complete object program for the following
assembly level program with the symbol table. Assume (14 M)
CLEAR = B4 JLT = 38
LDT = 74 RSUB = 4C
TD = E0 LDCH = 50
JEQ = 30 WD = DC
TIXR = B8 X = 1 and T = 5
WRREC START 105D
CLEAR X
LDT LENGTH
WLOOP TD OUTPUT
JEQ WLOOP
LDCH BUFFER, X
WD OUTPUT
TIXR T
JLT WLOOP
RSUB
OUTPUT BYTE X ‘05’
BUFFER RESB 400
LENGTH RESB 2
END WRREC
Chap 2
During First Pass
Location Source statement
105D START
START
105D
105D LOCCTR = 105D
105D WRREC CLEAR X

Save starting address as 105D ------- specified in OPERAND field of


START statement and initialize location counter as 105D
SYMBOL VALUE FLAG

CLEAR X WRREC 105D

There is LOCCTR = 105D


no symbol defined + 2 field
in Label = 105F
for 2nd line in
source program, so the assembler refers OPTAB—to
see whether OPCODE is a valid instruction or not ? If
yes then add length of the instruction to LOCCTR

Chap 2
Intermediate File
Location Source statement

105D WRREC START 105D

105D CLEAR X
105F LDT LENGTH

LDT LENGTH
LOCCTR = 105F+3 =1062
assembler refers OPTAB—to see
whether OPCODE is a valid
instruction or not ? If yes then add
length of the instruction to LOCCTR

Chap 2
Location Source statement
Label Opcode Operand

105D WRREC START 105D


SYMTAB
105D SYMBOL WRREC
VALUE CLEAR
FLAGS X

105F LDT LENGTH


1062 WRREC 105D
WLOOP TD OUTPUT
1065 JEQ WLOOP
At the of
1068Length endtheofobject
First of Pass LOCCTR
program 1209 –=1207+2
=LDCH =1209
105D = 01AC
BUFFER, X
WLOOP 1062
106B WD OUTPUT
106E OUTPUT 1076 TIXR T

1070 JLT WLOOP


1073 BUFFER 1077 RSUB
1076 OUTPUT BYTE X ‘05’
LENGTH 1207
1077 BUFFER RESB 400
1207 LENGTH RESB 2
END WRREC
Chap 2
Object Program:
H^WRREC^00105D^0001AC
T^00105D^1A^B410^7721A5^E32011^332FFA^53A00C
^DF2008^B850^3B2FEF^4F0000^05
E^00105D.

Chap 2
Generate the complete object program for the following assembly
level program.
SUM START 0
FIRST CLEARX
LDA #0
+LDB #TOTAL
BASE TOTAL
LOOP ADD TABLE, X
TIX COUNT
JLT LOOP
STA TOTAL
COUNT RESW 1
TABLE RESW 2000
TOTAL RESW 1
END FIRST
Assume below opcodes(all in hexadecimal)
CLEAR =B4 LAD=00 LDB = 68 ADD = 18
TIX = 2C JLT = 38 STA = 0C

Chap 2
Location Source Statement Object Code
0000 SUM START 0

0000 FIRST CLEAR X B410

0002 LDA #0 010000


0005 +LDB #TOTAL 69101788

BASE TOTAL

0009 LOOP ADD TABLE, X 1BA00C


000C TIX COUNT 2F2006
000F JLT LOOP 3B2FF7
0012 STA TOTAL 0F4000
0015 COUNT RESW 1
0018 TABLE RESW 2000
1788 TOTAL RESW 1
END FIRST

At the end of First of Pass LOCCTR =1788+3 =178B

Chap 2
Object Program:
H^SUM^000000^00178B
T^000000^15^B410^010000^69101788^1BA00C^2F2006
^3B2FF7^0F0000
E^000000

Chap 2
Generate the object code and object program for the
program shown below:
LDX #0
LDT #100
LOOP TD INDEV
JEQ LOOP
RD INDEV
STCH RECORD, X
TIXR T
JLT LOOP
INDEV BYTE X ‘F1’
RECORD RESB 100
END
Assuming starting address 1000H
Opcode for mnemonics are as follows:
LDX = 04H LDT = 74H TD = E0H
JEQ=30H RD =D8H STCH = 54H
TIXR = B8H JLT =38H

Chap 2
Location Source Statement Object Code
1000 LDX #0 050000
1003 LDT #100 750100
1006 LOOP TD INDEV E3200E

1009 JEQ LOOP 332FFA

100C RD INDEV DB2008

100F STCH RECORD, X 57A006

1012 TIXR T B850

1014 JLT LOOP 3B2FEF


1017 INDEV BYTE X ‘F1’ F1
1018 RECORD RESB 100

END
At the end of First of Pass LOCCTR =1018+64(H) =107C

Chap 2
Object Program:
H ^001000^00007C
T^001000^18^050000^750100^E3200E^332FFA^DB2008^57A006^B850^3B2F
EF^F1
E^001000.

Chap 2
Generate the object code for the below SIC/XE assembly
language program. Also show the contents of symbol
table at the end of assembly process.
SUM START 4000
LDX #0
LDA #0
BASE COUNT
ADD TABLE,X
TIX COUNT
JLT LOOP
+ STA TOTAL
RSUB
TOTAL RESW 1
TABLE RESW 4000
COUNT RESW 1
END
Assume below opcodes (all in hexadecimal)
LDX =04 JLT=38 LDA=00 STA =0C
ADD=18 RSUB =4C TIX=2C

Chap 2
Location Source Statement Object Code
4000 SUM START 4000

4000 LDX #0 050000


4003 LDA #0 010000
BASE COUNT

4006 LOOP ADD TABLE,X 1BA010

4009 TIX COUNT 2F4000

400C JLT LOOP 3B2FF7

400F +STA TOTAL 0F104016

4013 RSUB 4F0000


4016 TOTAL RESW 1

4019 TABLE RESW 4000

6EF9 COUNT RESW 1

END

At the end of First of Pass LOCCTR =6EF9+3 =6EFC Chap 2


Object Program:
H ^SUM^004000^002EFC
T^004000^16^050000^010000^1BA010^ 2F4000^3B2FF7
^0F104016^4F0000
E^004000

Chap 2
Location Source statement Object Code

105D WRREC START 105D


105D WRREC CLEAR X B410

105F LDT LENGTH 7721A5


1062 WLOOP TD OUTPUT E32011
1065 JEQ WLOOP 332FFA
1068 LDCH BUFFER, X 53A00C
106B WD OUTPUT DF2008
106E TIXR T B850

1070 JLT WLOOP 3B2FEF


1073 RSUB 4F0000
1076 OUTPUT BYTE X ‘05’ 05
1077 BUFFER RESB 400
1207 LENGTH RESB 2
END WRREC

Chap 2

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy