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

Computer Organization &

Assembly Languages
Introduction to Assembly Language
Chapter 1
Assembly Language
Sometimes referred to
as assembly or ASL, assembly language is a
low-levelprogramming language used to
interface with computer hardware. Assembly
language uses structured commands as
substitutions for numbers allowing humans to
read the code easier than looking at binary.
Basic Components in Assembly
Language
Instruction, Directive, Label, and Comment

;NUMOFF.ASM: Turn NUM-LOCK indicator off.
.MODEL SMALL
.STACK
.CODE
.STARTUP
MOV AX,40H ;set AX to 0040H
D1: MOV DS,AX ;load data segment with 0040H
MOV SI,17H ;load SI with 0017H
AND BYTE PTR [SI],0DFH ;clear NUM-LOCK bit
.EXIT
END
Comments
Assembly directive
Instructions
Assembly directive
Label
Assembler
A computer will not understand any program written in a language, other
than its machine language. The programs written in other languages must
be translated into the machine language. Such translation is performed
with the help of software. A program which translates an assembly
language program into a machine language program is called an
assembler. If an assembler which runs on a computer and produces the
machine codes for the same computer then it is called self assembler or
resident assembler. If an assembler that runs on a computer and produces
the machine codes for other computer then it is called Cross Assembler.
Assemblers are further divided into two types: One Pass Assembler and
Two Pass Assembler. One pass assembler is the assembler which assigns
the memory addresses to the variables and translates the source code into
machine code in the first pass simultaneously. A Two Pass Assembler is the
assembler which reads the source code twice. In the first pass, it reads all
the variables and assigns them memory addresses. In the second pass, it
reads the source code and translates the code into object code.

Linker & Loader
Linker
A linker or link editor is a computer program that
takes one or more object files generated by
a compiler and combines them into a
single executable program.
Loader
A Loader is a program which accepts the object
program as input, makes them executable by the
computer and initiates execution.


Assembler
Design and Implementation of
Assembler
Source
Program
Assembler
Object
Code
Loader
Executable
Code
Linker

Advantages & Disadvantages of Assembly Language
Advantages Assembly Language:
1.The symbolic programming of Assembly Language is easier
to understand and saves a lot of time and effort of the
programmer.
2.It is easier to correct errors and modify program
instructions.
3.Assembly Language has the same efficiency of execution as
the machine level language. Because this is one-to-one
translator between assembly language program and its
corresponding machine language program.
Disadvantages Assembly Language:
1.One of the major disadvantages is that assembly language is
machine dependent. A program written for one computer
might not run in other computers with different hardware
configuration.


Functions of a Basic Assembler
Convert mnemonic operation codes to
machine language equivalents
Convert symbolic operands to machine
addresses (pass 1)
Build machine instructions
Convert data constants to internal
representations
Write the object program and assembly listing
files

1/2002 JNM 11
Basic Elements of Assembly Language

Integer Constants

If no radix is given, the integer is assumed to be
decimal.
Int 21h Int 21
A hexadecimal constant beginning with a letter
must have a leading 0
Mov ax, 0A3C9h
1/2002 JNM 12
Basic Elements of Assembly Language
Character and String Constants

A single or a string of characters

Enclosed in either single or double quotes

Embedded quotes are permitted
An embedded quote within quotation marks
1/2002 JNM 13
Basic Elements of Assembly Language
Reserved Words

Instruction Mnemonics
Directives
Attributes (BYTE or WORD)
Operators
Predefined Symbols

A complete list of MASM reserved words
are in Appendix D (4
th
Edition)
1/2002 JNM 14
Names
(Identifiers)
Used to identify variables, constants, procedures, or
code labels.
Max 247 characters
Not case-sensitive
First character can be a letter, _, $, @
Subsequent characters may also be digits.
Cannot use an assembler reserved word.

Should make identifier names descriptive and easy to
understand
Avoid @ as first character.
1/2002 JNM 15
Examples
Mystring db this is a string,0
Mystring is the name
Length = $ - mystring
Length is a reserved word (can not use)
Loop1:
Loop1 is the label for a loop instruction

Note difference between data names and code
labels
in the data section (no colon after the name)
In the code section (colon after the name)
1/2002 JNM 16
Assembly Language
Statements

Generally fall into two classes:
Instructions - Executable Statements
Directives statements that provide
information to the assembler
about how to generate
executable code


1/2002 JNM 17
General Format of a Statement
[name] [mnemonic] [operands] [;comment]

Statements are free-form they can be
written in any column with any number of
spaces between each operand
Blank lines are permitted
Must be written on a single line and not
pass column 128 (use / for continuation of
line)
1/2002 JNM 18
Directives
A statement that is recognized and acted upon by
the assembler as the programs source code is
being assembled.
Used for defining logical segments, choosing a
memory module, defining variables, creating
procedures,
.data (directive to identify the area of a program
that contains the data variables)
Count db 50 (db is a directive that tells the
assembler to create storage for a byte named
count and initialize it to 50.
1/2002 JNM 19
Standard Assembler Directives
Directive Description
title Title of the listing file
.model Specify the program's memory model
.stack Set the size of the stack segment
.data Mark the beginning of the data segment
.code Mark the beginning of the code segment
proc Begin procedure
endp End of procedure
end End of program assembly
1/2002 JNM 20
Instructions
A statement that is executed by the processor
at runtime
Fall into five general categories
Data transfer (mov ax, 5)
Arithmetic (add ax, 20)
Transfer of control (call MySub)
Logical (Jz next1)
Input/output (In al, 20)
1/2002 JNM 21
General Format of an Instruction

Label (optional)
Instruction mnemonic (required)
Operand(s) (usually required)
Comment (optional)

A source code line may have only a label or
comment.
Label: Mnemonic ;Comment Operand(s)
1/2002 JNM 22
Labels
An identifier that acts as a place marker for either instructions or
data
Used to transfer program execution to a labeled instruction
Act as place markers
marks the address (offset) of code and data
Data label
must be unique
example: count DWORD 100 (not followed by colon)
Code label
target of jump and loop instructions
example: target: (followed by colon)
Mov ax, bx
.
jmp target


1/2002 JNM 23
Instruction Mnemonics
A short word that identifies the operation
carried out by an instruction
Mov assign one value to another
Add add two values
Sub subtract one value from another
Call call a procedure
1/2002 JNM 24
Formatting of Instructions and
Number of Operands Needed
Mnemonic destination operand, source operand
HLT ; zero operands
INC AX ; one operand
MOV AX, 100 ; two operands
SHLD DX, AX, 4 ; three operands
Different instructions use different numbers of operands as shown above.
No operands
stc ; set carry flag
One operand
inc eax ; increment register eax
call Clrscr ; call procedure Clrscr
jmp L1 ; jump to instruction with label L1
Two operands
add ebx, ecx ; register ebx = ebx + ecx
sub var1, 25 ; memory variable var1 = var1 - 25
Three operands
imul eax,ebx,5 ; register eax = ebx * 5
Instruction Examples
1/2002 JNM 26
Operands
A memory operand is specified by either the name of
a variable or a register that holds the address of a
variable.
A variable name implies the address of the variable;
96 constant operand
2 + 4 constant expression operand
Eax register operand
Count variable operand
1/2002 JNM 27
Comments
Comments are good!
explain the program's purpose
when it was written, and by whoms
revision information
tricky coding techniques
application-specific explanations
Single line comments begin with a semicolon
; Words after the semicolon are comments.
; Comments may begin anywhere on a line
Multi-line comments
Block comments begin with the comment directive a user-specified
symbol
COMMENT &
This line is a comment.
So is this line. The ampersand symbol is personal choice.
&

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