The document discusses various aspects of assemblers including:
- The basic functions of assemblers including translating mnemonics to machine code, resolving symbolic references, and generating object code and listings.
- The data structures used by assemblers like the operation table (OPTAB) and symbol table (SYMTAB).
- Machine-dependent features supported by assemblers like different instruction formats, addressing modes, and relocation of programs.
- Machine-independent features including literals, literal pools, and directives to handle constants in a relocatable way.
The document discusses the functions and design of assemblers. It describes how assemblers work in multiple passes to translate assembly language code into executable object code. The key functions of assemblers include translating mnemonics to machine code, resolving symbolic addresses, building proper instruction formats, and generating listing files and object code files. Assemblers use tables like the operation code table and symbol table to perform these translation and resolution functions.
This document discusses assembler functions and design. It describes how assemblers translate mnemonic operation codes to machine language equivalents and assign addresses to symbolic labels. It discusses machine-dependent features like instruction formats and addressing modes. It also covers machine-independent features such as literals, symbol definitions, expressions, and program linking. The document uses examples to illustrate assembler directives, object code format, and how a two-pass assembler handles forward references.
The document discusses various aspects of assembler design and implementation including:
1) The basic functions of an assembler in translating mnemonic codes to machine language equivalents and assigning addresses to symbolic labels.
2) Machine-dependent features like different instruction formats and addressing modes, and how programs are relocated during loading.
3) Machine-independent features including the use of literals, symbol-defining statements, expressions, program blocks, and linking of control sections between programs.
The document discusses various aspects of assembler design and implementation including:
1) The basic functions of an assembler in translating mnemonic codes to machine language and assigning addresses to symbols.
2) Machine-dependent features like different instruction formats and addressing modes, and how programs are relocated during assembly.
3) Machine-independent features including the use of literals, symbol-defining statements, expressions, program blocks, and linking of control sections between programs.
The document discusses assemblers and their role in translating assembly language to machine code. It covers the basic functions of assemblers, including translating mnemonic operation codes to machine language equivalents and assigning addresses to symbolic labels. It also discusses machine-dependent features like different instruction formats and addressing modes. Machine-independent features covered include literals, symbol definitions, expressions, program blocks, and linking sections of code. The document uses examples to illustrate assembler directives, object code format, and how assemblers handle forward references and relocatable code.
The document discusses the SIC and SIC/XE machine architectures and assembler concepts. It explains the three main data structures used by an assembler: the operation code table (OPTAB), symbol table (SYMTAB), and location counter (LOCCTR). It provides pseudocode for Pass 1 and Pass 2 of the assembling process. It also describes addressing modes, instruction formats, and how relocation is handled for generating relocatable object code.
This document describes the basic functions of an assembler including translating mnemonic operation codes to machine language equivalents, assigning addresses to symbolic labels, and building properly formatted machine instructions. It provides examples of assembly language code and discusses machine-dependent features like instruction formats and addressing modes as well as machine-independent features such as literals, symbol definitions, and program structure.
This document provides information about systems programming and assembly language concepts. It contains definitions of systems software and application programs. It also describes the basic components of a computer including the microprocessor, memory, I/O devices, and system bus. Finally, it explains concepts related to assembly language programming such as addressing modes, directives, and the control unit of the CPU.
The document discusses an example assembly language program that implements a delay of 0.01 seconds using an 8051 microcontroller. It explains that the program uses nested loops and a subroutine to achieve the fixed, loop, and adjustment times needed for the desired delay. Registers R0 and R1 are used to control the loop counts. The program returns after completing all loops and the subroutine to produce the accurate 0.01 second delay.
This document discusses assemblers and assembly language. It defines an assembler as a program that accepts assembly language as input and translates it into machine language. It describes the main components of assembly language statements, including labels, mnemonics, operands, and different statement types. It also explains the different data structures used by assemblers, including symbol tables, mnemonic tables, and location counters. Finally, it discusses the two-pass structure of assemblers, how they generate intermediate code on the first pass and then use that to resolve forward references and completely synthesize instructions on the second pass.
The document discusses the design of an assembler. It begins by outlining the general design procedure, which includes specifying the problem, defining data structures like symbol tables and opcode tables, specifying data formats, and specifying algorithms. It then discusses the specific design of an assembler, including stating the problem, defining data structures like symbol tables and opcode tables, specifying table formats, and looking for modularity. Finally, it provides an example assembly language program and discusses how the assembler would process it using the defined data structures and tables during its first and second passes.
The document discusses assemblers and their functions. It describes how assemblers translate mnemonic operation codes to machine language equivalents, assign addresses to symbolic labels, and handle forward references. The document also discusses two-pass assemblers, the data structures they use like the operation table and symbol table, and machine-dependent and independent features of assemblers.
The document provides information about programming basic computer operations like arithmetic, logic, and input/output operations using machine language and assembly language. It describes machine language and assembly language programming, including the use of pseudo instructions and address symbol tables. It provides examples of programming multiplication, loops, and double precision addition in assembly language.
One pass assembler, Two pass assembler,
Advanced Assembler Directives
Index
------
One-pass assembler
Forward Reference
Two-pass assembler using variant-I
Two-pass assembler using variant-II
Advanced Assembler Directives
Design of two pass assembler
This document provides an overview of machine instruction sets and classification of computers. It discusses different types of instruction sets including accumulator-based, stack-based, and general register machines. The components of an instruction set architecture (ISA) are defined, including registers, memory, instructions, and the fetch-execute cycle. Instructions are classified as data movement, arithmetic/logic, and branch instructions. Various addressing modes from 0 to 4 addresses are described along with examples of instruction formats for different addressing modes.
The document discusses code generation for expressions. It describes determining an evaluation order based on operator precedence, selecting instructions based on operand type and addressability, and using register descriptors to track partial results in registers. Register descriptors indicate which operand is in each register. Partial results are saved to a temporary memory location when registers are occupied. The code generation routine generates code based on the operand descriptors.
Absolute loaders are simple but require programmers to specify memory addresses. Relocating loaders modify object programs to load at different addresses, allowing more efficient memory usage and running of independent programs together. Bootstrap loaders are a type of absolute loader that load the first program, usually an operating system, when a computer starts up. Linking combines object programs, while linking loaders perform linking, relocation, library searching, and loading programs into memory for execution. Linkage editors produce linked load files but not loading, allowing separate loading. Dynamic linking postpones linking until runtime, allowing sharing of code.
B.sc cs-ii-u-3.1-basic computer programming and micro programmed controlRai University
油
1. The document discusses basic computer programming concepts and their relation to hardware instruction sets. It introduces an instruction set for a basic computer and describes machine language, assembly language, and the translation process from symbolic to binary code using an assembler.
2. It provides an example assembly language program to subtract two numbers and explains loops in programs using a Fortran example to add 100 numbers.
3. Programming techniques for arithmetic and logic operations like multiplication and double precision addition are demonstrated through examples.
Bca 2nd sem-u-3.1-basic computer programming and micro programmed controlRai University
油
The document discusses basic computer programming and microprogrammed control. It introduces basic programming concepts and their relation to hardware instruction representation. It then provides details on:
1. The instruction set of a basic computer including operations like AND, ADD, LDA, STA, etc.
2. The hierarchy of programming languages from low-level machine language to high-level languages like C++.
3. Details on assembly language including symbolic addressing, memory reference vs non-memory reference instructions, and pseudo instructions.
basic computer programming and micro programmed controlRai University
油
- The document discusses basic computer programming concepts and their relation to hardware representation of instructions. It introduces instruction sets, machine language, assembly language, and the translation process from symbolic to binary code using an assembler.
- The assembler performs two passes: the first generates an address symbol table by assigning memory locations to labels and operands, and the second translates the symbolic code to binary using lookup tables for instructions, operands, and the address symbol table.
- Assembly language allows the use of symbolic names for instructions, addresses, and operands, making programs more human-readable compared to binary or machine language.
Mca i-u-3-basic computer programming and micro programmed controlRai University
油
This document discusses basic computer programming and microprogrammed control. It introduces some basic programming concepts and their relation to hardware representation of instructions. It describes how a program may be dependent or independent of the computer that runs it. It also discusses machine language, assembly language, and the translation process from symbolic code to binary code using an assembler. Examples are provided of assembly language programs for addition and multiplication.
An instruction code consists of an operation code and operand(s) that specify the operation to perform and data to use. Operation codes are binary codes that define operations like addition, subtraction, etc. Early computers stored programs and data in separate memory sections and used a single accumulator register. Modern computers have multiple registers for temporary storage and performing operations faster than using only memory. Computer instructions encode an operation code and operand fields to specify the basic operations to perform on data stored in registers or memory.
The document discusses instruction set architecture (ISA), which is part of computer architecture related to programming. It defines the native data types, instructions, registers, addressing modes, and other low-level aspects of a computer's operation. Well-known ISAs include x86, ARM, MIPS, and RISC. A good ISA lasts through many implementations, supports a variety of uses, and provides convenient functions while permitting efficient implementation. Assembly language is used to program at the level of an ISA's registers, instructions, and execution order.
The document discusses an example assembly language program that implements a delay of 0.01 seconds using an 8051 microcontroller. It explains that the program uses nested loops and a subroutine to achieve the fixed, loop, and adjustment times needed for the desired delay. Registers R0 and R1 are used to control the loop counts. The program returns after completing all loops and the subroutine to produce the accurate 0.01 second delay.
This document discusses assemblers and assembly language. It defines an assembler as a program that accepts assembly language as input and translates it into machine language. It describes the main components of assembly language statements, including labels, mnemonics, operands, and different statement types. It also explains the different data structures used by assemblers, including symbol tables, mnemonic tables, and location counters. Finally, it discusses the two-pass structure of assemblers, how they generate intermediate code on the first pass and then use that to resolve forward references and completely synthesize instructions on the second pass.
The document discusses the design of an assembler. It begins by outlining the general design procedure, which includes specifying the problem, defining data structures like symbol tables and opcode tables, specifying data formats, and specifying algorithms. It then discusses the specific design of an assembler, including stating the problem, defining data structures like symbol tables and opcode tables, specifying table formats, and looking for modularity. Finally, it provides an example assembly language program and discusses how the assembler would process it using the defined data structures and tables during its first and second passes.
The document discusses assemblers and their functions. It describes how assemblers translate mnemonic operation codes to machine language equivalents, assign addresses to symbolic labels, and handle forward references. The document also discusses two-pass assemblers, the data structures they use like the operation table and symbol table, and machine-dependent and independent features of assemblers.
The document provides information about programming basic computer operations like arithmetic, logic, and input/output operations using machine language and assembly language. It describes machine language and assembly language programming, including the use of pseudo instructions and address symbol tables. It provides examples of programming multiplication, loops, and double precision addition in assembly language.
One pass assembler, Two pass assembler,
Advanced Assembler Directives
Index
------
One-pass assembler
Forward Reference
Two-pass assembler using variant-I
Two-pass assembler using variant-II
Advanced Assembler Directives
Design of two pass assembler
This document provides an overview of machine instruction sets and classification of computers. It discusses different types of instruction sets including accumulator-based, stack-based, and general register machines. The components of an instruction set architecture (ISA) are defined, including registers, memory, instructions, and the fetch-execute cycle. Instructions are classified as data movement, arithmetic/logic, and branch instructions. Various addressing modes from 0 to 4 addresses are described along with examples of instruction formats for different addressing modes.
The document discusses code generation for expressions. It describes determining an evaluation order based on operator precedence, selecting instructions based on operand type and addressability, and using register descriptors to track partial results in registers. Register descriptors indicate which operand is in each register. Partial results are saved to a temporary memory location when registers are occupied. The code generation routine generates code based on the operand descriptors.
Absolute loaders are simple but require programmers to specify memory addresses. Relocating loaders modify object programs to load at different addresses, allowing more efficient memory usage and running of independent programs together. Bootstrap loaders are a type of absolute loader that load the first program, usually an operating system, when a computer starts up. Linking combines object programs, while linking loaders perform linking, relocation, library searching, and loading programs into memory for execution. Linkage editors produce linked load files but not loading, allowing separate loading. Dynamic linking postpones linking until runtime, allowing sharing of code.
B.sc cs-ii-u-3.1-basic computer programming and micro programmed controlRai University
油
1. The document discusses basic computer programming concepts and their relation to hardware instruction sets. It introduces an instruction set for a basic computer and describes machine language, assembly language, and the translation process from symbolic to binary code using an assembler.
2. It provides an example assembly language program to subtract two numbers and explains loops in programs using a Fortran example to add 100 numbers.
3. Programming techniques for arithmetic and logic operations like multiplication and double precision addition are demonstrated through examples.
Bca 2nd sem-u-3.1-basic computer programming and micro programmed controlRai University
油
The document discusses basic computer programming and microprogrammed control. It introduces basic programming concepts and their relation to hardware instruction representation. It then provides details on:
1. The instruction set of a basic computer including operations like AND, ADD, LDA, STA, etc.
2. The hierarchy of programming languages from low-level machine language to high-level languages like C++.
3. Details on assembly language including symbolic addressing, memory reference vs non-memory reference instructions, and pseudo instructions.
basic computer programming and micro programmed controlRai University
油
- The document discusses basic computer programming concepts and their relation to hardware representation of instructions. It introduces instruction sets, machine language, assembly language, and the translation process from symbolic to binary code using an assembler.
- The assembler performs two passes: the first generates an address symbol table by assigning memory locations to labels and operands, and the second translates the symbolic code to binary using lookup tables for instructions, operands, and the address symbol table.
- Assembly language allows the use of symbolic names for instructions, addresses, and operands, making programs more human-readable compared to binary or machine language.
Mca i-u-3-basic computer programming and micro programmed controlRai University
油
This document discusses basic computer programming and microprogrammed control. It introduces some basic programming concepts and their relation to hardware representation of instructions. It describes how a program may be dependent or independent of the computer that runs it. It also discusses machine language, assembly language, and the translation process from symbolic code to binary code using an assembler. Examples are provided of assembly language programs for addition and multiplication.
An instruction code consists of an operation code and operand(s) that specify the operation to perform and data to use. Operation codes are binary codes that define operations like addition, subtraction, etc. Early computers stored programs and data in separate memory sections and used a single accumulator register. Modern computers have multiple registers for temporary storage and performing operations faster than using only memory. Computer instructions encode an operation code and operand fields to specify the basic operations to perform on data stored in registers or memory.
The document discusses instruction set architecture (ISA), which is part of computer architecture related to programming. It defines the native data types, instructions, registers, addressing modes, and other low-level aspects of a computer's operation. Well-known ISAs include x86, ARM, MIPS, and RISC. A good ISA lasts through many implementations, supports a variety of uses, and provides convenient functions while permitting efficient implementation. Assembly language is used to program at the level of an ISA's registers, instructions, and execution order.
Self-Compacting Concrete: Composition, Properties, and Applications in Modern...NIT SILCHAR
油
Self-Compacting Concrete (SCC) is a high-performance material that flows under its own weight, eliminating the need for vibration. It offers superior workability, durability, and structural efficiency, making it ideal for complex designs, congested reinforcement, and sustainable construction practices.
Virtual Power plants-Cleantech-RevolutionAshoka Saket
油
VPPs are virtual aggregations of distributed energy resources, such as energy storage, solar panels, and wind turbines, that can be controlled and optimized in real-time to provide grid services.
Industry 4.0: Transforming Modern Manufacturing and BeyondGtxDriver
油
This document explores the fundamental concepts, technologies, and applications of Industry 4.0. Topics include automation, IoT (Internet of Things), smart factories, cyber-physical systems, and the integration of AI and big data analytics in industrial processes. It serves as a comprehensive resource for students, professionals, and enthusiasts eager to delve into the fourth industrial revolution.
PROJECT REPORT ON PASTA MACHINE - KP AUTOMATIONS - PASTA MAKING MACHINE PROJE...yadavchandan322
油
All the materials and content contained in Project report is for educational purpose and reflect the views of the industry which are drawn from various research on pasta machine. PM FME- Detailed Project Report of Multigrain Pasta Making Unit. 3. 1. PROJECT ... A pasta extruder is a machine that makes pasta dough through dies to.The process is quite simple and requires not much skilled labour. The machine itself is high technology and provides the manufacturers to produce noodles with. In this article, you will be able to get all the detail about a pasta-making business unit in India and the financial status of this business as well.ENGINEERS INDIA RESEARCH INSTITUTE - Service Provider of Project Report on PASTA PRODUCTION PLANT (SHORT PASTA) [CODE NO. 1632] based in Delhi, India.
Macaroni Machines are used to produce pasta from the raw material. With ... The views expressed in this Project Report are advisory in nature. SAMADHAN.
In this PDF document, the importance of engineering models in successful project execution is discussed. It explains how these models enhance visualization, planning, and communication. Engineering models help identify potential issues early, reducing risks and costs. Ultimately, they improve collaboration and client satisfaction by providing a clear representation of the project.
Welcome to the April 2025 edition of WIPAC Monthly, the magazine brought to you by the LInkedIn Group Water Industry Process Automation & Control.
In this month's issue, along with all of the industries news we have a number of great articles for your edification
The first article is my annual piece looking behind the storm overflow numbers that are published each year to go into a bit more depth and look at what the numbers are actually saying.
The second article is a taster of what people will be seeing at the SWAN Annual Conference next month in Berlin and looks at the use of fibre-optic cable for leak detection and how its a technology we should be using more of
The third article, by Rob Stevens, looks at what the options are for the Continuous Water Quality Monitoring that the English Water Companies will be installing over the next year and the need to ensure that we install the right technology from the start.
Hope you enjoy the current edition,
Oliver
Intro of Airport Engg..pptx-Definition of airport engineering and airport pla...Priyanka Dange
油
Definition of airport engineering and airport planning, Types of surveys required for airport site, Factors affecting the selection of site for Airport
3. OUTLINE
2.1 Basic Assembler Functions
A simple SIC assembler
Assembler tables and logic
2.2 Machine-Dependent Assembler Features
Instruction formats and addressing modes
Program relocation
2.3 Machine-Independent Assembler Features
2.4 Assembler Design Options
Two-pass
One-pass
Multi-pass
4. 2.1 BASIC ASSEMBLER FUNCTIONS
Figure 2.1 shows an assembler language program
for SIC.
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
8. 2.1 BASIC ASSEMBLER FUNCTIONS
Assembler directives (pseudo-
instructions)
START, END, BYTE, WORD, RESB,
RESW.
These statements are not translated into
machine instructions.
Instead, they provide instructions to the
assembler itself.
9. 2.1 BASIC ASSEMBLER FUNCTIONS
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)
Buffer length is 4096 Bytes
The end of the file is indicated by a zero-length
record
When the end of file is detected, the program
writes EOF on the output device and terminates
by RSUB.
Subroutines (JSUB, RSUB)
RDREC, WRREC
Save link (L) register first before nested jump
10. 2.1.1 A SIMPLE SIC ASSEMBLER
Figure 2.2 shows the generated object code for
each statement.
Loc gives the machine address in Hex.
Assume the program starting at address 1000.
Translation functions
Translate STL to 14.
Translate RETADR to 1033.
Build the machine instructions in the proper
format (,X).
Translate EOF to 454F46.
Write the object program and assembly listing
13. A forward reference
In line number10
1000 FIRST STL RETADR 141033
A reference to a label (RETADR) that is
defined later in the program
Most assemblers make two passes over the
source program
Most assemblers make two passes over source
program.
Pass 1 scans the source for label definitions
and assigns address (Loc).
Pass 2 performs most of the actual translation.
14. Assemblers Functions
Convert mnemonic operation codes to their
machine language equivalents
STL to 14
Convert symbolic operands (referred label)
to their equivalent machine addresses
RETADR to 1033
Build the machine instructions in the proper
format
Convert the data constants to internal
machine representations
Write the object program and the assembly
listing
15. The functions of the two passes assembler.
Pass 1 (define symbol)
Assign addresses to all statements (generate LOC).
Check the correctness of Instruction (check with OP table).
Save the values (address) assigned to all labels into
SYMBOL table for Pass 2.
Perform some processing of assembler directives.
Pass 2
Assemble instructions (op code from OP table, address
from SYMBOL table).
Generate data values defined by BYTE, WORD.
Perform processing of assembler directives not done
during Pass 1.
Write the OP (Fig. 2.3) and the assembly listing (Fig. 2.2).
16. 2.1.2 DATA STRUCTURES in ASSEMBLER
Our simple assembler uses two internal tables: The
OPTAB and SYMTAB.
OPTAB is used to look up mnemonic operation codes
and translate them to their machine language
equivalents.
LDA00, STL14,
SYMTAB is used to store values (addresses) assigned
to labels.
COPY1000, FIRST1000
Location Counter LOCCTR
LOCCTR is a variable for assignment addresses.
LOCCTR is initialized to address specified in START.
When reach a label, the current value of LOCCTR
gives the address to be associated with that label.
17. 2.1.2 ASSEMBLER TABLES AND
LOGIC
The Operation Code Table (OPTAB)
Contain the mnemonic operation & its
machine language equivalents (at least).
Contain instruction format& length.
Pass 1, OPTAB is used to look up and
validate operation codes.
Pass 2, OPTAB is used to translate the
operation codes to machine language.
In SIC/XE, assembler search OPTAB in
Pass 1 to find the instruction length for
incrementing LOCCTR.
Organize as a hash table (static table).
18. 2.1.2 ASSEMBLER TABLES AND LOGIC
The Symbol Table (SYMTAB)
Include the name and value (address) for
each label.
Include flags to indicate error conditions
Contain type, length.
Pass 1, labels are entered into SYMTAB,
along with assigned addresses (from
LOCCTR).
Pass 2, symbols used as operands are
look up in SYMTAB to obtain the
addresses.
Organize as a hash table (static table).
The entries are rarely deleted from table.
19. 2.1.2 ASSEMBLER TABLES AND LOGIC
Pass 1 usually writes an intermediate file.
Contain source statement together with
its assigned address, error indicators.
This file is used as input to Pass 2.
Figure 2.4 shows the two passes of
assembler.
Format with fields LABEL, OPCODE,
and OPERAND.
Denote numeric value with the prefix#.
#[OPERAND]
24. 2.2 MACHINE-DEPENDENT ASSEMBLER
FEATURES
Indirect addressing
Adding the prefix @ to operand (line 70).
Immediate operands
Adding the prefix # to operand (lines 12, 25, 55,
133).
Extended format
Adding the prefix + to OP code (lines 15, 35, 65).
The use of register-register instructions.
Faster and dont require another memory reference.
28. 2.2 MACHINE-DEPENDENT ASSEMBLER
FEATURES
SIC/XE
PC-relative/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 COMPR
larger memory multi-programming (program
allocation)
29. 2.2 MACHINE-DEPENDENT
ASSEMBLER FEATURES
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 disp (address) field
PC-relative: -2048~2047
Base-relative: 0~4095
Format 4: 20-bit address field (absolute
addressing)
30. 2.2.1 INSTRUCTION FORMATS &
ADDRESSING MODES
The START statement
Specifies a beginning address of 0.
Register-register instructions
CLEAR & TIXR, COMPR
Register-memory instructions are using
Program-counter (PC) relative addressing
The program counter is advanced after each
instruction is fetched and before it is executed.
PC will contain the address of the next
instruction.
10 0000 FIRST STL RETADR
17202D
TA -(PC) = disp= 30H 3H= 2D
37. 2.2.2 PROGRAM RELOCATION
Note that no matter where the program is loaded,
RDREC is always is 1036 bytes past the starting
address of the program. This means that we can solve
the relocation problem in the following way,
1. 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.
This is the reason we initialized the location counter
to 0 for the assembly
2. The assembler will also produce the command for
the loader, instructing it to add the beginning address
of the program to address the field in the JSUB
instruction at the load time.
38. 2.2.2 PROGRAM RELOCATION
Modification record (direct addressing)
1 M
2-7 Starting location of the address field to be modified,
relative to the beginning of the program.
8-9 Length of the address field to be modified, in half
bytes.
M^000007^05
39. 2.3 MACHINE-INDEPENDENT
ASSEMBLER FEATURES
Write the value of a constant operand as a
part of the instruction that uses it (Fig. 2.9).
A literal is identified with the prefix =
45 001AENDFIL LDA=CEOF
032010
Specifies a 3-byte operand whose value is
the character string EOF.
215 1062 WLOOP TD =X05
E32011
Specifies a 1-byte literal with the
hexadecimal value 05
43. 2.3.1 LITERALS
The difference between literal operands and
immediate operands
=, #
Immediate addressing, the operand value is
assembled as part of the machine instruction, no
memory reference.
With a literal, the assembler generates the specified
value as a constant at some other memory location.
The address of this generated constant is used as the
TA for the machine instruction, using PC-relative or
base-relative addressing with memory reference.
Literal pools
At the end of the program (Fig. 2.10).
Assembler directive LTORG, it creates a literal pool
that contains all of the literal operands used since
the previous LTORG.
47. 2.3.1 Literals
When to use LTORG
The literal operand would be placed too far away
from the instruction referencing.
Cannot use PC-relative addressing or Base-
relative addressing to generate Object Program.
Most assemblers recognize duplicate
literals.
By comparison of the character strings defining
them.
=CEOF and =X454F46
48. 2.3.1 LITERALS
Allow literals that refer to the current value of
the location counter.
Such literals are sometimes useful for
loading base registers.
LDB =*
; register B=beginning address of
statement=current LOCBASE*
; for base relative addressing
If a literal =*appeared on line 13 or 55
Specify an operand with value 0003 (Loc) or
0020 (Loc).
49. 2.3.1 LITERALS
Literal table (LITTAB)
Contains the literal name (=CEOF), the
operand value (454F46) and length (3),
and the address (002D).
Organized as a hash table.
Pass 1, the assembler creates or searches
LITTAB for the specified literal name.
Pass 1 encounters a LTORG statement or
the end of the program, the assembler
makes a scan of the literal table.
Pass 2, the operand address for use in
generating OC is obtained by searching
LITTAB.
50. 2.3.2 SYMBOL-DEFINING
STATEMENTS
Allow the programmer to define symbols and
specify their values.
Assembler directive EQU.
Improved readability in place of numeric values.
+LDT #4096
MAXLEN EQU BUFEND-BUFFER
(4096)
+LDT #MAXLEN
Use EQU in defining mnemonic names for
registers.
Registers A, X, L can be used by numbers 0, 1,
2.
51. 2.3.2 SYMBOL-DEFINING STATEMENTS
The standard names reflect the usage of the
registers.
BASE EQUR1
COUNT EQUR2
INDEX EQUR3
Assembler directive ORG
Use to indirectly assign values to symbols.
ORG value
The assembler resets its LOCCTR to the
specified value.
ORG can be useful in label definition.
52. 2.3.2 SYMBOL-DEFINING STATEMENTS
The location counter is used to control
assignment of storage in the object program
In most cases, altering its value would
result in an incorrect assembly.
ORG is used
http://home.educities.edu.tw/wanker742126
/index.html
SYMBOL is 6-byte, VALUE is 3-byte,
and FLAGS is 2-byte.
53. 2.3.2 SYMBOL-DEFINING STATEMENTS
STAB SYMBOL VALUE FLAGS
(100 entries) 6 3 2
LOC
1000 STAB RESB 1100
1000 SYMBOL EQU STAB +0
1006 VALUE EQU STAB +6
1009 FLAGS EQU STAB +9
Use LDA VALUE, X to fetch the VALUE field form the
table entry indicated by the contents of register X.
54. 2.3.2 SYMBOL-DEFINING STATEMENTS
STAB SYMBOL VALUE FLAGS
(100 entries) 6 3 2
1000 STAB RESB 1100
ORG STAB
1000 SYMBOL RESB 6
1006 VALUE RESW 1
1009 FLAGS RESB 2
ORGSTAB+ 1100
55. 2.3.2 SYMBOL-DEFINING STATEMENTS
All terms used to specify the value of the
new symbol ---must have been defined
previously in the program.
...
BETA EQUALPHA
ALPHA RESW 1
...
Need 2 passes
56. 2.3.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
57. 2.3.3 EXPRESSIONS
Allow arithmetic expressions formed
Using the operators +, -, , /.
Division is usually defined to produce an integer
result.
Expression may be constants, user-defined symbols,
or special terms.
106 1036 BUFEND EQU *
Gives BUFEND a value that is the address of the next
byte after the buffer area.
Absolute expressions or relative expressions
A relative term or expression represents some value
(S+r), S: starting address, r: the relative value.
58. 2.3.3 EXPRESSIONS
107 1000 MAXLEN EQU
BUFEND-BUFFER
Both BUFEND and BUFFER are relative terms.
The expression represents absolute value: the
difference between the two addresses.
Loc =1000 (Hex)
The value that is associated with the symbol that
appears in the source statement.
BUFEND+BUFFER, 100-BUFFER,
3*BUFFER represent neither absolute values
nor locations.
Symbol tables entries
59. 2.3.4 PROGRAM BLOCKS
The source program logically contained main,
subroutines, data areas.
In a single block of object code.
More flexible (Different blocks)
Generate machine instructions (codes) and
data in a different order from the
corresponding source statements.
Program blocks
Refer to segments of code that are rearranged
within a single object program unit.
Control sections
Refer to segments of code that are translated
into independent object program units.
60. 2.3.4 PROGRAM BLOCKS
Three blocks, Figure 2.11
Default (USE), CDATA (USE CDATA),
CBLKS (USE CBLKS).
Assembler directive USE
Indicates which portions of the source
program blocks.
At the beginning of the program, statements
are assumed to be part of the default block.
Lines 92, 103, 123, 183, 208, 252.
Each program block may contain several
separate segments.
The assembler will rearrange these segments
to gather together the pieces of each block.
64. 2.3.4 PROGRAM BLOCKS
Pass 1, Figure 2.12
The block number is started form 0.
A separate location counter for each program block.
The location counter for a block is initialized to 0
when the block is first begun.
Assign each block a starting address in the object
program (location 0).
Labels, block name or block number, relative addr.
Working table is generated
Block name Block number Address End Length
Default 0 0000 0065
0066(0~0065)
CDATA 1 0066 0070 000B
(0~000A)
CBLKS 2 0071 1070 1000
(0~0FFF)
68. 2.3.4 PROGRAM BLOCKS
Pass 2, Figure 2.12
The assembler needs the address for each symbol
relative to the start of the object program.
Loc shows the relative address and block number.
Notice that the value of the symbol MAXLEN (line 70)
is shown without a block number.
20 0006 0 LDA LENGTH
032060
0003(CDATA) +0066 =0069 =TA
using program-counter relative addressing
TA -(PC) =0069-0009 =0060 =disp
69. 2.3.4 PROGRAM BLOCKS
Separation of the program into blocks.
Because the large buffer (CBLKS) is moved to the
end of the object program.
No longer need extended format, base register, simply
a LTORG statement.
No need Modification records.
Improve program readability.
Figure 2.13
Reflect the starting address of the block as well as the
relative location of the code within the block.
Figure 2.14
Loader simply loads the object code from each record
at the dictated.
CDATA(1) & CBLKS(1) are not actually present in
OP.
71. Figure 2.14 Program blocks from fig 2.11 traced through the assembly
and loading processes
72. 2.3.5 CONTROL SECTIONS & PROGRAM
LINKING
Control section
Handling of programs that consist of multiple
control sections.
Each control section is a part of the program.
Can be assembled, loaded and relocated
independently.
Different 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.
More Flexibility then the previous.
Linking control sections together.
73. 2.3.5 CONTROL SECTIONS & PROGRAM
LINKING
External references (external symbol references)
Instructions in one control section might need to refer
to instructions or data located in another section.
Figure 2.15, multiple control sections.
Three sections, main COPY, RDREC, WRREC.
Assembler directive CSECT.
Assembler directives EXTDEF and EXTREF for
external symbols.
The order of symbols is not significant.
COPY START 0
EXTDEF BUFFER,
BUFEND, LENGTH
EXTREF RDREC,
WRREC (symbol name)
77. 2.3.5 CONTROL SECTIONS & PROGRAM
LINKING
Figure 2.16, the generated object code.
15 0003 CLOOP +JSUB
RDREC 4B100000
160 0017 +STCH BUFFER,X
57900000
The LOC of all control section is started form 0
RDREC is an external reference.
The assembler has no idea where the control section containing
RDREC will be loaded, so it cannot assemble the address.
The proper address to be inserted at load time.
Must use extended format instruction for external reference (M
records are needed).
190 0028 MAXLEN WORD BUFEND-
BUFFER
An expression involving two external references.
81. 2.3.5 CONTROL SECTIONS & PROGRAM
LINKING
The loader will add to this data area with the
address of BUFEND and subtract from it the
address of BUFFER. (COPY and RDREC for
MAXLEN)
Line 190 and 107, in 107, the symbols BUFEND
and BUFFER are defined in the same section.
The assembler must remember in which control
section a symbol is defined.
The assembler allows the same symbol to be used in
different control sections, lines 107 and 190.
Figure 2.17, two new records.
Defined record for EXTDEF, relative address.
Refer record for EXTREF.
83. 2.3.5 CONTROL SECTIONS & PROGRAM
LINKING
Modification record
M
Starting address of the field to be modified,
relative to the beginning of the control section
(Hex).
Length of the field to be modified, in half-bytes.
Modification flag(+ or -).
External symbol.
M^000004^05+RDREC
M^000028^06+BUFEND
M^000028^06-BUFFER
Use Figure 2.8 for program relocation.
86. 2.4 ASSEMBLER DESIGN OPTIONS
2.4.1 TWO-PASS ASSEMBLER
Most assemblers
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.
87. 2.4.2 ONE-PASS ASSEMBLERS
Eliminate forward references
Data items are defined before they are
referenced.
But, forward references to labels on
instructions cannot be eliminated as easily.
Prohibit forward references to labels.
Two types of one-pass assembler. (Fig. 2.18)
One type produces object code directly in
memory for immediate execution.
The other type produces the usual kind of
object program for later execution.
91. 2.4.2 ONE-PASS ASSEMBLERS
Load-and-go one-pass assembler
The assembler avoids the overhead of writing the
object program out and reading it back in.
The object program is produced in memory, the
handling of forward references becomes less
difficult.
Figure 2.19(a), shows the SYMTAB after scanning
line 40 of the program in Figure 2.18.
Since RDREC was not yet defined, the instruction
was assembled with no value assigned as the
operand address (denote by ----).
92. Figure 2.19(a) Object code in memory and symbol table entries for the
program in fig 2.18 after scanning line 40
93. Figure 2.19(b) Object code in memory and symbol table entries for the
program in fig 2.18 after scanning line 150
94. 2.4.2 ONE-PASS ASSEMBLERS
Load-and-go one-pass assembler
RDREC was then entered into SYMTAB as an
undefined symbol, the address of the operand
field of the instruction (2013) was inserted.
Figure 2.19(b), when the symbol ENDFIL was
defined (line 45), the assembler placed its
value in the SYMTAB entry; it then inserted
this value into the instruction operand field
(201C).
At the end of the program, all symbols must
be defined without any * in SYMTAB.
For a load-and-go assembler, the actual
address must be known at .
95. 2.4.2 ONE-PASS ASSEMBLERS
Another one-pass assembler by generating OP
Generate another Text record with correct
operand address.
When the program is loaded, this address will be
inserted into the instruction by the action of the
loader.
Figure 2.20, the operand addresses for the
instructions on lines 15, 30, and 35 have been
generated as 0000.
When the definition of ENDFIL is encountered
on line 45, the third Text record is generated, the
value 2024 is to be loaded at location 201C.
The loader completes forward references.
96. Figure 2.20 Object Program for one-pass assembler for Program in fig 2.18
97. 2.4.2 ONE-PASS ASSEMBLERS
In this section, simple one-pass
assemblers handled absolute programs
(SIC example).
98. 2.4.3 MULTI-PASS ASSEMBLERS
Use EQU, any symbol used on the RHS be defined previously in the
source.
LOC Pass1 2 3
1000 LDA #0 1000 1000 1000
1003 ALPHA EQU BETA ???? ???? 1003
1003 BETA EQU DELTA ???? 1003 1003
1003 DELTA RESW1 1003 1003 1003
Need 3 passes!
Figure 2.21, multi-pass assembler
(a)