No Slide Title

Download Report

Transcript No Slide Title

Lecture 1
Chapter 4 –Requirements for coding in Assembly
Language
Chapter Outline
Assembly Language Features
Simplified segment Directive
Defining Types of data
Equate Directive
1
Assembly Language Features
• Program comments
•Reserved words
•Identifiers
•Statements
•Directives
4
Program Comment
• The comment field of a statement is used by the programmer to say
something about what the statement does.
• A semicolon marks the beginning of this field, and the assembler
ignores anything typed after the semicolon.
• It is almost impossible to understand an assembly language program
without comments.
• Good programming practice dictates a comment on almost every
line.
13
Program Comment
• Examples:
•MOV CX, 0
; CX counts terms, initially 0
• Thus, comments is used to put the instruction into the context of the
program.
• It is permissible to make an entire line a comment, and to use them
to create space in a program.
14
Reserved words
Instructions, such as MOV and ADD
Directives, such as END that used to provide
information to the assembler
Operators
Predefined symbols, such as @Data, which return
information to your program during the assembly
Identifiers
Two types of Identifiers : name and label
1. Name refers to the address of a data items
ex: COUNTER ,SUM,ID
2. Label refers to the address of an
instruction,procedure,or segment
ex: MAIN
Identifiers
•Can be from 1 to 31 characters long (not case sensitive).
• May consist of letters, digits, and the special characters
? . @ _ $ % (Thus, embedded blanks are not allowed).
•Names may not begin with a digit.
•If a dot is used, it must be the first character.
Identifiers
• Examples:
• COUNTER1
• 2abc
• @CHARACTER
• A45. 28
• TWO WORDS
• STD_NUM
• .TEST
• YOU&ME
Begins with a digit
. Not first character
Contains a blank
Contains an illegal character
8
Statements
• Both instructions and directives have up to four fields:
[identifier ] operation
[operand(s)] [comment]
• [Name Fields are optional]
• At least one blank or tab character must separate the fields.
• The fields do not have to be aligned in a particular column, but they
must appear in the above order.
• An example of an instruction:
START:
MOV CX,5 ; initialize counter
• An example of an assembler directive:
MAIN
PROC
6
Directives
•SEGMENT Directive
Data Segment
Stack segment
Code Segment
•END Directive
ex: ENDP directive ends a procedure
ex: END directive ends the entire program and appears as the last
statement
9
SIMPLIFIED SEGMENT Directives
•SEGMENT Directive
Data Segment
Stack segment
Code Segment
•END Directive
ex: ENDP directive ends a procedure
ex: END directive ends the entire program and appears as the last
statment
9
Program Structure - Memory Models
• The size of code and data a program can have is determined by
specifying a memory model using the .MODEL directive.
• Syntax:
.MODEL
memory_model
Model
SMALL
MEDIUM
COMPACT
LARGE
HUGE
Description
code in 1 segment
data in 1 segment
code > 1 segment
data in 1 segment
code in 1 segment
data > 1 segment
code > 1 segment
data > 1 segment
no array larger than 64k bytes
code > 1 segment
data > 1 segment
arrays may be larger than 64k bytes
Program Structure - Memory Models
• The appropriate model is SMALL, unless there is a lot of code or
data.
• .MODEL directive should come before segment definitions.
•A segment is 216 (64 k)
Program Structure - Stack Segment
• The purpose of the stack segment declaration is to set aside a block
of memory (the stack area) to store the stack.
• The stack area should be big enough to contain the stack at its
maximum size.
• Syntax:
.STACK
• Example:
.STACK
size
; where size is an optional number that specifies
; the stack area size in bytes.
100H ; sets aside 100H bytes for the stack area.
; (reasonable size for most applications).
• If size is omitted, 1KB is set aside for the stack area.
Program Structure - Data Segment
• A program’s data segment contains all the variable definitions.
• Constant definitions are often made here as well. (they may be
placed elsewhere in the program since no memory allocation is
involved).
• To declare a data segment, we use the directive .DATA, followed by
variable and constant declarations.
• Example:
.DATA
WORD1
MSG
DW 2
DB ‘this is a message’
Program Structure - Code Segment
•The code segment contains a program’s instructions.
• Syntax:
.CODE
name ; where name is an optional name of segment.
• There is no need for a name in a SMALL program, However, the
assembler will generate an error.
• Inside a code segment, instructions are organized as procedures.
Program Structure - Code Segment
• The simplest procedure definition is:
name PROC
; name: is the name of the procedure.
; body of the procedure ; PROC & ENDP: are pseudo-ops that
name ENDP
;
delineate the procedure
• Example of a code segment definition:
.CODE
MAIN PROC
; main procedure instructions
MAIN ENDP
; other procedures go here
Program Structure A General Form of a .SMALL model program
.MODEL
SMALL
.STACK
100H
.DATA
; data definitions go here
.CODE
MAIN
PROC
; instructions go here
MAIN
ENDP
; other procedures go here
END
MAIN