SP Chapter 2
Download
Report
Transcript SP Chapter 2
SYSTEMS PROGRAMMING
CHAPTER 2
PROGRAMMING IN ASSEMBLY
LANGUAGE
Er. Bharadwaj Choudhury
HIGH LEVEL LANGUAGE CONSTRUCTS
Constants: Numerical, string or other quantities
whose unchanging actual values are known when
the program is written
Variables: Name given to a value. The value may
change when the program is executed
Reserve words: if, then, else, return, float, real
Procedures: Functions or subroutines, which may
or may not have arguments and may or may not
return values
ASSEMBLY LEVEL LANGUAGE CONSTRUCTS
Computer’s memory: A sequence of bytes, words,
blocks. Each computer have a fixed amount of
working memory
CPU’s registers: Each computer have a set of
working as well as special registers
Instructions: Each assembly language must have a
set of instructions based on the microprocessor used
in the computer, along with additional instructions
available in the assembler
Location Counter: Its task is to keep track of the
current location of the instruction being processed
relative to the beginning of the next group of
instructions
HOW TO RUN ASSEMBLY PROGRAMS ?
Step 1 : Enter the assembly language program
through a text editor or an inbuilt editor of the
assembler. The inbuilt editor is known as work
bench program
Step 2 : The assembly program file or the source
file is a ASCII file having the extension .ASM
Step 3 : The assembler accepts this source file
and converts it into an object file .OBJ in machine
language. The linker converts such object file(s)
into some executable form, such as .EXE, .BIN, etc
through different passes. Sometimes the extension
of inclusion file is .INC
SOME COMMERCIAL ASSEMBLERS
Borland turbo assembler (TASM) : This is a MS-DOS
based assembler. Suppose MYTASM.ASM is a source
program in TASM syntax, then the command
C:\TASM>TASM MYTASM assemblers the source
program and produces MYTASM.OBJ, provided the
assembly program is correct.
Microsoft assembler (MASM) : The name has
traditionally been referred to the Microsoft Macro
assembler. The software for MASM contains an
executable program file ML.EXE. Here, ML assembles
and links one or more assembly language source
program files, producing a .OBJ file and an executable
.EXE file
SOME COMMERCIAL ASSEMBLERS
MicroAsm : It is a windows-based Integrated
Development Environment(IDE) for the assembly
programmer. This includes a source editor and an
Intel 8086 assembler with easy syntax
Netwide Assembler(NASM) : It is a 80x86 processorbased assembler. It supports a wide variety of object
file formats such as a.out, ELF, COFF, Win32, etc.
Simple binary files are also generated by this
assembler. This assembler works under different
operating environments such as MS-DOS, WINDOWS
and LINUX
ASSEMBLER TYPES
One pass assemblers
Two pass assemblers
One and half pass assemblers
Multi-pass assemblers
ASSEMBLY LANGUAGE FORMATS
Different assembly language instruction formats
differ on details like pseudo operations used, length
of identifiers, formats of a constant, etc
However, most assembly language instructions has 2
mandatory and 2 optional fields.
[Label]
Opcode
Operand
[Comments]
Label : a symbol of the assembly program. Can store
maximum of 6-8 characters
Opcode : contains mnemonic code for machine or
pseudo operations
Operand : specifies 0 or more operands, separated by
commas
Comments : high-level description of the program
HOW ASSEMBLY PROGRAMS ARE EXECUTED?
Consider the assembly program shown below [to
be executed in Intel 8086 machine]:
Stm. No.
Label
1
For your
understanding
Opcode
Operand
0RG
100h
2
NUM1
DW
20
3
NUM2
DW
13
4
SUM
DW
?
5
MOV
AX, NUM1
6
ADD
AX, NUM2
7
MOV
SUM,AX
8
END
Red color indicates machine operations, Blue color
indicates pseudo operations
MOTAB & POTAB
Mnemonic
Opcode
Length(byte)
MOV AX,memo
B8
3
ADD
AX,memo
02
3
MOV
memo,AX
A2
3
Pseudo operation
Task
ORG
Start the program and initialize LC with the value
of operand, else initialize it to 0
DW
Define the constant and word storage requirement.
Update LC value
END
End indicates the end of program. Also, enables
allocation of addresses for the unallocated literals in
the literal table. Control send to the next pass
PASS 1 OF THE ASSEMBLY PROCESS
Stm. No. 1 : LC ← 100h
Stm. No. 2 : NUM1 in symbol table with value 100h
LC ← 100h + 2h = 102h
Stm. No. 3 : NUM2 in symbol table with value 102h
LC ← 102h + 2h = 104h
Stm. No. 4 : SUM in symbol table with value 104h
LC ← 104h + 2h = 106h
Stm. No. 5: LC ← LC + 3h =109h
Stm. No. 6 : LC ← LC + 3h =10Ch
Stm. No. 7 : LC ← LC + 3h =10Fh
Stm. No. 8: Opcode is END, indicating end of program
PASS 2 OF THE ASSEMBLY PROCESS
Stm. No. 1 : Allocate the LC ← 100h
Stm. No. 2-4 : Already processed in pass 1 and symbols
stored in symbol table
Stm. No. 5: Machine code= B8 + Address of NUM1 = B80100
Stm. No. 6 : Machine code= 02 + Address of NUM2 = 020102
Stm. No. 7 : Machine code= A2 + Address of SUM = A20104
Stm. No. 8: Opcode is END, indicating termination of
program
SUMMARY : THE TWO PASSES
Pass I is to construct a symbol table and a literal
table using the MOTab and POTab
Pass I keeps a copy of the user’s program for Pass II
An intermediate mnemonic program is output of
Pass I
The task of Pass II is to generate the object code from
the copy of the user’s program in Pass I
Pass II provides the linker & loader with the
necessary information for linking object code with
link libraries and ultimately loading the executable
code in memory for execution
PRACTICE PROBLEM
Generate symbol table (Pass 1) and machine
code(Pass 2) for the assembly program below running
on a SIC machine [Note: SIC is a 24-bit machine]
Stm. No.
Label
Opcode
Operand
1
SIC
START
02
2
LDA
NUM1
3
ADD
NUM2
4
STA
SUM
5
NUM1
WORD
20
6
NUM2
WORD
13
7
SUM
WORD
0
8
END
Red color indicates machine operations, Blue color indicates pseudo
operations
MOTAB & POTAB FOR PRACTICE PROBLEM
Mnemonic
Opcode
Length(byte)
LDA m
00
3
ADD m
18
3
STA m
0C
3
Pseudo operation
Task
START
Start the program and initialize LC with the value
of operand, else initialize it to 0
WORD
Define the constant and storage requirement.
Update LC value
END
End indicates the end of program. Also, enables
allocation of addresses for the unallocated literals in
the literal table. Control send to the next pass
THANK YOU