Assembler M/C Independent Features and Design Options: Chapter No. 3
Assembler M/C Independent Features and Design Options: Chapter No. 3
Independent Features
and Design options
CHAPTER NO. 3
Machine Independent
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 program
◦ e.g. 45 001A ENDFIL LDA =C’EOF’ 032010
◦ 93 LTORG
◦ 002D * =C’EOF’ 454F46
◦ e.g. 215 1062 WLOOP TD =X’05’ E32011
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
002D-
Compare (Fig. 2.6) 001D=0010
◦ e.g. 45 001A ENDFIL LDA EOF 032010
◦ 80 002D EOF BYTE C’EOF’ 454F46
Literal - Implementation (1/3)
Literal pools
◦ Normally literals are placed into a pool at the end of the
program
◦ see Fig. 2ss fig\2.10.doc.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
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
Literal - Implementation (3/3)
LITTAB
◦ literal name, the operand value and length, the address assigned to the operand
Pass 1
◦ build LITTAB with literal name, operand value and length, leaving the 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
Symbol-Defining Statements
User defined symbols : Labels on instructions or data areas
◦ the value of such a label is the address assigned to the statement
Defining symbols :assembler directive EQU(equate)
◦ symbol EQU value
◦ value can be: constant, other symbol, expression
◦ making the source program easier to understand
◦ no forward reference
Symbol-Defining Statements
Establish symbolic names to improve readability in place of numeric
values.
E.g., +LDT #4096 can be changed to :
MAXLEN EQU 4096
+LDT #MAXLEN
When the assembler encounters the EQU statement, it enters
MAXLEN into SYMTAB (with value 4096).
During assembly of the LDT instruction, the assembler searches
SYMTAB for the symbol MAXLEN, using its value as the operand in
the instruction.
Symbol-Defining Statements
Example 1
◦ MAXLEN EQU 4096 +LDT #4096
◦ +LDT #MAXLEN
Example 2 (Many general purpose registers)
◦ BASE EQU R1
◦ COUNTEQU R2
◦ INDEX EQU R3
Example 3
◦ MAXLEN EQU BUFEND-BUFFER
Symbol-Defining Statements
Define mnemonic names for registers:
ORG (origin)
Indirectly assign values to symbols
Reset the location counter to the specified value
◦ ORG value
The ORG statement will thus affect the values of all labels defined
until the next ORG.
We can then use LDA VALUE, X to fetch the VALUE field from the table entry
indicated by the content of register X.
To fetch the next record, X is added by 6 + 1 + 2.
Program with Using ORG
Allowed
Not allowed
ORG Restriction
Not allowed
Not allowed
Expression
So far, when we define the value of a symbol or label, only one term
is used.
◦ E.g., 106 BUFEND EQU*
Example
◦ 20 0006 0 LDA LENGTH 032060
◦ LENGTH=(Block 1)+0003= 0066+0003= 0069
◦ LOCCTR=(Block 0)+0009= 0009
Program Readability
Program readability
◦ No extended format instructions on lines 15, 35, 65
◦ No needs for base relative addressing (line 13, 14)
◦ LTORG is used to make sure the literals are placed ahead of any
large data areas (line 253)
Object code
◦ It is not necessary to physically rearrange the generated code in the object
program
◦ see Fig. 2.13, Fig. 2.14
Object Program
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
◦ Fig. 2.15, 2.16
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
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 (hexadecimal)
◦ 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
Modification Record
◦ Col. 1 M
◦ Col. 2-7 Starting address of the field to be modified (hexadecimal)
◦ Col. 8-9 Length of the field to be modified, in half-bytes (hexadecimal)
◦ 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
◦ M00000705+COPY
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
◦ Ex: RDREC-COPY
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.
Assembler Design Options
ONE-PASS ASSEMBLERS
MULTI-PASS ASSEMBLERS
TWO-PASS ASSEMBLER WITH
OVERLAY STRUCTURE
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
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
One-Pass Assemblers
Main Problem
◦ forward reference
◦ data items
◦ labels on instructions
Figure 2.21
End of Chapter 03